简介

推送服务(Push Kit)是华为为开发者提供的消息推送平台,建立了从云端到终端的消息推送通道。开发者通过集成Push Kit可以实时推送消息到用户终端应用,构筑良好的用户关系,提升用户的感知度和活跃度。

为此,开发者需要:

您将建立什么

在这个Codelab中,你将使用已经创建好的Demo实现对推送服务的API调用。通过Demo,您可以体验到:

您将会学到什么

在这个Codelab中,您可以学到:

硬件要求

软件要求

需要的知识点

Android基础开发能力。

集成HUAWEI HMS Core能力,需要完成以下准备工作:

具体操作,请按照《配置AppGallery Connect》中详细说明来完成。

添加当前应用的AppGallery Connect配置文件

  1. 登录AppGallery Connect网站,点击"我的项目"。
  2. 在项目列表中找到您的项目,在项目中点击需要集成HMS Core SDK的应用。
  3. 在"项目设置 > 常规"页面的"应用"区域,点击"agconnect-services.json"下载配置文件。
  4. 将"agconnect-services.json"文件拷贝到Android Studio开发工程app的根目录下。

配置HMS Core SDK的Maven仓地址

Android Studio的代码库配置在Gradle 插件7.0以下版本、7.0版本和7.1及以上版本有所不同。请根据您当前的Gradle 插件版本,选择对应的配置过程。

7.0以下版本

7.0版本

7.1及以上版本

添加编译依赖

  1. 打开应用级的build.gradle文件。
  2. 在"dependencies"中添加如下编译依赖。。
    dependencies { // Add the following line implementation 'com.huawei.hms:push:{version}' }
  3. 添加AGC插件配置。

    • Android Studio 4.0之前版本,在文件头apply plugin: ‘com.android.application'下一行添加如下配置。
      apply plugin: 'com.huawei.agconnect'
    • Android Studio 4.0及之后版本,在"plugins"中添加如下配置。
      plugins { // 添加如下配置 id 'com.huawei.agconnect' }

配置签名

将4 能力接入准备步骤中生成的签名文件拷贝到工程的"app"目录下,在build.gradle文件中配置签名。

android { signingConfigs { config { // xxx替换为您自己的签名文件 keyAlias 'xxx' keyPassword 'xxxx' storeFile file('xxx.jks') storePassword 'xxxx' } } buildTypes { debug { signingConfig signingConfigs.config } release { signingConfig signingConfigs.config minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }

同步工程

在完成以上的配置后,点击"Sync Now",完成"build.gradle"文件的同步,将相关依赖下载到本地。

如上图出现"synced successfully"表示同步成功。

在"AndroidManifest.xml"文件的"application"标签下注册您自己的"service",用于接收透传消息、获取Token。该"service"继承HmsMessageService类并实现其中的方法,此处以DemoHmsMessageService类为例(类名由您自定义)。

<manifest ...> ... <application ...> <service android:name=".DemoHmsMessageService" android:exported="false"> <intent-filter> <action android:name="com.huawei.push.action.MESSAGING_EVENT"/> </intent-filter> </service> </application> ... </manifest>
  1. 打开AndroidStudio工程的混淆配置文件proguard-rules.pro。
  2. 加入混淆配置。
    -ignorewarnings -keepattributes *Annotation* -keepattributes Exceptions -keepattributes InnerClasses -keepattributes Signature -keepattributes SourceFile,LineNumberTable -keep class com.huawei.hianalytics.**{*;} -keep class com.huawei.updatesdk.**{*;} -keep class com.huawei.hms.**{*;}
  3. 如果开发者使用了AndResGuard,需要在混淆配置文件中加入AndResGuard允许清单。
    "R.string.agc*", "R.string.hms*", "R.string.connect_server_fail_prompt_toast", "R.string.getting_message_fail_prompt_toast", "R.string.no_available_network_prompt_toast", "R.string.third_app_*", "R.string.upsdk_*", "R.layout.hms*", "R.layout.upsdk_*", "R.drawable.upsdk*", "R.color.upsdk*", "R.dimen.upsdk*", "R.style.upsdk*"
  4. (可选)当您启用R8资源缩减(项目级"build.gradle"文件中"shrinkResources"属性为"true")和严格引用检查("res/raw/keep.xml"文件中的"shrinkMode"为"strict")时,请您配置"keep.xml"文件手动保留layout资源,确保应用正常通过华为应用市场上架审核。
    <?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@layout/hms_download_progress,@drawable/screen_off" tools:shrinkMode="strict" />

整个工程代码以及资源结构如下图,工程详情参见示例代码

新建工程

在Android Studio里新建工程,可参见创建Android Studio工程

业务代码补全

申请Token

AndroidManifest.xml的application标签下添加<meta-data>元数据。

<meta-data android:name="push_kit_auto_init_enabled" android:value="true" />

接收Token

MyPushService继承自HmsMessageService,重写类中的onNewToken(String token, Bundle bundle)方法,通过该方法接收Token。
如果您集成的Push SDK版本低于5.0.4.302,请覆写onNewToken(String token)方法。
Java

public class MyPushService extends HmsMessageService { private static fina***TAG*** ring TAG = "PushDemoLog"; @Override public void onNewToken(String token, Bundle bundle) { super.onNewToken(token); Log.i(TAG, "receive new token:" + token); } }

Kotlin

class MyPushService : HmsMessageService { ***TAG*** val TAG = "PushDemoLog" override fun onNewToken(token: String?, bundle: Bundle?) { Log.i(TAG, "have received refresh token:$token") } }

其它功能

主题订阅等其他功能业务介绍、代码调用示例等请参见开发指南

编译、加载、调试

完成上述代码后,手机连上电脑。

方式一:

点击就可以进行编译构建将包安装到手机上。

方式二:

  1. 使用Android studio打包APK文件。
  2. 使用adb工具将构建出的APK安装到华为手机上进行调试。
    adb install D:\WorkSpace\CodeLab\push_demo1\app\release\app-release.apk

获取Token
运行Demo后,保证手机联网,即可自动获取token,日志里会打印token,过滤PushDemoLog字符串可以看到Demo的所有日志。

开发者可以在AppGallery Connect上在线编辑消息,并向您刚才申请Token的设备推送消息,详情可参见推送消息。发送通知消息前请找到对应的应用名称,本应用的包名为:com.huawei.codelabpush。
发送成功后,手机上会接收到通知栏消息:

干得好,你已经成功完成了Codelab并学到了:

您可以点击下方链接了解更多相关的信息。

相关文档
您可以点击下方链接下载源码。

源码下载

Code copied