SDK接入和初始化
1 SaaS SDK是什么?
海马云游戏SDK是为移动应用提供的一个完善的云游戏能力的系统解决方案。通过接入海马云游戏SDK,可以实现云游戏的播放、停止、状态回调等各类控制操作和数据交互,在海马云游戏端到端全栈云服务能力基础上,为用户带来顺畅的云游戏体验。
2 集成 iOS SDK
云玩 SDK 为 HMCloudPlayerCore.framework
- SDK 系统支持条件 iOS 10.0 及以上
- SDK 接入后需使用真机运行,不支持模拟器
- SDK 演示demo 请使用自己的开发者账号和bundleid 到真机演示
- SDK 中使用 http 请求的,请在 App Demo 中 info.plist 添加 App Transport Security Settings –> Allow Arbitrary Loads -> YES
- SDK 支持webrtc流,请在自己的应用中增加麦克风,照相机权限。info.plist 添加Privacy->Camera Usage Description, Privacy->Microphone Usage Description
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 连接信息 AUTH / Countly / Link
@return 是否成功 //参数类型非法,或者已经请求过SAAS地址,均返回失败。
*/
- (BOOL) config:(NSDictionary *)info;
参数说明
参数 | 类型 | 说明 |
---|---|---|
info | NSDictionary | 连接地址信息 |
Info 字典中,有效 Key 含义说明如下:
参数 | 类型 | 说明 |
---|---|---|
CloudGameConfigKeyAuthURL | NSString | SAAS AUTH请求地址 |
CloudGameConfigKeyLinkURL | NSString | SAAS WS长连接地址 |
CloudGameConfigKeyCountlyURL | NSString | 数据上报地址 |
3.4 注册 SDK
/**
向海马云端注册
@param accessKeyID 接入商ID
@param channelId 接入商渠道ID
@param launchOptions AppLauchuOptions
@return 是否正常进行注册,最终注册结果异步返回
*/
- (BOOL) registCloudPlayer:(NSString *)accessKeyID
channelId:(NSString *)channelId
options:(NSDictionary *)launchOptions;
参数 | 类型 | 说明 |
---|---|---|
accessKeyID | NSString | 接入商唯一ID |
channelId | NSString | 渠道号,由接入商配置。如果应用本身不区分渠道,可以设置为一个随机值的字符串 |
options | NSDictionary | iOS App启动选项,在 didFinishLaunching 方法中由系统传入 |
3.5 准备游戏
接口会返回一个UIViewController, APP 需通过 present 或 push 方法将其展示在界面上。
/**
准备游戏
@param options 游戏参数
@return 云游戏ViewController
*/
- (UIViewController *) prepare:(NSDictionary *)options;
参数说明
参数 | 类型 | 说明 |
---|---|---|
options | NSDictionary | 游戏信息 |
options 字典中,有效 Key 含义说明如下:
参数 | 类型 | 说明 | 选项 |
---|---|---|---|
CloudGameOptionKeyId | NSString | 游戏包名称 | 必选 |
CloudGameOptionKeyOrientation | NSNumber | 游戏屏幕方向0-横屏 1-竖屏 | 必选 |
CloudGameOptionKeyUserId | NSString | 游戏客户端用户的唯一识别码,如果没有用户登陆账号,可以随机生成长度在64以内的字符串,但需要每台客户端上的账号保证唯一性 | 必选 |
CloudGameOptionKeyUserToken | NSString | 用来校验userId的有效性,如果userId为随机生成,UserToken也可以随机生成 | 必选 |
CloudGameOptionKeyUserType | NSString | 用户类型:超级账号用户传5,其他传0;默认为0 | 必选 |
CloudGameOptionKeyConfigInfo | NSString | 免登使用,如果不需要免登功能,传任意非空字符串 | 必选 |
CloudGameOptionKeyCToken | NSString | 用来校验参数的有效性 | 必选 |
CloudGameOptionKeyPriority | NSNumber | 用户申请游戏服务的优先级,默认写0;数值越大,优先级越高 | 必选 |
CloudGameOptionKeyPlayingTime | NSNumber | 用户可以玩游戏的时长,单位是ms | 必选 |
3.6 开始游戏
/**
开始游戏
*/
- (void) play;