【游戏技术分享 第12期】如何快速配置鸿蒙游戏服务转移能力?
背景简介
HarmonyOS游戏的账号资产(角色、区服信息、游戏进度等)不会自动转移至HarmonyOS NEXT系统下,华为平台把原系统(安卓)的玩家标识playerId/openId赋值给HarmonyOS NEXT游戏的玩家标识gamePlayerId。转移前后,华为账号不会发生变化,也不涉及开发者服务器和数据库层面的变动。
关键词
鸿蒙游戏、游戏转移、gamePlayerId、联合登录
配置APP ID映射关系
登录AppGallery Connect平台
在“我的项目”中选择项目及项目下的应用,左侧菜单选择“构建 > 游戏服务”,在右侧点击“新增配置”。

填写转移应用信息
HarmonyOS NEXT游戏的APP ID与原华为安卓渠道已上架的HarmonyOS游戏的APP ID建立映射。

| 信息项 | 说明 |
| HarmonyOS NEXT游戏APP ID | 请选择HarmonyOS NEXT游戏的APP ID。 |
| HarmonyOS游戏APP ID | 请选择对应原华为安卓渠道已上架的HarmonyOS游戏的APP ID。若HarmonyOS游戏未上架,请选择“不涉及”。 |
| 是否单机游戏 | 若游戏数据本地化存储,不依赖服务器,无法进行跨设备转移同步资产信息,则为单机游戏,请选择“是”,否则请选择“否”。 |
选择转移的玩家标识类型
“HarmonyOS游戏APP ID”选择“不涉及”,或单机游戏均不展示以下页面。

支持转移的玩家标识类型有以下几种:
| playerId | 若HarmonyOS游戏确认全部玩家均使用playerId作为玩家标识,请选择“playerId”。选择后,HarmonyOS NEXT游戏的玩家标识gamePlayerId=playerId。 |
| openId | 若HarmonyOS游戏确认全部玩家均使用openId作为玩家标识,请选择“openId”。选择后,HarmonyOS NEXT游戏的玩家标识gamePlayerId=openId。 |
| unionId | 若HarmonyOS游戏确认全部玩家均使用unionId作为玩家标识,建议选择“openId”。选择后,HarmonyOS NEXT游戏的玩家标识gamePlayerId=openId。此时,通过转换ID将gamePlayerId(openId)换取unionId,若unionId未在游戏侧找到玩家记录,则当前玩家为HarmonyOS NEXT游戏的新用户。 |
(可选)填写开发者服务器的回调地址

完成后点击“确定”提交APP ID映射关系的审批申请。
联合登录开发
初始化成功后,游戏可调用unionLogin接口进行联合登录,Game Service Kit向玩家展示联合登录面板。
| let context = getContext(this) as common.UIAbilityContext; let thirdAccountInfo1: gamePlayer.ThirdAccountInfo = { 'accountName': 'testName1', // 游戏开放给玩家接入的账号类型名字,例如“官方账号”、“xx账号”等,并不是具体某个玩家ID或开发者ID。 'accountIcon': $r('app.media.icon') // 游戏官方账号图标资源信息,注意unionLogin接口传参的所有图标总大小不要超过35KB。 }; let request: gamePlayer.UnionLoginParam = { showLoginDialog: true, thirdAccountInfos: [ thirdAccountInfo1 ] }; try { gamePlayer.unionLogin(context, request).then((result: gamePlayer.UnionLoginResult) => { hilog.info(0x0000, 'testTag', `Succeeded in logining: ${result?.accountName}`); }).catch((error: BusinessError) => { hilog.error(0x0000, 'testTag', `Failed to login. Code: ${error.code}, message: ${error.message}`); }); } catch (error) { let err = error as BusinessError; hilog.error(0x0000, 'testTag', `Failed to login. Code: ${err.code}, message: ${err.message}`); } |
UI测试体验
用户首次启动HarmonyOS NEXT游戏时,Game Service Kit向用户展示欢迎引导页。

用户点击“玩过本游戏”,Game Service Kit向用户展示联合登录面板。

用户点击“华为账号登录”,则进入登录的转移流程。
用户非首次启动HarmonyOS NEXT游戏时,Game Service Kit会延用上次的游戏登录方式(转移、关联、官方账号)。
若需要切换账号或者其他登录方式,重新调用unionLogin接口,将showLoginDialog参数设置为true,即可强制拉起联合登录面板,允许玩家重新选择华为账号登录(转移、关联)或游戏官方账号登录,如下图所示。

选择华为账号登录后,效果如下:

选择转移选项后,完成最后一步确认:

总结
转移登录流程方式登录完成之后,即可通过登录接口unionLogin回调中获取到账号标识gamePlayerId,该标识真实值等于在步骤1选择的原华为安卓渠道账号标识值,完成进度同步和资产转移即可。
- 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
- 如您发布的内容为转载内容,请注明内容来源。
我要发帖子





































苏公安网备 32011402010933号