您尚未登录

登录

您尚未登录

登录

推荐您使用PC浏览器访问

确定
  • 开发者中心
  • >
  • 云游戏
  • >
  • SDK开发指南
  • >
  • 云游戏基础SDK
  • >
  • iOS
  • >
  • v6.14

文档版本号: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 项目

  1. 打开Xcode并点击Create a new Xcode project。
  2. 选择项目类型为Single View App,并点击Next。
  3. 输入项目信息,如项目名称、开发团队信息、组织名称和语言,并点击Next。
  4. 选择项目存储路径,并点击Create 。
  5. 将iOS设备连接至电脑。
  6. 进入TARGETS→Project Name→General→Signing菜单,选择Automatically manage signing,并在弹出菜单中点击Enable Automatic。

2.2 下载集成 SDK

  1. 前往SDK下载页面,获取最新版的海马云SDK,然后解压出HMCloudPlayerCore.framework,HMWebRTC.framework。
  2. 将HMCloudPlayerCore.framework(不要修改SDK名字)复制到项目文件夹下。
  3. HMWebRTC为webrtc流依赖库,将HMWebRTC.framework复制项目文件夹下。
  4. 打开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手柄键值

5.35 X86支持pc鼠标模式

使用此方法可开启鼠标模式。依赖iphone手机设置->辅助功能->触控->辅助触控->开启,连接外接鼠标。

函数原型:

/**
 将鼠标模式切换成pc模式
 仅x86游戏使用
 @param model true pc模式  false 移动端模式
 */
- (BOOL)convertToPcMouseModel:(BOOL)model;

6 进阶API

6.1 存档进度查询接口

查询游戏存档进度。

函数原型:

/**
 游戏存档进度查询

 @param userId 必填
 @param userToken 必填
 @param pkgName 必填
 @param appChannel 选填
 @param accessKeyId 指定accessKeyId
 @param success 查询成功的回调
 @param fail 查询失败的回调
 @return 是否开始查询
 */
- (BOOL) gameArchiveQuery:(NSString *)userId userToken:(NSString *)userToken pkgName:(NSString *)pkgName appChannel:(NSString *)appChannel accessKeyId:(NSString *)accessKeyId success:(void (^)(BOOL finished))success fail:(void (^)(NSString *errorCode))fail;

- (BOOL) gameArchiveQuery:(NSString *)userId userToken:(NSString *)userToken pkgName:(NSString *)pkgName appChannel:(NSString *)appChannel success:(void (^)(BOOL finished))success fail:(void (^)(NSString *errorCode))fail;

表6-1 参数说明

字段 键值 说明
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 文件信息
×

本篇文章对你是否有帮助?

更多建议

请输入您的建议