# 推送业务 (HMS) ## 业务介绍 华为推送服务(Push Kit)是华为为您提供的消息推送平台,建立了从云端到终端的消息推送通道。您通过集成推送服务可以实时推送消息到用户终端,构筑良好的用户关系,提升用户的感知度和活跃度。 ### 使用场景 |
MainGradleTemplate.gradle
中添加配置。
```
allprojects {
buildscript {
repositories {**ARTIFACTORYREPOSITORY**
google()
jcenter()
maven { url 'https://developer.huawei.com/repo/' }
}
dependencies {
// If you are changing the Android Gradle Plugin version, make sure it is compatible with the Gradle version preinstalled with Unity
// See which Gradle version is preinstalled with Unity here https://docs.unity3d.com/Manual/android-gradle-overview.html
// See official Gradle and Android Gradle Plugin compatibility table here https://developer.android.com/studio/releases/gradle-plugin#updating-gradle
// To specify a custom Gradle version in Unity, go do "Preferences > External Tools", uncheck "Gradle Installed with Unity (recommended)" and specify a path to a custom Gradle version
classpath 'com.android.tools.build:gradle:3.4.0'
classpath 'com.huawei.agconnect:agcp:1.2.1.301'
**BUILD_SCRIPT_DEPS**
}
}
repositories {**ARTIFACTORYREPOSITORY**
google()
jcenter()
flatDir {
dirs "${project(':unityLibrary').projectDir}/libs"
}
maven { url 'https://developer.huawei.com/repo/' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
```
3. 启用并对app gradle文件添加配置
进入 **Edit -> Project Settings -> Player -> Android(icon) -> Publishing Settings -> Build**,启用 **Custom Launcher Gradle Template** 并在 `launcherTemplate.gradle` 中添加依赖。路径为 `Assets/Plugins/Android/LauncherTemplate.gradle`。
如果您的Unity版本低于**2019.2(含)**, 则需要在 MainGradleTemplate.gradle
中添加配置。
```
dependencies {
implementation project(':unityLibrary')
implementation 'com.huawei.hms:ads-lite:13.4.29.303'
implementation 'com.huawei.hms:ads-consent:3.4.30.301'
implementation 'com.huawei.hms:push:4.0.3.301'
implementation 'com.huawei.hms:hianalytics:5.1.0.300'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.huawei.hms:hianalytics:5.0.0.301'
implementation 'com.huawei.agconnect:agconnect-core:1.2.0.300'
implementation 'com.huawei.hms:base:4.0.1.300'
implementation 'com.huawei.hms:hwid:4.0.1.300'
implementation 'com.huawei.hms:game:4.0.1.300'
}
```
4. 使用并对unity library gradle文件进行以下设置
进入 **Edit -> Project Settings -> Player -> Android(icon) -> Publishing Settings -> Build**,启用 **Custom Main Gradle Template** 并在 `mainTemplate.gradle` 中添加依赖。路径为 `Assets/Plugins/Android/mainTemplate.gradle.gradle`。
如果您的Unity版本低于**2019.2(含)**, 则需要在 MainGradleTemplate.gradle
中添加配置。
```
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.huawei.hms:hianalytics:5.0.0.301'
implementation 'com.huawei.agconnect:agconnect-core:1.2.0.300'
implementation 'com.huawei.hms:base:4.0.1.300'
implementation 'com.huawei.hms:hwid:4.0.1.300'
implementation 'com.huawei.hms:game:4.0.1.300'
**DEPS**}
```
5. 创建Signature
进入 **Edit -> Project Settings -> Player -> Android(icon) -> Publishing Settings -> Keystore Manager**, 点击 **Keytore... -> create new**
![Images/hms/Keystore.png](Images/hms/Keystore.png)
您需要在打开unity时设定并输入密码,否则将无法构建。无需在 gradle 中添加signature。
6. 签署证书指纹
参照华为[HMS Core集成准备 Step4](https://developer.huawei.com/consumer/cn/codelab/HMSPreparation/index.html#3) 生成SHA256证书指纹
![Images/hms/Fingerprint.png](Images/hms/Fingerprint.png)
参照华为[HMS Core集成准备 Step5](https://developer.huawei.com/consumer/cn/codelab/HMSPreparation/index.html#4)在AppGAllery Connect里添加指纹。
![Images/hms/FingerprintAppGallery.png](Images/hms/FingerprintAppGallery.png)
7. 设置package name,及其他设置
进入 **Edit -> Project Settings -> Player**设置package name。
package name格式为 `com.${Company Name}.${Product Name}`
同时也可以在此步骤完成其余的所需设置,比如您的应用版本号、应用的图标、设置显示的分辨率等。
![Images/hms/PackageName.png](Images/hms/PackageName.png)
8. `Agconnect-services.json`
我们还需要从华为开发者账号内下载这个json文件,加入所需信息后,放到 `Assets/Plugins/Android` 路径下。
从华为开发者账号内下载此json 文件并在其中加以下信息。同样的,您可以在我们的[示例项目文件](https://github.com/Unity-Technologies/HMSSDKSample/blob/master/Assets/Plugins/Android/agconnect-services.json)中直接参考!
```
"agcgw":{
"backurl":"connect-drcn.dbankcloud.cn",
"url":"connect-drcn.hispace.hicloud.com"
},
```
当我们使用“分析服务”、“推送服务”、或“定位服务”时,必须配置 `agconnect-services.json` 文件。
参考 [链接](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/android-config-agc-0000001050170137) 以创建`agconnect-services.json`
![Images/hms/AgcConnectServicesJson.png](Images/hms/AgcConnectServicesJson.png)
9. 获取activity
可以用 `Common.GetActivity()`函数来获取activity。
## SDK集成开发
### SDK开发
HMS 套件中共包括4个功能服务,在[示例项目](https://github.com/Unity-Technologies/HMSSDKSample)中都有相应的示例场景。 为了进行测试,您需要通过HMS将其构建到Android移动版上。 确保已创建HMS帐户和项目。 然后,您就可以更改配置并测试不同的功能。
![Images/hms/Step4.png](Images/hms/Step4.png)
在示例项目中,推送服务对应的场景是: `Assets/HuaweiServiceDemo/Scenes/HmsPushSampleScene.unity` 而对应的代码是: `Assets/HuaweiServiceDemo/demo/test/PushTest.cs`.
我们需要设置的服务
1. 实现 `IPushServiceListener`接口
2. 通过 `PushListenerRegister.RegisterListener`方法得到 Receiver
3. 将下列代码添加到`AndroidManifest.xml`
```