ITPub博客

首页 > 移动开发 > ANDROID > 通过Unity集成Huawei Game Service 并获取玩家标识信息

通过Unity集成Huawei Game Service 并获取玩家标识信息

原创 ANDROID 作者:华为开发者论坛 时间:2021-07-02 11:20:23 0 删除 编辑

背景描述

近期,发现Unity 发布了配套Huawei Game Service SDK 5.0.4.302 版本的demo ,试水测试一把这个版本提供的新能力,写个帖子同步给大家啦。

  • Demo 下载地址:

https://github.com/Unity-Technologies/HuaweiServiceSample

  • 变更说明:

    看了下,unity 之前发布支持了华为Game Service SDK4.0.1.300 版本的插件,这次Unity 直接更新支持到Game Service SDK5.0.4.302 版本

    unity 这次变更如下:

  • 新增 GetGamePlayer 和 GetGamePlayer(bool isRequirePlayerId) 两个接口,以实现获取游戏玩家唯一标识。

  • 新增 SetGameTrialProcess   ,防沉迷试玩能力的接口监听。

  •   新增 AccountAuthParamsHelper   ,支持开发者获取华为帐号更多的信息,比如 openId , unionId , email 之类信息。

  • Player 对象新增了 OpenId ,  UnionId ,  AccessToken   和   OpenIdSign 字段。

  • 增加 AppPlayerInfo   接口去保存当前玩家信息。

如果想了解上述更详细的变更说明,可以参考华为的game Services SDK 版本更新说明:

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/version-change-history-0000001050123471

 

接口验证测试

这里直接执行的Unity 的demo ,这里如果您不会打包运行demo ,推荐参考这篇帖子:

手把手教您快速运行 Unity 提供的华为游戏 demo

AccountAuthParamsHelper  

查看C# 源码,可以发现Unity 当前支持通过如下方式设置请求授权:

AccountAuthParamsHelper authParamsHelper =  new  AccountAuthParamsHelper();       authParamsHelper.SetAuthorizationCode().SetAccessToken().SetIdToken().SetUid().SetId().SetEmail().CreateParams();

这里请求授权的有:  AuthorizationCode、AccessToken、IdToken、Uid、Id、Email等授权。

这个和华为侧文档描述也基本一致,当然我们可以按照我们的业务需求自行设置:

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/dev-guide-account-0000001050048888

操作:点击Login>login 按钮

现象:

勾选email ,点击同意授权,界面会提示欢迎框,相关信息获取如下:

可以发现:openId 、unionId 、AccessToken 、AuthorizationCode 、IdToken 均可获取到。

 

但是email 没有获取,这里我在授权页面也勾选了email ,为什么没有获取到呢? 后来联系华为技术支持,发现我登录的华为帐号本身就没有填写email 地址,自然是获取不到的,大家可以到华为手机设置》华为帐号中心》帐号与安全》邮箱地址下查看,这里确实没有绑定。

大家实际绑定一个邮箱,就可以获取到了,绑定后调测如下:

 

Uid 获取不到是正常的,这个和华为侧技术支持核实,该uid 目前暂未对外开放。

这里可以看到这个最新的Unity 插件版本,已经支持可以获取华为帐号的多个信息,如果游戏想要使用华为帐号的unionId 或者openId 等信息作为玩家唯一标识,也是可以的。

GetGamePlayer

该接口映射的是华为Game Service SDK5.0.4.302 版本的 getGamePlayer 接口,按照华为官网描述,该接口获取的player 对象只有displayName 、openId 、unionId 、accessToken 有值。这里我自测了下。

操作:点击Player>getGamePlayer 按钮

现象:

可以看到,这个和华为侧的文档描述要求一致,返回的信息中只有:displayName 、openId 、unionId 、accessToken 有值。

GetGamePlayer(bool isRequirePlayerId)

该接口映射的是华为Game Service SDK5.0.4.302 版本的 getGamePlayer(boolean isRequirePlayerId) 接口,支持同时获取playerId 和openId

操作:点击Player>getGamePlayer(isRequirePlayerId)

现象:

这个和华为侧要求也一致。

GetGamePlayer 和 GetGamePlayer(bool isRequirePlayerId) 接口的使用说明

关于这两个接口的详细使用说明,我这里参考了华为的官方文档,大家也可以参考下。

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/version-change-history-0000001050123471-V5

setGameTrialProcess

这个接口看华为官网介绍,发布中国大陆的游戏因为要满足中国大陆的游戏防沉迷要求,所以需要接入,我这边项目因为都发布海外,暂时不需要,另外调测这个接口需要向华为运营申请,所以我这里就不测试了。

AppPlayerInfo  

保存玩家savePlayerInfo 接口时需要使用,这里我们项目都是自己管理保存我们的玩家信息,没有使用华为的这个接口,所以也不做测试了。

测试小结

可以发现,unity 这个版本的插件,较上个版本的Game Service SDK4.0.1.300 版本,最重要的变化点:

1.    支持我们自行设置华为帐号信息授权的范围,比如获取openId 、unionId 、email 等信息。

2.    华为Game Service SDK5.0.4.302 版本开始,支持以前通过getCurrentPlayer 接口获取playerId 作为玩家唯一标识的游戏,将playerId 替换为openId 或unionId ,因此新增了getGamePlayer 接口,这个unity 目前也支持该能力。

3.    支持了发布中国大陆的游戏试玩能力,即setGameTrialProcess 。


原文链接: https://developer.huawei.com/consumer/cn/forum/topic/0203465508761300118?fid=0101271690375130218

原作者:Mayism

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69970551/viewspace-2779380/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-04-21

  • 博文量
    402
  • 访问量
    726986