iOS SDK 开发指南
文档版本号:20240108-114
变更说明:
SDK版本号 | 日期 | 更新内容 |
---|---|---|
master-6.14 | 2024/01/08 | 新增功能: 1、新增X86支持按键指令通道接口 2、新增X86支持pc鼠标模式 |
master-6.8 | 2023/04/23 | 新增功能: 1、新增获取可下载文件列表接口 2、新增文件下载接口 3、新增取消文件下载接口 4、新增更新下载列表接口 5、新增获取正在下载任务接口 6、新增图片上传接口 7、新增取消图片上传接口 8、云游戏状态变化场景新增存储状态变化场景 9、新增照相机通知回调 10、新增文件状态变化回调 |
master-5.37 | 2022/10/23 | 新增功能: 1、preapre方法新增CloudGameOptionKeyResolutionId参数,支持指定分辨率起播。 2、preapre方法新增CloudGameOptionKeyClearCachedCID参数,支持申请游戏前,清除本地缓存CID |
master-5.28 | 2022/4/23 | 新增功能: 1、preapre方法新增CloudGameOptionKeyUserDeviceInfo参数,支持设置设备信息 |
master-5.26 | 2022/3/23 | 新增功能: 1、preapre方法新增CloudGameOptionKeyAccessKeyId参数,支持指定accessKeyId 2、prepare方法新增CloudGameOptionKeyClientISP、CloudGameOptionKeyClientProvince、CloudGameOptionKeyClientCity参数,支持指定ISP、省份、城市 3、路由节点查询接口,增加扩展方法,支持指定accessKeyId 4、存档进度查询接口,增加扩展方法,支持指定accessKeyId 5、查询游戏是否存在存档接口,增加扩展方法,支持指定accessKeyId 6、游戏维度清晰查询接口,增加扩展方法,支持指定accessKeyId 7、检测未释放游戏实例接口,新增CloudGameOptionKeyAccessKeyId参数,支持指定accessKeyId 8、根据cid释放实例接口,增加扩展方法,支持指定accessKeyId 9、获取控制权接口,参数调整优化 10、测速接口,增加扩展方法,支持指定accessKeyId |
master-5.24.1 | 2022/2/22 | 新增功能: 1、优化网络连接。SDK内部在网络上出现异常时实现内部重连 |
master-5.17 | 2021/11/15 | 新增功能: 1、自定义画面位置尺寸,参见CloudGameOptionKeyShowPoint、CloudGameOptionKeyShowSize参数 |
1 产品简介
欢迎使用海马云游戏服务,本文档主要介绍海马云游戏iOS端SDK的接入流程及提供支持的API详情,开发者通过接入海马云游戏SDK,可以实现云游戏的播放、停止、状态回调等各类控制操作和数据交互,在海马云游戏端到端全栈云服务能力基础上,为用户带来顺畅的云游戏体验。
在开始接入SDK前,请确认已经拥有海马云游戏平台接入方ID、创建了渠道号,并已经完成了在海马云游戏平台上传游戏包等相关准备工作。
2 集成 SDK
云游戏SDK为HMCloudPlayerCore.framework,集成的依赖库为HMWebRTC.framework,HaiMaSDK_Bundle_iOS.bundle为x86游戏资源文件。
集成条件:
- 系统支持条件为iOS 9.0及以上。
- SDK接入后需使用真机运行,不支持模拟器。
- 请使用自己的开发者账号和bundleid到真机演示SDK demo。
- 在APP的info.plist添加App Transport Security Settings→Allow Arbitrary Loads→YES 。
- SDK支持webrtc流,请在自己的应用中增加麦克风、照相机权限,info.plist 添加Privacy→Camera Usage Description、Privacy→Microphone Usage Description。
- 建议客户端申请云游戏SDK的参数从自己的服务器端动态获取。
2.1 创建 iOS 项目
- 打开Xcode并点击Create a new Xcode project。
- 选择项目类型为Single View App,并点击Next。
- 输入项目信息,如项目名称、开发团队信息、组织名称和语言,并点击Next。
- 选择项目存储路径,并点击Create 。
- 将iOS设备连接至电脑。
- 进入TARGETS→Project Name→General→Signing菜单,选择Automatically manage signing,并在弹出菜单中点击Enable Automatic。
2.2 下载集成 SDK
- 前往SDK下载页面,获取最新版的海马云SDK,然后解压出HMCloudPlayerCore.framework,HMWebRTC.framework。
- 将HMCloudPlayerCore.framework(不要修改SDK名字)复制到项目文件夹下。
- HMWebRTC为webrtc流依赖库,将HMWebRTC.framework复制项目文件夹下。
- 打开Xcode(以Xcode 11.0为例),进入TARGETS→Project Name→General→Frameworks, Libraries,and Embedded Content菜单,点击+,再点击Add Other添加HMCloudPlayerCore.framework HMWebRTC.framework。添加完成后,项目会自动链接其他系统库。 为保证动态库的签名和APP的签名一致,你需要将动态库的Embed属性设置为Embed & Sign。
3 快速开始
3.1 导入头文件
#import <HMCloudPlayerCore/HMCloudPlayer.h>
3.2 创建单例
函数原型:
/**
生成一个单例
*/
+ (instancetype) sharedCloudPlayer;
3.3 配置SDK连接地址接口
在调用注册SDK接口前,调用该接口可以指定 SDK 连接地址信息;在调用注册SDK接口后,调用该接口,会返回失败。
⚠注意:
无特殊说明,接入方无需调用该接口。
函数原型:
/**
配置云游戏连接信息;该方法在创建单例后第一时间调用
@param info 连接信息
@return 是否成功
参数类型非法,或者已经请求过SAAS地址,均返回失败。
*/
- (BOOL) config:(NSDictionary *)info;
表3-1 参数说明
参数 | 类型 | 说明 |
---|---|---|
info | NSDictionary | 连接地址信息 |
表3-2 Info 字典中有效 Key 含义
参数 | 类型 | 说明 |
---|---|---|
CloudGameConfigKeyAuthURL | NSString | SAAS AUTH请求地址 |
CloudGameConfigKeyLinkURL | NSString | SAAS WS长连接地址 |
CloudGameConfigKeyCountlyURL | NSString | 数据上报地址 |
CloudGameConfigKeyCountlyKey | NSString | 数据上报Key |
3.4 注册 SDK
函数原型:
/**
向海马云端注册
@param accessKeyID 接入方ID
@param channelId 接入方渠道ID
@param launchOptions AppLauchuOptions
@return 是否正常进行注册,最终注册结果异步返回
*/
- (BOOL) registCloudPlayer:(NSString *)accessKeyID
channelId:(NSString *)channelId
options:(NSDictionary *)launchOptions;
表3-3 参数说明
参数 | 类型 | 说明 |
---|---|---|
accessKeyID | NSString | 接入方唯一ID |
channelId | NSString | 渠道号,由接入方配置。如果应用本身不区分渠道,可以设置为一个随机值的字符串。此参数由接入方自己定义与海马云无关,请注意不要跟appChannel混淆 |
options | NSDictionary | iOS APP启动选项,在didFinishLaunching方法中传入 |
3.5 准备游戏
接口会返回一个UIViewController,APP需通过present或push方法将其展示在界面上。
如使用addSubView接入,需根据云游戏方向设置rootViewController的取向。可参考接入Demo。
函数原型:
/**
准备游戏
@param options 游戏参数
@return 云游戏ViewController
*/
- (UIViewController *) prepare:(NSDictionary *)options;
表3-4 参数说明
参数 | 类型 | 说明 |
---|---|---|
options | NSDictionary | 游戏信息 |
表3-5 options字典中有效Key含义
参数 | 类型 | 必填项 | 说明 |
---|---|---|---|
CloudGameOptionKeyId | NSString | 是 | 游戏包名称 |
CloudGameOptionKeyOrientation | NSNumber | 是 | 游戏屏幕方向。 0:横屏 1:竖屏 |
CloudGameOptionKeyUserId | NSString | 是 | 游戏客户端用户的唯一识别码,如果没有用户登录账号,可以随机生成长度在64以内的字符串,但需要每台客户端上的账号保证唯一性 |
CloudGameOptionKeyUserToken | NSString | 是 | 用来校验userId的有效性,如果userId为随机生成,UserToken也可以随机生成 |
CloudGameOptionKeyConfigInfo | NSString | 是 | 免登使用,如果不需要免登功能,传任意非空字符串 |
CloudGameOptionKeyCToken | NSString | 是 | 用来校验参数的有效性 |
CloudGameOptionKeyPlayingTime | NSNumber | 是 | 用户可以玩游戏的时长,单位为ms |
CloudGameOptionKeyPriority | NSNumber | 否 | 用户申请游戏服务的优先级,默认为0,数值越大,优先级越高 |
CloudGameOptionKeyUserType | NSString | 否 | 用户类型。 超级账号用户:5 其他:0 默认为0 |
CloudGameOptionKeyExtraId | NSString | 否 | 预留参数 |
CloudGameOptionKeyArchive | NSNumber | 否 | 是否存档。 0:否 1:是 |
CloudGameOptionKeyAppChannel | NSString | 否 | 游戏渠道。此参数由海马云配置且与accessKey、accessKeyID相对应,否则会返回“游戏已下架”的错误。需要注意:此参数不要与channelId(接入方自己定义,与海马云无关)混淆 |
CloudGameOptionKeyProtoData | NSString | 否 | 数据透传字段 |
CloudGameOptionKeyBitrate | NSNumber | 否 | 开始播放的码率,单位KB |
CloudGameOptionKeyIPV6Supported | NSNumber | 否 | 是否查询IPV6地址。 0:否 1:是 默认为0 |
CloudGameOptionKeyStasticFPSInterval | NSNumber | 否 | 帧数统计时长,单位为s |
CloudGameOptionKeyStasticBandInterval | NSNumber | 否 | 流量统计时长,单位为s |
CloudGameOptionKeyStasticMaxFramesCount | NSNumber | 否 | 流量统计周期内,最大的帧的数量 |
CloudGameOptionKeyStasticDecodeInterval | NSNumber | 否 | 解码耗时统计时长,单位为s |
CloudGameOptionKeyCid | NSString | 否 | 继续未完成游戏实例(必选) |
CloudGameOptionKeyShowPoint | NSString | 否 | 自定义展示位置,例:30x0 |
CloudGameOptionKeyShowSize | NSString | 否 | 自定义展示尺寸,例:782x375 |
CloudGameOptionKeyUserType | NSString | 否 | 用户类型 |
CloudGameOptionKeyIPV6Supported | NSString | 否 | 是否支持IPV6网络,即是否需要SDK查询IPV4地址 |
CloudGameOptionKeyCidCacheInterval | NSString | 否 | 缓存Cid超时时间,单位为s,默认2小时 |
CloudGameOptionKeyStreamType | CloudCoreStreamingType | 否 | 播流类型 |
CloudGameOptionKeyArchiveFromUserId | NSString | 否 | 被读取存档用户UserId |
CloudGameOptionKeyarchiveFromBid | NSString | 否 | 被读取存档用户Bid |
CloudGameOptionKeyComponentType | NSNumber | 否 | 组件类型。 0:activity 1:service 2:broadcast 默认为0 |
CloudGameOptionKeyComponentAction | NSString | 否 | 组件对应的action |
CloudGameOptionKeyComponentName | NSString | 否 | 组件名:游戏包名 |
CloudGameOptionKeyIntentExtraData | HMIntentExtraData | 否 | 免登对象:透传参数 |
CloudGameOptionKeyResetPlayerFrame | NSString | 否 | 根据设备方向重置PlayerFrame |
CloudGameOptionKeyAccessKeyId | NSString | 否 | 指定accessKeyId申请游戏,默认为NULL |
CloudGameOptionKeyClientISP | NSString | 否 | 指定运营商,默认NULL |
CloudGameOptionKeyClientProvince | NSString | 否 | 指定省份,默认为NULL |
CloudGameOptionKeyClientCity | NSString | 否 | 指定城市,默认为NULL |
CloudGameOptionKeyUserDeviceInfo | NSString | 否 | 设备信息:支持 IMEI、androidId、Wi-Fi Mac地址参数透传,示例如下:{“imei”:””, “androidId”:””, “wifiAddress”:””} |
CloudGameOptionKeyCameraPermissionCheck | NSNumber | 否 | 每次摄像前是否需要申请权限。 0:否 1:是 默认为0 |
CloudGameOptionKeyIsRotating | NSNumber | 否 | 是否需要支持游戏过程中屏幕旋转。 0:否 1:是 默认为0 |
CloudGameOptionKeyLanguage | NSNumber | 否 | 支持语言参数,默认为中文 0:中文 1:英文 |
CloudGameOptionKeyRichData | NSDictionary | 否 | 透传到服务端的业务控制参数,具体透传内容由服务端定义 |
CloudGameOptionKeyResolutionId | NSString | 否 | 起播分辨率id |
CloudGameOptionKeyClearCachedCID | NSNumber | 否 | 申请游戏前,是否清除本地缓存CID 0:否 1:是 默认为0 |
CloudGameOptionKeyAudioSessionCategory | HMCloudCorePlayerAudioSessionCategory | 否 | 设置HMCloudCorePlayerAudioSessionCategory 默认为HMCloudCorePlayerAudioSessionCategoryDefault |
特殊类型定义如下:
表3-6 CloudCoreStreamingType说明
CloudCoreStreamingType | 说明 |
---|---|
CloudCoreStreamingTypeRTMP | RTMP播流 |
CloudCoreStreamingTypeRTC | WebRtc播流 |
表3-7 HMIntentExtraData说明
HMIntentExtraData | 类型 | 说明 |
---|---|---|
booleanExtra | NSDictionary | 添加Boolean |
integerExtra | NSDictionary | 添加Integer |
integerArrayExtra | NSDictionary | 添加Integer数组 |
integerListExtra | NSDictionary | 添加Integer List |
stringExtra | NSDictionary | 添加String |
stringArrayExtra | NSDictionary | 添加String数组 |
stringListExtra | NSDictionary | 添加String List |
floatExtra | NSDictionary | 添加Float |
floatArrayExtra | NSDictionary | 添加Float数组 |
floatListExtra | NSDictionary | 添加Float List |
longExtra | NSDictionary | 添加Long |
longArrayExtra | NSDictionary | 添加Long数组 |
longListExtra | NSDictionary | 添加Long List |
componentNameExtra | NSDictionary | 添加组件名componentName |
uriExtra | NSDictionary | 添加uri |
appLink | NSString | 添加appLink |
函数原型:
/**
HMIntentExtraData对象赋值
*/
HMIntentExtraData *intentExtraData = [[HMIntentExtraData alloc] init];
NSDictionary *dic = @{@"Viable":@(1), @"Enable":@(0)};
intentExtraData.booleanExtra = dic;
[options setObject:intentExtraData forKey:CloudGameOptionKeyIntentExtraData];
HMCloudCorePlayerAudioSessionCategory说明
HMCloudCorePlayerAudioSessionCategory | 说明 |
---|---|
HMCloudCorePlayerAudioSessionCategoryDefault | 对应AVAudioSessionCategorySoloAmbient |
HMCloudCorePlayerAudioSessionCategoryPlayAndRecord | 对应AVAudioSessionCategoryPlayAndRecord |
3.6 开始游戏
函数原型:
/**
开始游戏
*/
- (void) play;
4 国际化
云游戏内部默认使用中文,若希望使用其他语言,则需要进行多语言设置。
4.1 导入多语言包
将HaiMaSDK_Bundle_iOS.bundle资源包导入工程。
4.2 使用多语言
注册SDK时传入多语言参数。
函数原型:
typedef NS_ENUM(NSInteger,HMLanguageType){
HMLanguageTypeZh_CN = 0, //中文
HMLanguageTypeEn_US, //英语
};
/**
向海马云端注册
@param accessKeyID 接入方ID
@param channelId 接入方渠道ID
@param language 语言类型
@param launchOptions AppLauchuOptions
@return 是否正常进行注册,最终注册结果异步返回
*/
- (BOOL) registCloudPlayer:(NSString *)accessKeyID
channelId:(NSString *)channelId
language:(HMLanguageType)language
options:(NSDictionary *)launchOptions;
准备云游戏时传入多语言参数。调用prepare方法时传入CloudGameOptionKeyLanguage参数支持多语言切换。
示例代码:
NSMutableDictionary *options = [NSMutableDictionary dictionaryWithCapacity:10];
[options setObject:@(1) forKey:CloudGameOptionKeyLanguage];
[[HMCloudPlayer sharedCloudPlayer] prepare:options];
5 API 接口
5.1 暂停游戏接口
函数原型:
/**
暂停游戏
*/
- (void) pause;
5.2 继续游戏接口
暂停游戏后,通过该接口继续游戏。
函数原型:
/**
继续云游戏
@param playingTime 恢复后的时长,单位:ms
*/
- (void) resume:(NSInteger)playingTime;
表5-1 参数说明
参数 | 类型 | 说明 |
---|---|---|
playingTime | NSInteger | 恢复后的游戏时长,单位为ms |
5.3 停止游戏接口
函数原型:
/**
停止游戏
*/
- (void) stop;
/**
停止游戏,退出游戏界面
@param animated 和presentViewController 的 animated 值一致
*/
- (void) stopAndDismiss:(BOOL)animated;
5.4 设置背景图接口
函数原型:
/**
设置背景图
*/
- (void)setBackgroundImage:(UIImage *)bgImage;
表5-2 参数说明
参数 | 类型 | 说明 |
---|---|---|
bgImage | UIImage | 要显示的背景图 |
5.5 发送按键指令接口
函数原型:
typedef NS_ENUM(NSInteger, HMCloudPlayerKeyCommand){
CloudPlayerKeyCommandBackGame = 0x01,
CloudPlayerKeyCommandEmptyTouch
};
/**
发送特定键值指令,更新用户操作时间
@param cmd 键值
@return 是否发送
*/
- (BOOL) sendKeyCommand:(HMCloudPlayerKeyCommand)cmd;
/**
发送特定键值指令
@param cmd 键值
@param updateUserOperationTime 是否更新用户操作时间
@return 是否发送
*/
- (BOOL) sendKeyCommand:(HMCloudPlayerKeyCommand)cmd updateUserOperationTime:(BOOL)updateUserOperationTime;
表5-3 参数说明
参数 | 类型 | 说明 |
---|---|---|
cmd | HMCloudPlayerKeyCommand | 要发送的按键 |
updateUserOperationTime | BOOL | 是否更新用户最后操作时间 |
表5-4 HMCloudPlayerKeyCommand说明
HMCloudPlayerKeyCommand | 说明 |
---|---|
CloudPlayerKeyCommandBackGame | 在非游戏界面发送该指令,返回游戏 |
CloudPlayerKeyCommandEmptyTouch | 发送空操作指令,重置用户无操作定时器 |
5.6 清晰度查询接口
函数原型:
/**
查询游戏配置信息(目前版本仅支持清晰度查询)
@param pkgName 必填,不能为NULL
@param appChannel 选填,可为NULL
@param streamingType 必填
@param accessKeyId 指定accessKeyId
@param success 游戏配置的清晰度列表
@param fail 查询失败回调
@return 是否开始查询
*/
- (BOOL) gameParamsQuery:(NSString *)pkgName appChannel:(NSString *)appChannel streamingType:(CloudCoreStreamingType)streamingType accessKeyId:(NSString *)accessKeyId success:(void (^)(NSArray<HMCloudPlayerResolution *> *))success fail:(void (^)(NSString *errorCode))fail;
- (BOOL) gameParamsQuery:(NSString *)pkgName appChannel:(NSString *)appChannel streamingType:(CloudCoreStreamingType)streamingType success:(void (^)(NSArray<HMCloudPlayerResolution *> *))success fail:(void (^)(NSString *errorCode))fail;
表5-5 参数说明
参数 | 类型 | 说明 |
---|---|---|
pkgName | NSString | 游戏包名称 |
appChannel | NSString | 游戏渠道 |
streamingType | CloudCoreStreamingType | 流类型 |
accessKeyId | NSString | 指定accessKeyId |
success | Block | 查询成功后的回调,返回游戏配置的清晰度列表 |
fail | Block | 查询失败后的回调 |
5.7 路由节点查询接口
函数原型:
/**
IDC路由查询
@param ipv6Supported 是否支持IPV6,即:是否需要查询IPV4地址
@param accessKeyId 指定accessKeyId
@param success 查询成功回调
@param fail 查询失败回调
@return 是否开始查询
*/
- (BOOL) idcQuery:(BOOL)ipv6Supported accessKeyId:(NSString *)accessKeyId success:(void (^)(NSString *url, NSString *ipAddress))success fail:(void (^)(NSString *errorCode))fail;
- (BOOL) idcQuery:(BOOL)ipv6Supported success:(void (^)(NSString *url, NSString *ipAddress))success fail:(void (^)(NSString *errorCode))fail;
- (BOOL) idcQuery:(void (^)(NSString *url, NSString *ipAddress))success fail:(void (^)(NSString *errorCode))fail;
表5-6 参数说明
参数 | 类型 | 说明 |
---|---|---|
ipv6Supported | BOOL | 是否支持IPV6 |
accessKeyId | NSString | 指定accessKeyId |
fail | Block | 查询失败后的回调 |
success | Block | 查询成功后的回调,返回测速文件地址、路由IP |
5.8 获取用户最后操作时间戳接口
函数原型:
/**
获取用户最后一次操作时间
@return 用户最后操作时间戳,单位ms
*/
- (long long) getLastUserOperationTimestamp;
5.9 获取云游戏延迟信息接口
通过该接口会返回当前云游戏的网络延迟信息,该算法的准确性基于APP和实例的时钟校准。
函数原型:
/**
获取云游戏延迟信息
@return 云游戏延迟,单位ms
*/
- (NSInteger) getVideoLatency;
5.10 测速接口
检测实例到云端的速度。
函数原型:
/**
IDC节点测速
@param seconds 最大测速时长,单位:秒
@param ipv6Supported 是否支持IPV6,即:是否需要查询IPV4地址
@param accessKeyId 指定accessKeyId
@param success 测速成功回调
@param fail 测速失败回调
@return 是否开始测速
*/
- (BOOL) speedTest:(NSInteger)seconds ipv6Supported:(BOOL)ipv6Supported accessKeyId:(NSString *)accessKeyId success:(void (^)(int rst))success fail:(void (^)(NSString *errorCode))fail;
- (BOOL) speedTest:(NSInteger)seconds ipv6Supported:(BOOL)ipv6Supported success:(void (^)(int rst))success fail:(void (^)(NSString *errorCode))fail;
- (BOOL) speedTest:(NSInteger)seconds success:(void (^)(int rst))success fail:(void (^)(NSString *errorCode))fail;
表5-7 参数说明
参数 | 类型 | 说明 |
---|---|---|
seconds | NSInteger | 最大测速时长,单位为s |
ipv6Supported | BOOL | 是否支持IPV6 |
accessKeyId | NSString | 指定accessKeyId |
success | Block | 测速成功后的回调,单位为KB/s |
fail | Block | 测速失败后的回调 |
5.11 更新UID和游戏时长接口
函数原型:
/**
游戏过程中,更新UID和游戏时长
@param userId 必填,不能为NULL
@param userToken 必填,不能为NULL
@param ctoken 必填,不能为NULL
@param playingTime 必填,不能小于0,单位: ms
@param tip 选填
@param protoData 选填
@param success 更新成功回调
@param fail 更新失败回调
@return 是否开始更新
*/
- (BOOL) updateGameUID:(NSString *)userId
userToken:(NSString *)userToken
ctoken:(NSString *)ctoken
playingTime:(NSInteger)playingTime
tip:(NSString *)tip
protoData:(NSString *)protoData
success:(void (^)(BOOL successed))success
fail:(void (^)(NSString *errorCode))fail;
表5-8 参数说明
参数 | 类型 | 说明 |
---|---|---|
userId | NSString | 游戏客户端用户的唯一识别码,如果没有用户登录账号,可以随机生成长度在64以内的字符串,但需要每台客户端上的账号保证唯一性 |
userToken | NSString | 用来校验userId的有效性,如果userId为随机生成,UserToken也可以随机生成 |
ctoken | NSString | 用来校验参数的有效性 |
playingTime | NSNumber | 游戏时长,单位:ms |
tip | NSString | 游戏时长更新提示话术 |
protoData | NSString | 数据透传字段 |
success | Block | 更新成功后的回调。 successed:YES表示“更新成功“, NO表示“更新失败” |
fail | Block | 更新失败后的回调 |
5.12 SDK发送消息接口
向云端发送消息。
函数原型:
/**
发送消息
@param message 消息内容
*/
- (BOOL) sendMessage:(NSString *)message;
表5-9 参数说明
参数 | 类型 | 说明 |
---|---|---|
message | NSString | 消息内容 |
5.13 手动切换清晰度接口
函数原型:
/**
手动切换清晰度
@param resolutionId 目标清晰度ID
*/
- (void) switchResolution:(NSInteger)resolutionId;
表5-10 参数说明
参数 | 类型 | 说明 |
---|---|---|
resulotionId | NSString | 清晰度ID |
5.14 进入队列接口
函数原型:
/**
确认进入排队队列
*/
- (void) confirmQueue;
5.15 开启网络监控接口
函数原型:
/**
开始网络状态监控
@param block 回调通知
*/
- (void) startNetMonitor:(void (^)(CloudCorePlayerNetStatus status))block;
表5-11 参数说明
参数 | 类型 | 说明 |
---|---|---|
block | Block | 网络状态变更回调 。 NetStatusUnknown:未知 NetStatusNotReachable:不可达 NetStatusReachableViaWWAN:移动网络可达 NetStatusReachableViaWiFi:Wi-Fi网络可达 |
⚠注意:
网络监听过程中,如遇断网,建议调用暂停游戏接口,网络恢复后调用继续游戏接口。
5.16 停止网络监控接口
函数原型:
/**
停止网络状态监控
*/
- (void) stopNetMonitor;
5.17 静音功能接口
函数原型:
/**
视频静音开关
@param mute; true为静音,false恢复声音
*/
- (void) setAudioMute:(BOOL)mute;
5.18 关闭游戏内本地键盘功能接口
函数原型:
/**
关闭本地键盘
*/
- (void)hiddenKeyboard;
5.19 设置x86虚拟键盘是否隐藏接口
函数原型:
/**
@param isOpen YES 展示 NO 隐藏
*/
- (void)cloudSwitchKeyboard:(BOOL)isOpen;
5.20 获取实例类型接口
函数原型:
typedef NS_ENUM(NSInteger, CloudInstanceType) {
CloudInstanceTypeUnknown = -1,
CloudInstanceTypeArm = 0,
CloudInstanceTypeX86 = 1,
}
/**
@return 实例类型
*/
- (CloudInstanceType)getCloudInstanceType;
5.21 设置显示虚拟按键原始值接口
函数原型:
/**
@param isShow = YES 显示,isShow = NO隐藏
*/
-(void)cloudSetShowVirtualRawKey:(BOOL)isShow;
5.22 设置触屏数据模式接口
函数原型:
typedef NS_ENUM(NSInteger, HMCloudCoreTouchMode) {
HMCloudCoreTouchModeNone = 0, // 关 不传递数据
HMCloudCoreTouchModeMouse = 1, // 滑鼠模式
HMCloudCoreTouchModeScreen = 2, // 多点触控模式
HMCloudCoreTouchModeFingerTouch = 3, // 手指触控模式
}
/**
@param HMCloudCoreTouchMode
*/
-(void)cloudSetTouchModel:(HMCloudCoreTouchModel)model;
5.23 获取触屏数据模式接口
函数原型:
typedef NS_ENUM(NSInteger, HMCloudCoreTouchMode) {
HMCloudCoreTouchModeNone = 0, // 关 不传递数据
HMCloudCoreTouchModeMouse = 1, // 滑鼠模式
HMCloudCoreTouchModeScreen = 2, // 多点触控模式
HMCloudCoreTouchModeFingerTouch = 3, // 手指触控模式
}
/**
@return HMCloudCoreTouchMode
*/
- (HMCloudCoreTouchMode) getMouseType;
5.24 切换手柄模式接口
函数原型:
typedef NS_ENUM(NSInteger, HMCloudPlayerOperationType) {
HMCloudPlayerOperationTypeNone,
HMCloudPlayerOperationTypeXbox,
HMCloudPlayerOperationTypeKeyboard,
}
/**
@@param HMCloudPlayerOperationType
*/
- (void) switchOperationType:(HMCloudPlayerOperationType) type;
5.25 获取手柄模式接口
函数原型:
typedef NS_ENUM(NSInteger, HMCloudPlayerOperationType) {
HMCloudPlayerOperationTypeNone,
HMCloudPlayerOperationTypeXbox,
HMCloudPlayerOperationTypeKeyboard,
}
/**
@return HMCloudPlayerOperationType
*/
- (HMCloudPlayerOperationType) getOperationType;
5.26 开启按键反馈接口
函数原型:
/**
@param BOOL YES 开启 NO 关闭
*/
- (void) setFeedback:(BOOL) isOpen;
5.27 获取按键反馈接口
函数原型:
/**
@return BOOL YES 开启 NO 关闭
*/
- (BOOL) getFeedback;
5.28 调节x86手柄透明度接口
函数原型:
/**
@param alpha 0-1 0为完全透明 1为完全不透明
*/
- (void) setCustomStickAlpha:(float)alpha;
5.29 获取x86手柄透明度接口
函数原型:
/**
@return alpha 0-1 0为完全透明 1为完全不透明
*/
- (float) getCustomStickAlpha;
5.30 设置x86鼠标灵敏度接口
函数原型:
/**
sensitivity 0-1 0 鼠标无法移动 1 鼠标正常移动
*/
- (void) setMouseSensitivity:(float)sensitivity;
5.31 获取x86鼠标灵敏度接口
函数原型:
/**
@return 0-1 0 鼠标无法移动 1 鼠标正常移动
*/
- (float) getMouseSensitivity;
5.32 x86查询控制权接口
函数原型:
typedef void (^HMAssignControlCallback)(NSArray<HMCloudPlayerControlInfo *>*);
/**
@param cid cid
@param success 查询控制权成功
@pramm fail 查询控制权失败
*/
此接口只适用x86类型,只有主播(主控)调用此接口才能成功;
- (void)queryGameControlWithCid:(NSString *)cid Success: (HMAssignControlCallback)success Fail:(void (^)(NSString *errorCode, NSString *errorMsg))fail
5.33 x86分配控制权接口
函数原型:
typedef void (^HMAssignControlCallback)(NSArray<HMCloudPlayerControlInfo *>*);
/**
@param controlInfos 控制权model
@param success 分配控制权成功
@param fail 分配控制权失败
*/
此接口只适用x86类型,只有主播(主控)调用此接口才能成功;
当主播分享授权码后,观众(从控)调用获取控制权后,仅仅获得视频流;主播(主控)调用此接口给观众(从控)分 配控制权成功后,从控才能获取控制权。
- (void)assignGameControlWithControlInfos:(NSArray<HMCloudPlayerControlInfo *>*)controlInfos Success:(HMAssignControlCallback)success Fail:(void (^)(NSString *errorCode, NSString *errorMsg))fail;
5.34 x86支持按键指令通道接口
此接口只适用x86类型,app接入方可以自定义UI按键,通过此方法实现按键数据传输。
函数原型:
/**
发送keycode值
仅x86游戏使用
*/
- (BOOL)sendCustomKeycode:(HMInputOpData *)inputOPData;
表5-12 参数说明
| 参数 | 类型 | 说明 |
| ———– | ————- | ——– |
| inputOPData | HMInputOpData | 输入数据 |
表5-13 参数说明
HMInputOpData参数说明
参数 | 类型 | 说明 |
---|---|---|
opListArray | NSMutableArray<HMOneInputOPData*> | 输入数据数组 |
表5-14 参数说明
HMOneInputOPData参数说明
参数 | 类型 | 说明 |
---|---|---|
inputOp | HMOneInputOPData_InputOP | 键值 |
inputState | HMOneInputOPData_InputState | 按键状态 |
value | NSInteger | 数量值 |
posCursor | HMCoordinatePos | 坐标,光标移动位置 |
posMouse | HMCoordinatePos | 坐标,鼠标物理位置 |
X86鼠标键值
属性名 | 键值 | 说明 |
---|---|---|
inputOp | 512 | 左键 |
513 | 中键 | |
514 | 右键 | |
515 | 滚轮 | |
516 | 移动 | |
inputState | 1 | 默认 |
2 | 按下 | |
3 | 抬起 | |
value | 0 | 默认值 |
1 | 鼠标滚轮向上滚动 | |
-1 | 鼠标滚轮向下滚动 | |
posCursor | x | x轴光标位置 |
y | y轴光标位置 | |
posMouse | x | x轴物理位置 |
y | y轴物理位置 |
X86键盘键值
字段 | 键值 | 说明 |
---|---|---|
inputOp | a | 65 |
b | 66 | |
c | 67 | |
... | ... | |
inputState | 2 | 按下 |
3 | 抬起 | |
4 | Lock关闭 | |
5 | Lock开启 | |
value | 0 | 默认值 |
X86 xbox手柄键值
字段 | 键值 | 说明 | |
---|---|---|---|
inputState | |||
1 | 默认 | ||
inputOp | |||
1024 | 普通按键 | ||
1025 | LT | ||
1026 | RT | ||
1027 | 左摇杆X轴 | ||
1028 | 左摇杆Y轴 | ||
1029 | 右摇杆X轴 | ||
1030 | 右摇杆Y轴 | ||
value | |||
0 | 按键抬起 | ||
1 | 十字键上按下 | ||
2 | 十字键下按下 | ||
4 | 十字键左按下 | ||
8 | 十字键右按下 | ||
9 | 十字键右上按下 | ||
10 | 十字键右下按下 | ||
6 | 十字键左下按下 | ||
5 | 十字键左上按下 | ||
16 | START键按下 | ||
32 | SELECT键按下 | ||
4096 | A键按下 | ||
8192 | B键按下 | ||
16384 | X键按下 | ||
32768 | Y键按下 | ||
64 | LS键按下 | ||
256 | LB键按下 | ||
128 | RS键按下 | ||
512 | RB键按下 | ||
255 | RT/LT键按下 | ||
-32768~32767 | 左右摇杆X、Y轴值 |
参数 | 类型 | 说明 |
---|---|---|
userId | NSString | 游戏客户端用户的唯一识别码,如果没有用户登录账号,可以随机生成长度在64以内的字符串,但需要每台客户端上的账号保证唯一性 |
userToken | NSString | 用来校验userId的有效性,如果userId为随机生成,UserToken也可以随机生成 |
pkgName | NSString | 游戏包名称 |
appChannel | NSString | 游戏渠道 |
accessKeyId | NSString | 指定accessKeyId |
success | Block | 查询成功后的回调。 finished:YES表示“存档完成“, NO表示“存档中” |
fail | Block | 查询失败后的回调 |
6.2 查询游戏是否存在存档接口
函数原型:
/**
游戏是否有存档查询
@param userId 必填
@param userToken 必填
@param pkgName 必填
@param appChannel 选填
@param accessKeyId 指定accessKeyId
@param success 查询成功的回调
@param fail 查询失败的回调
@return 是否开始查询
*/
- (BOOL) gameArchived:(NSString *)userId userToken:(NSString *)userToken pkgName:(NSString *)pkgName appChannel:(NSString *)appChannel accessKeyId:(NSString *)accessKeyId success:(void (^)(BOOL archived))success fail:(void (^)(NSString *errorCode))fail;
- (BOOL) gameArchived:(NSString *)userId userToken:(NSString *)userToken pkgName:(NSString *)pkgName appChannel:(NSString *)appChannel success:(void (^)(BOOL archived))success fail:(void (^)(NSString *errorCode))fail;
表6-2 参数说明
参数 | 类型 | 说明 |
---|---|---|
userId | NSString | 游戏客户端用户的唯一识别码,如果没有用户登录账号,可以随机生成长度在64以内的字符串,但需要每台客户端上的账号保证唯一性 |
userToken | NSString | 用来校验userId的有效性,如果userId为随机生成,UserToken也可以随机生成 |
pkgName | NSString | 游戏包名称 |
appChannel | NSString | 游戏渠道 |
accessKeyId | NSString | 指定accessKeyId |
success | Block | 查询成功后的回调。 finished:YES表示“存档完成“, NO表示“存档中” |
fail | Block | 查询失败后的回调 |
6.3 检测未释放游戏实例接口
函数原型:
/**
查询是否有上次未释放的游戏实例
@param (NSArray <HMCloudPlayerReservedSingleIncetance*>*) 未释放游戏实例数组
*/
typedef void (^HMReservedIncetanceCallback)(NSArray <HMCloudPlayerReservedSingleIncetance*>*);
/**
查询是否有上次未完成的游戏实例
@param options 游戏参数 {CloudGameOptionKeyUserId:@"...", CloudGameOptionKeyUserToken:"...",CloudGameOptionKeyAccessKeyId:"..."}
@param reservedIncetance 查询驻留机回调方法,包含驻留机数组
*/
- (void) getReservedInstance:(NSDictionary *)options ReservedIncetance:(HMReservedIncetanceCallback)reservedIncetance;
表6-3 HMCloudPlayerReservedSingleIncetance说明
参数 | 类型 | 说明 |
---|---|---|
cid | NSString | 用户使用云游戏服务的唯一标识 |
pkgName | NSString | 游戏包名 |
gameName | NSString | 游戏名称 |
appChannel | NSString | 渠道号 |
6.4 获取延迟信息接口
获取某一秒的延迟信息。
函数原型:
/**
获取某一秒延迟信息
@return 包含延迟信息的HMDelayInfoModel
*/
- (HMDelayInfoModel *) getDelayInfo;
表6-4 参数说明
参数 | 类型 | 说明 |
---|---|---|
HMDelayInfoModel | HMDelayInfoModel | HMDelayInfoModel 属性的含义。 collectTime:收集延迟信息时的时间戳,单位为ms netDelayTime:网络延迟时间,单位为ms decodeDelayTime:解码耗时,单位为ms renderDelayTime:渲染耗时,单位为ms aFrameDelayTime:单帧耗时,单位为ms nowDelayTime:采集某一帧到当前时间的耗时,单位为ms frameNowSize:帧大小 showFps:展示帧率 gameFps:推流帧率 bitRate:码率 pingpongCostTime:pingpong耗时,单位为ms |
6.5 根据cid释放实例接口
函数原型:
/**
根据cid立即释放实例
@param cid 必填,不能为NULL
@param ctoken 必填,不能为NULL,并且必须与之前播放的实例传入的cToken一致
@param userId 必填,不能为NULL
@param userToken 必填,不能为NULL
@param pkgName 必填,不能为NULL
@param appChannel 选填,可为NULL
@param accessKeyId 指定accessKeyId
@param success 释放成功回调
@param fail 释放失败回调
@return 是否开始释放实例
*/
- (BOOL)gameReleaseInstanceWithCid:(NSString *)cid ctoken:(NSString *)ctoken userId:(NSString *)userId userToken:(NSString *)userToken pkgName:(NSString *)pkgName appChannel:(NSString *)appChannel accessKeyId:(NSString *)accessKeyId success:(void(^)(BOOL released))success fail:(void (^)(NSString *errorCode))fail;
- (BOOL)gameReleaseInstanceWithCid:(NSString *)cid ctoken:(NSString *)ctoken userId:(NSString *)userId userToken:(NSString *)userToken pkgName:(NSString *)pkgName appChannel:(NSString *)appChannel success:(void(^)(BOOL released))success fail:(void (^)(NSString *errorCode))fail;
表6-5 参数说明
参数 | 类型 | 说明 |
---|---|---|
cid | NSString | 要释放的cid |
cToken | NSString | 用来校验参数的有效性 |
userId | NSString | 用户登录ID |
userToken | NSString | 用户登录令牌 |
pkgName | NSString | 游戏包名称 |
appChannel | NSString | 如果存在多款游戏同包名的情况,可以通过appChannel区分。如果不存在则可以忽略 |
accessKeyId | NSString | 指定accessKeyId |
success | Block | 释放成功回调 |
fail | Block | 释放失败回调 |
6.6 开启直播接口
函数原型:
/**
游戏过程中,开启直播
@param livingId 直播唯一标识,必填,不能为NULL
@param pushStreamUrl 第三方推流地址,必填,不能为NULL
@return 请求调用“开启直播”是否成功
*/
- (BOOL) startLivingWithLivingId:(NSString *)livingId pushStreamUrl:(NSString *)pushStreamUrl;
返回值YES/NO仅表示请求调用的结果,由于开启直播是个异步过程,最终开启直播成功与否请参见直播场景回调。
表6-6 参数说明
参数 | 类型 | 说明 |
---|---|---|
livingId | NSString | 直播ID |
livingUrl | NSString | 直播地址 |
6.7 停止直播接口
函数原型:
/**
游戏过程中,关闭直播
@param livingId 直播间ID,必填,不能为NULL
@return 请求调用“停止直播”是否成功
*/
- (BOOL) stopLivingWithLivingId:(NSString *)livingId;
返回值YES/NO仅表示请求调用的结果,由于停止直播是个异步过程,最终停止成功与否请参见直播场景。
6.8 获取授权码接口
函数原型:
/**
获取授权码,控制端同意转让控制权后调用
@return 是否开始获取授权码
*/
- (BOOL) getAuthCode;
返回值YES/NO仅表示请求调用的结果,由于获取授权码是个异步过程,最终获取授权码成功与否请参见控制权转移场景回调。
6.9 获取控制权接口
函数原型:
/**
获取控制权,申请端调用
@param cid 控制端cid,必填,不能为NULL
@param authCode 授权码,必填,不能为NULL
@param enabled 是否获取帧渲染回调数据
@return 是否开始获取控制权
**/
- (BOOL) gainControlWithMasterCid:(NSString *)cid authCode:(NSString *)authCode frameRenderCallback:(BOOL)enabled;
- (BOOL) gainControlWithMasterCid:(NSString *)cid authCode:(NSString *)authCode;
返回值YES/NO仅表示请求调用的结果,由于获取控制权是个异步过程,最终获取控制权成功与否请参见控制权转移场景回调。
表6-7 参数说明
参数 | 类型 | 说明 |
---|---|---|
cid | NSString | 控制端cid |
authCode | NSString | 授权码 |
frameRenderCallback | BOOL | 是否获取帧渲染回调数据 |
6.10 查询是否支持直播接口
函数原型:
/**
查询是否支持直播的方法,建议APP调用时机为收到第一帧回调之后
@return 是否支持直播枚举结果
*/
- (ELivingCapabilityStatus) getLivingCapabilityStatus;
表6-8 返回值定义
枚举返回值类型 | 返回值 |
---|---|
ELivingCapabilityStatus | LivingUnknown |
LivingUnSupported | 不支持直播 |
LivingSupported | 支持直播 |
6.11 停止云游戏接口
此接口支持配置最小云玩存档时间。
无动画停止云游戏,函数原型:
/** 无动画停止云游戏 @param seconds 存档时长,必填 单位为s */ - (void) stop:(int)seconds;
带动画停止云游戏,函数原型:
/** 带动画停止云游戏 @param archiveMinSeconds 存档时长,必填 单位为s */ - (void) stopAndDismiss:(BOOL)animated archiveMinSeconds:(int)seconds;
6.12 本地键盘状态通知接口
方法名cloudPlayerKeyboardStatusChanged,函数原型:
/**
本地键盘状态通知
@param status 本地键盘状态
*/
- (void) cloudPlayerKeyboardStatusChanged:(CloudPlayerKeyboardStatus)status;
表6-9 参数说明
CloudPlayerKeyboardStatus | 说明 |
---|---|
CloudPlayerKeyboardStatusNone | 初始值 |
CloudPlayerKeyboardStatusDidShow | 显示 |
CloudPlayerKeyboardStatusDidHide | 隐藏 |
6.13 获取远端实例图片列表接口
获取远端实例指定目录图片列表,目录由远端实例指定。此功能默认关闭,如需开启请联系项目对接人员。
函数原型:
/**
获取云游戏图库列表
@param limit 获取图片列表的数量
@param offset offset表示分页(如20一页的话,0表示第一页,20表示第二页)
@param cloudFileImageListBlock result 查询结果,imageList 图片列表 errorMsg result为NO时返回错误原因
*/
- (void)getCloudImageList:(NSInteger)limit offset:(NSInteger)offset cloudFileImageListBlock:(HMCloudFileImageListBlock)cloudFileImageListBlock;
表6-10 参数说明
参数 | 类型 | 必填项 | 说明 |
---|---|---|---|
limit | NSInteger | 是 | 索要图片数量 |
offset | NSInteger | 是 | 表示分页,如从第21张获取,offset设置为20 |
cloudFileImageListBlock | HMCloudFileImageListBlock | 是 | 返回结果回调。 result:查询结果 imageList:图片列表 errorMsg result为NO时返回错误原因 |
6.14 图片下载接口
此功能默认关闭,如需开启请联系项目对接人员。
通过获取远端实例图片列表接口或者游戏内截图通知回调获取图片名称,调用图片下载方法将图片下载至指定的沙盒目录内,用户可以将沙盒目录内图片移动到系统相册或者自定义相册。
函数原型:
/**
开始下载图片
@param downloadList 下载列表
@param cloudFileDownloadResponseBlock 下载某一个文件回调
@param cloudFileDownloadComplete 下载完成回调
@return 仅表示是否成功调用下载方法 ,下载结果以cloudFileDownloadResponseBlock为准
*/
- (BOOL)startDownload:(NSArray<HMFile *> *)downloadList cloudFileDownloadResponseBlock:(HMCloudFileDownloadResponseBlock)cloudFileDownloadResponseBlock cloudFileDownloadComplete:(HMCloudFileDownloadComplete)cloudFileDownloadComplete;
表6-11 参数说明
参数 | 类型 | 必填项 | 说明 |
---|---|---|---|
downloadList | NSArray | 是 | 下载列表 |
cloudFileDownloadResponseBlock | HMCloudFileDownloadResponseBlock | 是 | 下载某一个文件的回调。 result:下载结果 error:失败原因 file:下载的文件 |
cloudFileDownloadComplete | HMCloudFileDownloadComplete | 是 | 下载完成回调 |
表6-12 参数说明
HMFile为下载文件。
参数 | 类型 | 必填项 | 说明 |
---|---|---|---|
fileName | NSString | 是 | 文件名称 |
destinationPath | NSString | 是 | 存储图片的沙盒路径 |
fileSize | NSString | 否 | 图片大小 |
mimeType | NSString | 否 | 图片类型 |
isCancel | BOOL | 否 | 是否取消文件(无需设置) |
6.15 图片取消下载接口
当调用图片下载接口后,用户想取消下载可调用此接口。
函数原型:
/**
取消下载图片
@param cancelList 取消列表
@param cloudFileCancelDownloadResponseBlock 取消某一个文件回调
@param cloudFileCancelDownloadComplete 取消完成回调
@return 是否成功调用取消下载方法
*/
- (BOOL)startCancelDownload:(NSArray <HMFile *>*)cancelList cloudFileCancelDownloadResponseBlock:(HMCloudFileCancelDownloadResponseBlock)cloudFileCancelDownloadResponseBlock
cloudFileCancelDownloadComplete:(HMCloudFileCancelDownloadComplete)cloudFileCancelDownloadComplete;
表6-13 参数说明
参数 | 类型 | 必填项 | 说明 |
---|---|---|---|
cancelList | NSArray | 是 | 取消下载列表 |
cloudFileCancelDownloadResponseBlock | HMCloudFileCancelDownloadResponseBlock | 是 | 取消下载某一个文件回调,result 为取消结果,error为失败原因,file为取消的文件 |
cloudFileCancelDownloadComplete | HMCloudFileCancelDownloadComplete | 是 | 取消完成回调 |
6.16 获取可下载文件列表
当用户需要使用大文件下载功能时,需先获取可下载的文件列表。
函数原型:
/**
获取可下载列表
@param type 下载类型
@param limit 获取图片列表的数量(适用于type为CloudPlayerDownloadTypeImage)
@param offset offset表示分页(如20一页的话,0表示第一页,20表示第二页 适用于type为 CloudPlayerDownloadTypeImage)
@param cloudFileListBlock result 查询结果,fileList 可下载列表 errorMsg result为NO时返回错误原因
*/
- (void)getCloudFileList:(CloudPlayerDownloadType)type limit:(NSInteger)limit offset:(NSInteger)offset cloudFileListBlock:(HMCloudFileListBlock)cloudFileListBlock;
表6-14 参数说明
参数 | 类型 | 必填项 | 说明 |
---|---|---|---|
type | CloudPlayerDownloadType | 是 | 文件类型 |
CloudPlayerDownloadTypeImage | CloudPlayerDownloadType | 是 | 图片类型 |
CloudPlayerDownloadTypeFile | CloudPlayerDownloadType | 是 | 文件类型,包括视频和图片 |
limit | NSInteger | 是 | 索要图片数量 |
offset | NSInteger | 是 | 表示分页,如从第21张获取,offset设置为20 |
cloudFileListBlock | HMCloudFileListBlock | 是 | 回调函数 |
result | BOOL | 是 | 获取结果,YES:获取成功 NO:获取失败 |
fileList | NSArray | 是 | 文件列表 |
status | CloudPlayerFileListStatus | 是 | 获取列表状态 |
CloudPlayerFileListStatusSuccess | CloudPlayerFileListStatus | 是 | 请求成功 |
CloudPlayerFileListStatusDisconnect | CloudPlayerFileListStatus | 是 | 链接断开 |
CloudPlayerFileListStatusTimeout | CloudPlayerFileListStatus | 是 | 请求超时 |
CloudPlayerFileListStatusNotInit | CloudPlayerFileListStatus | 是 | 未初始化 |
CloudPlayerFileListStatusRomFailure | CloudPlayerFileListStatus | 是 | Rom返回失败 |
6.17 文件下载
当用户需要使用大文件下载功能时,调用此方法。
函数原型:
/**
文件下载
@param type 下载类型
@param fileList 下载列表
@param downloadProgressBlock 下载进度
@param downloadResponseBlock 下载某一个文件回调
@param downloadComplete 下载完成回调
@return 是否成功调用下载方法
*/
- (BOOL)downloadFile:(CloudPlayerDownloadType)type fileList:(NSArray<HMFile *> *)fileList downloadProgress:(HMCloudFileDownloadProgressBlock)downloadProgressBlock cloudFileDownloadResponseBlock:(HMCloudFileDownloadResponseBlock)downloadResponseBlock cloudFileDownloadComplete:(HMCloudFileDownloadComplete)downloadComplete;
表6-15 参数说明
参数 | 类型 | 必填项 | 说明 |
---|---|---|---|
type | CloudPlayerDownloadType | 是 | 文件类型 |
CloudPlayerDownloadTypeImage | CloudPlayerDownloadType | 是 | 图片类型 |
CloudPlayerDownloadTypeFile | CloudPlayerDownloadType | 是 | 文件类型,包括视频和图片 |
fileList | NSArray<HMFile *> | 是 | 下载任务列表 |
downloadProgressBlock | HMCloudFileDownloadProgressBlock | 是 | 下载任务进度回调 |
downloadProgress | double | 是 | 下载进度 |
file | HMFile | 是 | 下载文件 |
downloadResponseBlock | HMCloudFileDownloadResponseBlock | 是 | 单个文件任务回调 |
result | BOOL | 是 | 下载结果,YES:下载成功;NO:下载失败; |
status | CloudPlayerDownloadResponseStatus | 是 | 下载状态 |
CloudPlayerDownloadResponseStatusSuccess | CloudPlayerDownloadResponseStatus | 是 | 下载成功 |
CloudPlayerDownloadResponseStatusEmpty | CloudPlayerDownloadResponseStatus | 是 | 下载队列空 |
CloudPlayerDownloadResponseStatusOutList | CloudPlayerDownloadResponseStatus | 是 | 不在下载列表 |
CloudPlayerDownloadResponseStatusDownloaded | CloudPlayerDownloadResponseStatus | 是 | 已下载完成 |
CloudPlayerDownloadResponseStatusTimeout | CloudPlayerDownloadResponseStatus | 是 | 下载超时 |
CloudPlayerDownloadResponseStatusDisconnect | CloudPlayerDownloadResponseStatus | 是 | 链接断开 |
CloudPlayerDownloadResponseStatusKeepAliveTimeout | CloudPlayerDownloadResponseStatus | 是 | 保活时间用尽 |
CloudPlayerDownloadResponseStatusInternalError | CloudPlayerDownloadResponseStatus | 是 | 内部错误 |
errorMsg | NSString | 是 | 错误日志 |
downloadComplete | HMCloudFileDownloadComplete | 是 | 所有任务下载完成 |
6.18 取消文件下载
当用户需要取消下载任务时,调用此方法。
函数原型:
/**
取消下载
@param type 下载类型
@param fileList 取消列表
@param cancelDownloadResponseBlock 取消某一个文件回调
@param cancelDownloadComplete 取消完成回调
@return 是否成功调用取消下载方法
*/
- (BOOL)cancelDownload:(CloudPlayerDownloadType)type fileList:(NSArray<HMFile *> *)fileList cloudFileCancelDownloadResponseBlock:(HMCloudFileCancelDownloadResponseBlock)cancelDownloadResponseBlock cloudFileCancelDownloadComplete:(HMCloudFileCancelDownloadComplete)cancelDownloadComplete;
表6-16 参数说明
参数 | 类型 | 必填项 | 说明 |
---|---|---|---|
type | CloudPlayerDownloadType | 是 | 文件类型 |
CloudPlayerDownloadTypeImage | CloudPlayerDownloadType | 是 | 图片类型 |
CloudPlayerDownloadTypeFile | CloudPlayerDownloadType | 是 | 文件类型,包括视频和图片 |
fileList | NSArray<HMFile *> | 是 | 取消任务列表 |
cloudFileCancelDownloadResponseBlock | HMCloudFileCancelDownloadResponseBlock | 是 | 取消某一个文件回调 |
result | BOOL | 是 | 取消任务结果;YES:取消成功 NO:取消失败 |
status | CloudPlayerCancelDownloadResponseStatus | 是 | 取消列表状态 |
CloudPlayerCancelDownloadResponseStatusSuccess | CloudPlayerCancelDownloadResponseStatus | 是 | 取消成功 |
CloudPlayerCancelDownloadResponseStatusEmpty | CloudPlayerCancelDownloadResponseStatus | 是 | 下载队列空 |
CloudPlayerCancelDownloadResponseStatusOutList | CloudPlayerCancelDownloadResponseStatus | 是 | 不在下载列表 |
CloudPlayerCancelDownloadResponseStatusDownloaded | CloudPlayerCancelDownloadResponseStatus | 是 | 已下载完成 |
CloudPlayerCancelDownloadResponseStatusTimeout | CloudPlayerCancelDownloadResponseStatus | 是 | 取消超时 |
CloudPlayerCancelDownloadResponseStatusDisconnect | CloudPlayerCancelDownloadResponseStatus | 是 | 链接断开 |
cloudFileCancelDownloadComplete | HMCloudFileCancelDownloadComplete | 是 | 所有任务取消完成回调 |
6.19 更新下载列表
当大文件下载任务还未完成,可以调用此方法更新下载任务列表。
函数原型:
- (BOOL)upDateDownloadFileList:(NSArray <HMFile *> *)fileList;
表6-17 参数说明
参数 | 类型 | 必填项 | 说明 |
---|---|---|---|
fileList | NSArray <HMFile *> * | 是 | 下载列表 |
6.20 获取正在下载任务列表
调用此方法可获取正在下载的任务列表。
函数原型:
/**
获取待下载任务列表,仅支持文件下载过程中使用
@return 待下载任务列表
*/
- (NSArray <HMFile *>*)getDownloadTaskList;
6.21 图片上传
当需要使用图片上传功能时,可调用此方法。
函数原型:
/**
开始上传图片
@param uploadList 上传列表
@param cloudFileUploadResponseBlock 上传某一个文件回调
@param cloudFileUploadComplete 上传完成回调
@return 是否成功调用下载方法
*/
- (BOOL)startUpload:(NSArray<HMFile *> *)uploadList cloudFileUploadResponseBlock:(HMCloudFileUploadResponseBlock)cloudFileUploadResponseBlock cloudFileUploadComplete:(HMCloudFileUploadComplete)cloudFileUploadComplete;
表6-18 参数说明
参数 | 类型 | 必填项 | 说明 |
---|---|---|---|
uploadList | NSArray <HMFile *> * | 是 | 上传图片列表 |
cloudFileUploadResponseBlock | HMCloudFileUploadResponseBlock | 是 | 上传单个任务回调 |
result | BOOL | 是 | 上传结果,YES:上传成功;NO:上传失败; |
status | CloudPlayerFileUploadResponseStatus | 是 | 上传状态 |
CloudPlayerFileUploadResponseStatusSuccess | CloudPlayerFileUploadResponseStatus | 是 | 上传成功 |
CloudPlayerFileUploadResponseStatusEmpty | CloudPlayerFileUploadResponseStatus | 是 | 上传队列空 |
CloudPlayerFileUploadResponseStatusTimeout | CloudPlayerFileUploadResponseStatus | 是 | 上传超时 |
CloudPlayerFileUploadResponseStatusCancel | CloudPlayerFileUploadResponseStatus | 是 | 上传取消 |
CloudPlayerFileUploadResponseStatusIncorrectFormat | CloudPlayerFileUploadResponseStatus | 是 | 格式不正确 |
CloudPlayerFileUploadResponseStatusBeyondMaxLimit | CloudPlayerFileUploadResponseStatus | 是 | 超过最大文件限制 |
CloudPlayerFileUploadResponseStatusInternalError | CloudPlayerFileUploadResponseStatus | 是 | 内部错误 |
CloudPlayerFileUploadResponseStatusDisconnect | CloudPlayerFileUploadResponseStatus | 是 | 连接断开 |
cloudFileUploadComplete | HMCloudFileUploadComplete | 是 | 所有上传任务完成 |
6.22 取消图片上传任务
调用此方法可取消所有上传任务。
函数原型:
/**
取消上传图片
*/
- (void)cancelUploadFileAllTask;
6.23 获取游戏内截图
调用此方法可以获取当前游戏截图。
函数原型:
typedef NS_ENUM(NSInteger,CloudPlayerScreenshotStatus){
CloudPlayerScreenshotStatusSuccess, // 获取截图成功
CloudPlayerScreenshotStatusTimeout, // 获取截图超时
CloudPlayerScreenshotStatusInternalError, // 获取截图失败
};
/**
获取游戏截图
@param scale 图片压缩比例
@param screenshotBlock 截图获取结果回调
*/
- (void)captureScreenshot:(float)scale screenshotBlock:(HMCloudScreenshotBlock)screenshotBlock;
表6-19 参数说明
参数 | 类型 | 必填项 | 说明 |
---|---|---|---|
scale | float | 是 | 图片压缩比例(范围:0.01~1)。 例如:实例分辨率为 1280 * 720,则scale传入“0.5”,收到的截图大小为640 * 360 |
screenshotBlock | HMCloudScreenshotBlock | 是 | 截图获取结果回调。 result:是否获取到截图 data:截图二进制数据 status:获取截图状态 errorMsg:未获取到截图时返回错误原因 |
7 SDK 消息回调
可选择实现HMCloudPlayerDelegate代理。
函数原型:
- (void) cloudPlayerSceneChangedCallback:(NSDictionary *)dict;
- (void) cloudPlayerTouchBegan;
- (void) cloudPlayerUsageAuthorization:(HMCloudPlayerUsageAuthorization)type success:(void (^)(BOOL authorization))success;
- (void) cloudPlayerScreenCap:(NSDictionary *)dict;
- (void) cloudPlayerShared:(CloudPlayerShareType)shareType dataDict:(NSDictionary *)dataDict;
7.1 游戏视频界面点击回调
方法名为cloudPlayerTouchBegan,游戏视频界面被点击,可用于收起已经展开的非全屏设置界面。
函数原型:
(void) cloudPlayerTouchBegan;
7.2 场景切换回调
方法名为cloudPlayerSceneChangedCallback,回调参数字典说明:
{
"sceneId": "init",
"extraInfo": {}
}
表7-1 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
sceneId | NSString | 回调场景ID,取值及含义如下。 init:初始化场景 data:配置数据场景,如清晰度列表 prepare:准备云游戏场景 playerState:游戏过程中,状态变化场景 queue:排队场景 playingtime:游戏时长场景 resolution:播流清晰度场景 stastic:数据统计场景 maintance:服务器维护场景 |
extraInfo | NSDictionary | 场景ID对应的扩展信息 |
7.2.1 初始化场景
字典Key示例:
/**
state = success
*/
{
"sceneId": "init",
"extraInfo":
{
"state": "success"
}
}
/**
state = failed
*/
{
"sceneId": "init",
"extraInfo":
{
"state": "failed",
"errorCode": "100104001",
"errorCodeWithoutCid": "100104001"
}
}
表7-2 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
state = success | NSString | 初始化成功 |
state = failed | NSString | 初始化失败 |
errorCode | NSString | 初始化失败的errorCode |
errorCodeWithoutCid | NSString | 不包含cid的errorCode |
7.2.2 配置数据场景
字典Key示例:
/**
type = titleVideo
*/
{
"sceneId": "data",
"extraInfo":
{
"type": "titleVideo",
"data":
{
"name": "...",
"url": "...",
"version": "..."
}
}
}
/**
type = resolutions
*/
{
"sceneId": "data",
"extraInfo":
{
"type": "resolutions",
"data":
[
##清晰度列表##
]
}
}
/**
type = loadingTips
*/
{
"sceneId": "data",
"extraInfo":
{
"type": "loadingTips",
"data":
{
"revolveTime": 4000,
"tips":
[
##Tips列表##
]
}
}
}
/**
type = message
*/
{
"sceneId": "data",
"extraInfo":
{
"type": "message",
"data": "##消息内容##"
}
}
/**
type = speed
*/
{
"sceneId": "data",
"extraInfo":
{
"type": "speed",
"data":
{
"url": "...",
"time": 5,
"rateCoef": 1.0,
"standCoef": 0.8,
"skip": 0
}
}
}
表7-3 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
type = titleVideo | NSString | 片头信息 |
type = resolutions | NSString | 清晰度列表 |
type = loadingTips | NSString | Loading界面Tips,revolveTime为轮播时间,单位为ms |
type = message | NSString | 收到消息 |
type = speed | NSString | 测速信息配置,time为最大测速时长,单位为s |
7.2.3 准备云游戏场景
字典Key示例:
/**
state = success
*/
{
"sceneId": "prepare",
"extraInfo":
{
"state": "success"
}
}
/**
state = failed
*/
{
"sceneId": "prepare",
"extraInfo":
{
"state": "failed",
"errorCode": "100000001",
"errorCodeWithoutCid": "100104001"
}
}
表7-4 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
state = success | NSString | 准备成功,之后才可以调用play方法播流 |
state = failed | NSString | 准备失败 |
errorCode | NSString | 准备失败的errorCode |
errorCodeWithoutCid | NSString | 不包含cid的errorCode |
7.2.4 云游戏状态变化场景
字典Key示例:
/**
state = prepared
*/
{
"sceneId": "playerState",
"extraInfo":
{
"state": "prepared"
}
}
/**
state = videoVisible
*/
{
"sceneId": "playerState",
"extraInfo":
{
"state": "videoVisible"
}
}
/**
state = stopped
*/
{
"sceneId": "playerState",
"extraInfo":
{
"state": "stopped",
"stop_reason": "",
"open_api_release_instance" : "",
"errorCode": "200211005-716971087",
"errorCodeWithoutCid" :"200211005",
"errorMsg": "##错误描述",
"queues":
[
#参考排队场景说明#
],
}
}
/**
state = timeout
*/
{
"sceneId": "playerState",
"extraInfo":
{
"state": "timeout",
"tip": "##提示内容##"
}
}
/**
state = refreshSToken
*/
{
"sceneId": "playerState",
"extraInfo":
{
"state": "refreshSToken"
}
}
/**
state = playFailed
*/
{
"sceneId": "playerState",
"extraInfo":
{
"state": "playFailed",
"errorCode": "100000001-716971087",
"errorCodeWithoutCid" :"100000001"
}
}
/**
state = idcInfo
*/
{
"sceneId": "playerState",
"extraInfo":
{
"state": "idcInfo",
"idcId": "",
"idcName": "",
"instanceTag":"",
"instanceTagName":""
}
}
/**
state = storage
*/
{
"sceneId": "playerState",
"extraInfo":
{
"state": "storage",
"action": "",
"usablePercentage": "",
}
}
表7-5 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
state = prepared | NSString | 实例申请完成,继续显示Loading |
state = videoVisible | NSString | 视频第一帧到达 |
state = stopped | NSString | 云游戏结束。 stop_reason见下表。 当stop_reason为time_limit时,返回的extralInfo参数里会增加open_api_release_instance字段,此字段value为APP端调用openAPI释放实例时的原因,此value可能为空 |
state = timeout | NSString | 游戏时间到,结束游戏 |
state = refreshSToken | NSString | 刷新SToken,显示Loading |
state = playFailed | NSString | 调用play方法失败 |
state = idcInfo | NSString | IDC信息回调 |
errorCode | NSString | 失败时的errorCode |
errorCodeWithoutCid | NSString | 不包含cid的errorCode |
state = storage | NSString | rom存储信息回调 |
action | NSString | 存储信息action |
usablePercentage | NSString | 可使用存储率 |
表7-6 stop_reason取值说明
stop_reason 取值 | 说明 |
---|---|
normal | 正常结束 |
time_limit | 游戏时间到 |
no_operation | 无操作超时 |
instance_err | 实例出错 |
queue_limit | 排队人数过多,禁止排队 |
instance_crashed | 实例崩溃 |
in_maintance | 维护中,禁止游戏 |
multi_inst | 多开超出上限 |
token_expire | token失效 |
low_bitrate | 测速结果低于服务下限 |
url_timeout | 网络连接超时 |
internal_error | 内部错误 |
7.2.5 游戏时长场景
字典Key示例:
/**
state = prompt
*/
{
"sceneId": "playingtime",
"extraInfo":
{
"state": "prompt",
"second": 12000,
"title": "##时长提示##",
"countdown": 1
}
}
/**
state = totaltime
*/
{
"sceneId": "playingtime",
"extraInfo":
{
"state": "totaltime",
"second": 12000,
"title": "##总时长提示##"
}
}
/**
state = update
*/
{
"sceneId": "playingtime",
"extraInfo":
{
"state": "update",
"title": "##时长更新提示##"
}
}
表7-7 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
state = prompt | NSString | 游戏剩余时长提示 countdown==1,表示为倒计时显示 title中占位符为”|”,否则title为显示内容 second为游戏剩余时长,单位为s |
state = totaltime | NSString | 游戏总时长提示,second 为游戏总时长秒数 |
state = update | NSString | 游戏过程中,时长更新 |
7.2.6 播流清晰度场景
字典Key示例:
/**
type = crst
*/
{
"sceneId": "resolution",
"extraInfo":
{
"type": "crst",
"source": 1,
"des": 3,
"method": 1,
"title": "##提示##"
}
}
/**
type = cred
*/
{
"sceneId": "resolution",
"extraInfo":
{
"type": "cred",
"cur_rate": 1,
"result": 1,
"title": "##提示##"
}
}
/**
type = crtp
*/
{
"sceneId": "resolution",
"extraInfo":
{
"type": "crtp",
"minimum": 1,
"delay_less_minimum": 1,
"title": "##提示##"
}
}
/**
type = notify
*/
{
"sceneId": "resolution",
"extraInfo":
{
"type": "notify",
"cur_rate": 1
}
}
表7-8 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
type = crst | NSString | 开始切换清晰度。 source:当前清晰度ID des:目标清晰度ID method:1表示“自动“,0表示“手动” |
type = cred | NSString | 清晰度切换完成。 cur_rate:切换后的清晰度ID result:1表示“成功”,0表示“失败” |
type = crtp | NSString | 游戏卡断,建议用户切换清晰度。 minimum:是否已经在最低码率,1表示“是”, 0表示“否” |
type = notify | NSString | 播流清晰度通知 |
7.2.7 数据统计场景
字典Key示例:
/**
type = bandwidth
*/
{
"sceneId": "stastic",
"extraInfo":
{
"type": "bandwidth",
"value": 314704,
"frames":[]
}
}
/**
type = frames
*/
{
"sceneId": "stastic",
"extraInfo":
{
"type": "frames",
"value": 332
}
}
/**
type = decode
*/
{
"sceneId": "stastic",
"extraInfo":
{
"type": "decode",
"value": 9
}
}
表7-9 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
type = bandwidth | NSString | 带宽使用数据。 value:统计时段内字节数 frames:统计时段内最大N帧字节数 |
type = frames | NSString | 帧数统计数据。 value:统计时段内总帧数 |
type = decode | NSString | 解码耗时统计。 value:统计时段内平均解码耗时,单位ms |
7.2.8 排队场景
字典Key示例:
/**
state = confrim
*/
{
"sceneId": "queue",
"extraInfo":
{
"state": "confrim",
"title": "##排队提示##",
"index": 3,
"totalNum": 10,
"queues": []
}
}
/**
state = update
*/
{
"sceneId": "queue",
"extraInfo":
{
"state": "update",
"title": "##排队提示##",
"index": 3,
"totalNum": 10,
"second": 300,
"timeStr": “五分钟”,
"queues": []
}
}
/**
state = entering
*/
{
"sceneId": "queue",
"extraInfo":
{
"state": "entering",
"title": "##排队提示##"
}
}
表7-10 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
state = confrim | NSString | 提醒用户需要排队。 index:当前排队人数 queues:多队列排队信息 totalNum:排队总人数 |
state = update | NSString | 排队进度更新。 index:当前排队人数 second:预计剩余秒数 queues:多队列排队信息 totalNum:排队总人数 |
state = entering | NSString | 排队成功,即将进入游戏 |
表7-11 多队列排队数据项说明
字典Key | 类型 | 说明 |
---|---|---|
rank | NSInteger | 队列等级 |
index | NSInteger | 当前排队人数 |
totalNum | NSInteger | 排队总人数 |
second | NSInteger | 预计剩余秒数 |
timeStr | NString | 预计排队描述格式化的字符串 |
priorities | NSArray<NSNumber *> | 当前队列包含的用户优先级列表 |
7.2.9 维护场景
字典Key示例:
/**
progress = soon
*/
{
"sceneId": "maintance",
"extraInfo":
{
"progress": "soon",
"title": "##维护提示##",
"timeStr": "五分钟"
}
}
/**
progress = start
*/
{
"sceneId": "maintance",
"extraInfo":
{
"progress": "start",
"title": "##维护提示##"
}
}
/**
progress = inprogress
*/
{
"sceneId": "maintance",
"extraInfo":
{
"progress": "inprogress",
"title": "##维护提示##",
"timeStr": "五分钟"
}
}
/**
progress = done
*/
{
"sceneId": "maintance",
"extraInfo":
{
"progress": "done",
"title": "##维护提示##"
}
}
表7-12 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
progress = soon | NSString | 游戏中用户,收到即将维护的提示 |
progress = start | NSString | 开始维护 |
progress = inprogress | NSString | 维护中 |
progress = done | NSString | 维护完成 |
7.2.10 无输入提示场景
字典Key示例:
/**
state = remindtime
*/
{
"sceneId": "noinput",
"extraInfo":
{
"state": "remindtime",
"second": 12000,
"title": "##剩余时长提示##",
}
}
表7-13 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
state = remindtime | NSString | 在无输入情况下游戏剩余时长提示,title中占位符为 | ;否则title为显示内容。 second为游戏剩余时长,单位为s |
7.2.11 直播场景
字典Key示例:
/**
state = startSuccess
*/
{
"sceneId": "living",
"extraInfo":
{
"state": "startSuccess",
}
}
/**
state = startFailed
*/
{
"sceneId": "living",
"extraInfo":
{
"state": "startFailed",
"errorCode": "100000001",
"errorCodeWithoutCid":"100000001"
}
}
/**
state = stopSuccess
*/
{
"sceneId": "living",
"extraInfo":
{
"state": "startFailed",
}
}
/**
state = stopFailed
*/
{
"sceneId": "living",
"extraInfo":
{
"state": "startFailed",
"errorCode": "100000001",
"errorCodeWithoutCid":"100000001"
}
}
表7-14 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
state = startSuccess | NSString | 直播开始成功 |
state = startFailed | NSString | 直播开始失败 |
state = stopSuccess | NSString | 停止成功 |
state = stopFailed | NSString | 停止失败 |
7.2.12 控制权转移场景
字典Key示例:
/**
state = authcodeSuccess
*/
{
"sceneId": "control",
"extraInfo":
{
"state": "authcodeSuccess",
"authcode":"skjdksd"
"masterCid:"ijsdhkk"
}
}
/**
state = authcodeFailed
*/
{
"sceneId": "control",
"extraInfo":
{
"state": "authcodeFailed",
"errorCode": "200217001" ,
"errorCodeWithoutCid":"200217001",
"errorMsg":"服务异常,未生成授权码"
}
}
/**
state = loseControl
*/
{
"sceneId": "control",
"extraInfo":
{
"state": "loseControl",
"followCid":"d2434e",
"uid":"h33333"
}
}
/**
state = gainControlSuccess
*/
{
"sceneId": "control",
"extraInfo":
{
"state": "gainControlSuccess"
}
}
/**
state = gainControlFailed
*/
{
"sceneId": "control",
"extraInfo":
{
"state": "gainControlFailed",
"errorCode":"200217001",
"errorCodeWithoutCid":"200217001",
"errorMsg":"服务异常,未生成授权码"
}
}
表7-15 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
state = authcodeSuccess | NSString | 获取授权码成功 |
state = authcodeFailed | NSString | 获取授权码失败 |
state = loseControl | NSString | 失去控制 |
state = gainControlSuccess | NSString | 获取控制权成功 |
state = gainControlFailed | NSString | 获取控制权失败 |
7.3 系统隐私权限判断
方法名cloudPlayerUsageAuthorization,函数原型:
/**
系统隐私权限判断
@param type 隐私权限类型;
@param success 授权情况回调;
*/
- typedef NS_ENUM(NSInteger, HMCloudPlayerUsageAuthorization){
HMCloudPlayerUsageAuthorizationMicrophone = 0, //麦克风权限回调
HMCloudPlayerUsageAuthorizationCamera //相机权限回调
};
- (void) cloudPlayerUsageAuthorization:(HMCloudPlayerUsageAuthorization)type success:(void (^)(BOOL authorization))success;
表7-16 参数说明
参数 | 类型 | 说明 |
---|---|---|
HMCloudPlayerUsageAuthorization | HMCloudPlayerUsageAuthorization | HMCloudPlayerUsageAuthorizationMicrophone:麦克风权限 HMCloudPlayerUsageAuthorizationCamera:相机权限 |
success | Block | if(success){ success(isGranted); } isGranted为设备隐私权限授权结果,回调SDK |
7.4 游戏内截图通知回调
函数原型:
/**
游戏内截图通知
@param dict 通知内容;
*/
- (void) cloudPlayerScreenCap:(NSDictionary *)dict
表7-17 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
type | NSString | 截图类型 |
image_name | NSString | 截图名称 |
7.5 分享功能回调
函数原型:
typedef NS_ENUM(NSInteger,CloudPlayerShareType) {
CloudPlayerShareTypeQQ,
CloudPlayerShareTypeWeiBo,
CloudPlayerShareTypeWeiXin,
CloudPlayerShareTypeAndroid,
CloudPlayerShareTypeShareLink,
};
/**
分享功能回调
@param CloudPlayerShareType 分享类型;
@param dataDict 分享内容;
*/
- (void) cloudPlayerShared:(CloudPlayerShareType)shareType dataDict:(NSDictionary *)dataDict;
表7-18 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
shareType | CloudPlayerShareType | 分享类型,包括qq、微博、微信、android、shareLink |
dataDict | NSDictionary | 分享内容 |
表7-19 dataDict说明
字典Key | 类型 | 说明 |
---|---|---|
cid | NSString | 本次云玩cid |
bid | NSString | 本次云玩bid |
mid | NSString | 消息id |
action | NSString | 分享事件action |
componentName | NSString | Intent指定的组件 |
pkgName | NSString | intent指定包名,如系统分享指定包名进行分享 |
content | NSString | 分享的文本内容 |
fileList | NSArray | [/xxx/xxx/a.png,xxx/xxx/b.png],当分享图片的时候,由fileList返回,包含了每张图片的绝对路径信息,支持多张图片信息 |
scene | NSString | 微信分享的场景。 friend:微信好友分享 moment:微信朋友圈分享 android分享需传值 |
type | NSString | 分享事件的类型。 android_share:安卓系统分享事件 weixin_share:微信分享事件 weibo_share:微博分享事件 qq_share:QQ分享事件 |
shareType | NSString | 分享文件的属性。 SHARE_IMAGE_WITH_TEXT:图文 SHARE_IMAGE_ONLY:纯图片 SHARE_TEXT:纯文本 SHARE_VIDEO:视频 share_link:链接 |
title | NSString | 分享的标题 |
extraInfo | NSString | webUrl:链接分享 mimeType:系统分享 videoUrl:视频分享 share_qq_ext_str:扩展字段 |
7.6 照相机通知回调
函数原型:
typedef NS_ENUM(NSInteger,CloudPlayerPrivacyType) {
CloudPlayerPrivacyTypeCamera,
CloudPlayerPrivacyTypePhotosAlbum,
};
- (void)cloudPlayerPrivacy:(CloudPlayerPrivacyType)privacyType;
表7-20 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
CloudPlayerPrivacyTypeCamera | CloudPlayerPrivacyType | 打开照相机 |
CloudPlayerPrivacyTypePhotosAlbum | CloudPlayerPrivacyType | 打开相册 |
7.7 文件状态变化回调
函数原型:
typedef NS_ENUM(NSInteger, CloudPlayerDownlodFileEventStatus) {
CloudPlayerDownlodFileEventStatusUndefined, //未定义状态
CloudPlayerDownlodFileEventStatusCreateFile, //创建录屏文件
CloudPlayerDownlodFileEventStatusFinishFile, //录屏完成
CloudPlayerDownlodFileEventStatusListFile, //可下载文件列表
};
- (void)cloudPlayerDownloadFile:(CloudPlayerDownlodFileEventStatus)status dataDict:(NSDictionary *)dataDict;
表7-20 字典Key说明
字典Key | 类型 | 说明 |
---|---|---|
CloudPlayerDownlodFileEventStatusUndefined | CloudPlayerDownlodFileEventStatus | 未定义状态 |
CloudPlayerDownlodFileEventStatusCreateFile | CloudPlayerDownlodFileEventStatus | 创建录屏文件 |
CloudPlayerDownlodFileEventStatusFinishFile | CloudPlayerDownlodFileEventStatus | 录屏完成 |
CloudPlayerDownlodFileEventStatusListFile | CloudPlayerDownlodFileEventStatus | 可下载文件列表 |
dataDict | NSDictionary | 文件信息 |