一、HMS SDK4.0开发前期参数准备
1、打开华为开发者管理中心:链接: 华为开发者管理中心.
按照截图上选择AppGallery Connect
2、打开AppGallery Connect 链接: AppGallery Connect
打开选项中-我的项目,如果没有就创建自己的项目
3、需要的参数
(1)、包名、APP_ID、API_KEY 、APP_KEY、证书指纹、CP_ID、agconnect-services.json
(2)、支付公钥
(3)、游戏公钥、游戏私钥
4、其他
(1)服务端支付验签参考:https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/iap-verifying-signature-returned-result-v4
(2)游戏服务校验登录签名参考:https://developer.huawei.com/consumer/cn/doc/development/HMS-References/verify-login-signature
二、问题汇总(持续更新中)
1、createPurchaseIntentWithPrice 报 -1: IAP_APP_NOT_EXISTED
解决方法:
需要在AGC上打开相关IAP服务的,按照这个文档:https://developer.huawei.com/consumer/cn/doc/distribution/app/agc-enable_service
注意开通服务后,支付验证签名的密钥也在这里,记得更新密钥,不然也会导致支付失败
2、HMS SDK4.0游戏浮标(EMUI9.1以上)不显示的问题
解决方法:
(1)确认是否是EMUI 9.1及以上版本,在9.1以上版本终端测试浮标功能,需要通过“设置-应用-应用助手-游戏空间”将应用加入游戏空间中。
(2)确认是否添加混淆文件
注意:9.1以上的浮标和9.1以下的浮标显示不一样,这不是bug
3、防沉迷和实名认证
(1)防沉迷
防沉迷中提供了submitPlayerEvent上报玩家进入游戏事件,返回了sessionId,sessionid可以用来查询getPlayerExtraInfo接口,该接口返回玩家附加信息,包含是否成年。但是比较坑的是当你未实名或者是已成年的时候,无法触发华为的防沉迷机制,因此submitPlayerEvent接口会直接异常报错7022(//该用户为成年用户或未实名,不支持实名时长统计功能。)这样就无法正确的得到sessionid,同样也就无法使用getPlayerExtraInfo接口来查询玩家的实名信息,巨坑啊
(2)实名认证:参照demo使用getPlayerCertificationInfo接口查询。如果遇到已实名但是返回仍然是-1(未实名),请检查下实名验证方式中是否有任意一个已验证,我这边遇到的问题就是账号显示已经实名,但是我的实名验证方式没有任何一个验证,因此华为这边返回的是我未实名。添加任何一种验证方式即可(身份证或者银行卡)
注意:实名认证页面的拉起是HMS SDK处理的,开发者不需要做额外的操作。
实名政策刚开始执行,这个功能现阶段还没有开放给新开发的游戏进行测试。对于已上架的游戏,考虑到现有用户的体验,现阶段实名认证功能通过后台控制正在分阶段放开。
如果您的应用已上架,并且需要马上开通实名认证的功能,可以跟华为的运营人员联系优先处理。以上是华为的回复,就是说4.0的实名制是不需要游戏单独实现的,需要开启强实名需要发邮件到指定邮箱,详细看官网api
4、接入HMS 4.0自检apk浮标和登录告警
解决方法:如果缺人浮标和登录是显示正常。检查下混淆文件是否添加。如果已添加可忽略警告继续提交
三、错误码自查
1、登录状态码
具体参照:游戏登录通用错误码: loginstatus link.
详细解决见上面链接(官方文档的链接)
public static final int SIGN_IN_SUCCESS = 0;
public