2.2.1 获取云手机列表
参考《云手机API参考》的“查询云手机列表”章节获取云手机列表。
接口示例
GET https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones?
phone_name={phone_name}&server_id={server_id}&status={status}&offset={offset}&limit={limit}&type={typ e}Header:
Content-Type: application/json X-Auth-Token: $token
其中,
● CPH Endpoint为Endpoint列表中CPH对应区域的终端节点,如华北-北京四为 cph.cn-north-4.myhuaweicloud.com。
● project_id为云手游服务器所属区域对应的项目ID,如
083e9f825e80f50c2f96c0045edc70e8。可通过如下方式获取:
a. 登录管理控制台。
b. 单击右上角用户名下的“我的凭证”。
c. 在“API凭证”页面的项目列表中获取项目ID。
图2-1 获取项目 ID
● URL中"?"之后的部分为可选参数。
● $token为获取token接口的响应结果。
接口使用示例
GET https://cph.cn-north-4.myhuaweicloud.com/v1/083e9f825e80f50c2f96c0045edc70e8/cloud-phone/
phones Header:
Content-Type: application/json X-Auth-Token: $token
说明
$token需要换成实际获取到的token值;此处未指定phone_name、server_id等参数信息。
2.2.2 为单台云手机安装应用
参考《云手机API参考》的“安装apk”章节为单台云手机安装应用。
前提条件
● 云手游服务器所在Region的OBS桶中已经存放好对应的APK安装包。否则,需要 上传安装包,可参考https://support.huaweicloud.com/qs-obs/
obs_qs_0002.html进行上传。
● 确保已经配置好OBS桶的授权策略,具体操作请参考读取OBS桶数据资源章节。
接口示例
POST https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones/commands Header:
Content-Type: application/json X-Auth-Token: $token Body:
{ "command": "install",
"content": "-t -r obs://{bucket_name}/{object_path}", "phone_ids": [
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
] }
其中,
● CPH Endpoint、project_id、$token等参数取值可以参考获取云手机列表章节的 说明获取。
● bucket_name为对象存储服务OBS的桶名,object_path为游戏apk安装包的存放 路径。
● phone_ids为需要安装应用的云手机ID(通过获取云手机列表获得,可以填多个,
填多个则为多台云手机安装apk应用)。
接口使用示例
POST https://cph.cn-east-3.myhuaweicloud.com/v1/081ceeb7fb800f0c2f4cc004bb39c2f7/cloud-phone/
phones/commands
Content-Type: application/json X-Auth-Token: $token { "command": "install",
"content": "-t -r obs://yzw-apk-install/apk/com.hermes.bgame.apk", "phone_ids": [
"bdc2f2e960164dd9a2765374afeea300"
] }
● yzw-apk-install为OBS桶名,apk/com.hermes.bgame.apk为安装包存放路径,
obs://yzw-apk-install/apk/com.hermes.bgame.apk为游戏安装包全路径。
最佳实践 2 云手游接入最佳实践
● $token需要换成实际获取到的token值。
2.2.3 生成应用版本 tar 包并推至 OBS 桶
前提条件
● 需确保云手机已安装对应的应用。
● 确保已配置好OBS桶的授权策略,具体操作请参考向OBS桶上传数据资源章节。
接口示例
POST https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones/batch-storage Header:
Content-Type: application/json X-Auth-Token: $token Body:
{ "storage_infos": [{
"phone_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "include_files": [
"bucket_name": "${bucket_name}",
"object_path": "apk/${package_name}_${version_name}.tar"
}]
}
其中,
● CPH Endpoint、project_id、$token、bucket_name、object_path等参数可以参 考为单台云手机安装应用章节的说明获取。
● package_name为当前应用的包名,version_name为当前应用的版本号(可自定 义)。
● object_path为游戏tar包上传的目的路径(注意:apk为任意已存在文件夹,$
{package_name}_${version_name}.tar中除.tar后缀外,其余内容需根据实际名称 来修改)。
● 如上示例中,include_files的四个元素为固定路径。
● 如果该游戏的安装包为xapk类型,则需要在include_files中增加“/data/
media/obb/${package_name}”路径。
● phone_id为安装了对应游戏的云手机ID。
2.2.4 部署应用
推送tar包至服务器,即将文件“apk/${package_name}_${version_name}.tar”推送 到服务器(${server_id1}和${server_id2})的共享存储中。
接口示例
POST https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones/share-files Header:
Content-Type: application/json X-Auth-Token: $token Body:
{ "bucket_name":${bucket_name},
"object_path": "apk/${package_name}_${version_name}.tar",
● CPH Endpoint、project_id、$token、bucket_name、object_path等参数可以参 考4.2 为单台云手机安装应用的说明获取。
● package_name为当前应用的包名,version_name为当前应用的版本号(可自定 义)。
● object_path为游戏tar包上传的目的路径。
说明
apk为任意已存在文件夹,${package_name}_${version_name}.tar中除.tar后缀外,其余 内容需根据实际名称来修改。
● server_ids为部署应用版本的目标服务器ID列表,可以填写多个,服务器ID可通过
“查询云手机服务器列表”接口获得。
POST https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones/share-files Header:
Content-Type: application/json X-Auth-Token: ${token}
Body:
{ "file_paths": [
"/data/app/${package_name}-1", "/data/app/${package_name}-2", "/data/data/${package_name}",
"/data/media/0/Android/data/${package_name}"
], 含:"/data/app/${package_name}-1", "/data/app/${package_name}-2", "/
data/data/${package_name}", "/data/media/0/Android/data/$
{package_name}"。
其中,
最佳实践 2 云手游接入最佳实践
– CPH Endpoint、project_id、$token等参数可以参考为单台云手机安装应用 的说明获取。
– file_paths的内容等同于生成应用版本tar包并推至OBS桶中的include_files,
其中package_name为当前应用的包名。
– server_ids为部署应用版本的目标服务器ID列表,可以填写多个,服务器ID可通 过“查询云手机服务器列表”接口获得。
为了方便用户快速开发云手游业务,我们推出了云手游SDK(Software Development Kit)。SDK是对云手游服务提供的API接口的封装,以简化用户的开发工作。直接调用 云手游SDK提供的接口函数即可实现接入云游戏的目的。
Android SDK提供aar包和jar包两种接入方式:
● aar包接入:在jar包接入的基础上,SDK中集成了云游戏运行所需的Activity,
Activity的生命周期在SDK中维护。
● jar包接入:SDK提供云游戏接入的基础能力,客户实现activity或fragment,启动 游戏时将承载云游戏渲染画面的viewgroup传入SDK。
import com.huawei.cloudappsdk.manager.CloudAppManager;
在调用接口前设置ApplicationContext:
CloudAppManager.defaultManager().setApplicationContext(getApplicationContex t());
使用 JAR SDK
在调用SDK接口的类文件中导入:
import com.huawei.cloudgame.api.CloudGameManager;
import com.huawei.cloudgame.api.ICloudGame;