透過Unity整合Huawei Game Service 並獲取玩家標識資訊

華為開發者論壇發表於2021-07-02

背景描述

近期,發現Unity 釋出了配套Huawei Game Service SDK 5.0.4.302 版本的demo ,試水測試一把這個版本提供的新能力,寫個帖子同步給大家啦。

  • Demo 下載地址:

  • 變更說明:

    看了下,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部落格 ” ,連結:http://blog.itpub.net/69970551/viewspace-2779380/,如需轉載,請註明出處,否則將追究法律責任。

相關文章