12/12/2024 11:37:55
HMS(华为移动服务) 渠道说明
一、概述
HMS 即华为移动服务(Huawei Mobile Service)的简称。
HMS中,华为账号为开发者提供了简单、安全的登录授权功能,方便用户快捷登录。用户不必输入账号、密码和繁琐验证,就可以通过“华为账号登录”快速登录,即刻使用开发者的 app。
二、开发者平台配置
华为开发者平台的配置流程如下:
1.注册成为开发者
在开发应用前需要在 华为开发者联盟 网站上注册成为开发者并完成实名认证,具体方法可参考账号 账号注册认证 。
2.创建应用
参见AppGallery Connect帮助中心的 创建应用 章节创建应用,特殊配置如下:
- “软件包类型”:选择“APK(Android应用)”。
- “支持设备”:选择“手机”。
- “应用分类”:选择“应用”或“游戏”。
3.生成签名证书指纹
签名证书指纹用于在通过华为HMS SDK调用HMS Core(APK)时,校验应用的真实性。开发者在使用HMS Core(APK)前必须将签名证书指纹配置到华为开发者联盟,在配置前需要根据签名证书在本地生成签名证书指纹。在申请前需要满足以下2个条件:
- 已创建应用程序的签名证书,签名证书创建属于通用技术,此处不详细描述。
当前开发的PC已经安装JDK(JDK 1.8 及以上)。
然后通过如下命令查询签名证书的 SHA256 指纹:
keytool -list -v -keystore <keystore-file>
4.配置签名证书指纹
1、登录 AppGallery Connect 网站,选择“我的应用”。
2、找到对应应用产品,选择并点击“Android应用”链接,进入应用开发页面。
3、在“SHA256证书指纹”配置栏,输入 生成签名证书指纹 章节中生成的SHA256指纹。
4、配置完成后,点击旁边的对勾按钮。
5.根据 开通服务 文档给应用打开 HuaweiAccount 服务开关
6.下载最新的 agconnect-services.json 配置文件,备用
三、工程配置
3.1 Android 工程通用配置
权限配置,在 AndroidManifest.xml 中新增网络访问权限
<uses-permission android:name="android.permission.INTERNET"/>
在 MSDKConfig.ini 中新增如下配置,该配置用于标明是否使用游戏应用请求:
游戏类应用设置为 1,非游戏类应用设置为 0
[HMS 渠道配置] HMS_IS_GAME_APP = 1
Proguard 混淆配置:
-ignorewarnings -keepattributes *Annotation* -keepattributes Exceptions -keepattributes InnerClasses -keepattributes Signature -keepattributes SourceFile,LineNumberTable -keep class com.hianalytics.android.**{*;} -keep class com.huawei.updatesdk.**{*;} -keep class com.huawei.hms.**{*;}
将下载好的 agconnect-services.json 配置文件放到如下路径引入到工程中
- Unity - {Unity工程根目录}/Assets/StreamingAssets/agconnect-services.json
- UnrealEngine - {UnrealEngine工程根目录}/Source/ClientUETest/Resources/agconnect-services.json
四、功能说明
4.1 登录功能
- HMS 登录要求用户手机上有华为移动服务,如果没有则会提示需要安装,错误码为15。
五、常见问题
5.1 在 UE4.23 及以上版本,编译 Android APK 报 minSdkVersion 设置过小的问题
- MSDKHMS 的 AndroidManifest.xml 文件已经添加了如下配置来解决这个问题
<uses-sdk tools:overrideLibrary="com.huawei.hmf.tasks, com.huawei.android.hms.hwid, com.huawei.android.hms.base, com.huawei.hms.base.availableupdate, com.huawei.hms.stats, com.huawei.hms.base.ui, com.huawei.hms.base.device, com.huawei.hms.log, com.huawei.agconnect.core" />
- 但是在 UE4.23 上这个配置未被识别,游戏可以在项目的根 AndroidManifest.xml 或者 APL.xml 文件中去手动添加配置来解决,APL 文件参考示例(以下配置包含了XG华为厂商推送的依赖):
<androidManifestUpdates> <addElements tag="manifest"> <uses-sdk tools:overrideLibrary="com.huawei.hmf.tasks,com.huawei.android.hms.hwid,com.huawei.android.hms.base,com.huawei.hms.base.availableupdate,com.huawei.hms.stats,com.huawei.hms.base.ui,com.huawei.hms.base.device,com.huawei.hms.log,com.huawei.agconnect.core,com.huawei.android.hms.push,com.huawei.android.hms.openid" tools:ignore="MultipleUsesSdk" xmlns:tools="http://schemas.android.com/tools"/> </addElements> </androidManifestUpdates>
All rights reserved.