简介

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

  1. 开发者通过在APP服务器端调用HUAWEI PUSH接口,向HUAWEI PUSH平台发送推送消息
  2. HUAWEI PUSH平台将消息发给安装了相应APP的终端设备
    为此,开发者需要:

您将建立什么

在这个Codelab中,你将使用已经创建好的Demo Project实现对华为PUSH开放服务的API调用,通过Demo Project你可以体验到:

您将会学到什么

硬件要求

软件要求

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

具体操作,请按照《HMS 3.0集成准备》中详细说明来完成。

打开服务开关

点击"开发"–>"概览"–>"API管理",进入服务管理菜单。

打开"Push"服务开关。

配置推送服务参数

选择需要开通服务的应用所属产品的名称,进入应用信息页面。
点击"开发"页签,左侧导航选择"增长服务"的"推送通知"子项目。

点击"修改",配置推送服务的状态。

至此,已经为创建的应用开通了HUAWEI PUSH服务。

添加当前应用的AGC配置文件

将下载的"agconnect-services.json"文件移至AndroidStudio开发工程app的根目录下。

配置HMS SDK的maven仓地址

打开AndroidStudio项目级build.gradle文件

在allprojects ->repositories里面配置HMS SDK的maven仓地址

allprojects { repositories { google() jcenter() // Add the following line maven { url 'http://developer.huawei.com/repo/' } } }

在buildscript -> repositories里面配置HMS SDK的maven仓地址

buildscript { repositories { google() jcenter() // Add the following line maven { url 'http://developer.huawei.com/repo/' } } }

在buildscript ->dependencies里面增加配置

buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.2.0' // Add the following line classpath 'com.huawei.agconnect:agcp:1.0.0.300' } }

添加编译依赖

打开应用级的build.gradle文件

在"dependencies"中添加编译依赖

dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' // Add the following line implementation 'com.huawei.hms:push:3.0.0.303' }

在文件头添加配置

apply plugin: 'com.huawei.agconnect'

在"android"中配置签名

将签名文件HmsDemo.jks拷贝到工程的app目录下。同时在build.gradle文件中配置签名。

android { signingConfigs { config { keyAlias 'HmsDemo' keyPassword '123456' storeFile file('HmsDemo.jks') storePassword '123456' } } buildTypes { debug { signingConfig signingConfigs.config } release { signingConfig signingConfigs.config minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }

点击sync now 同步工程

如上图出现synced successfully即代表同步成功。

在application节点下进行如下service注册声明,用于接收Token与华为推送的消息。MyPushService类由开发者定义继承自HmsMessageService类。

<service android:name=".MyPushService" android:exported="false"> <intent-filter> <action android:name="com.huawei.push.action.MESSAGING_EVENT" /> </intent-filter> </service>

Activity界面

在MainActivity部署按钮和文本框用于可视化操作调用HUAWEI PUSH提供的API。

业务代码补全

整个工程代码以及资源结构如下图:

申请Token

D:\Android\pushdemo\app\src\main\java\com\huawei\codelabpush\MainActivity.java

/** * 获取token */ private void getToken() { Log.i(TAG, "get token: begin"); // get token new Thread() { @Override public void run() { try { String appId = AGConnectServicesConfig.fromContext(MainActivity.this).getString("client/app_id"); pushtoken = HmsInstanceId.getInstance(MainActivity.this).getToken(appId, "HCM"); if(!TextUtils.isEmpty(pushtoken)) { Log.i(TAG, "get token:" + pushtoken); showLog(pushtoken); } } catch (Exception e) { Log.i(TAG,"getToken failed, " + e); } } }.start(); }

调用getToken接口申请push token,在EMUI10.0的华为设备上,token以返回值的方式返回。

接收token

D:\Android\pushdemo\app\src\main\java\com\huawei\codelabpush\MyPushService.java

public class MyPushService extends HmsMessageService { private static final String TAG = "PushDemoLog"; @Override public void onNewToken(String s) { super.onNewToken(s); Log.i(TAG, "receive token:" + s); } }

MyPushService继承自HmsMessageService,重写类中的方法onNewToken方法,该方法有以下几个作用:

  1. 在低于EMUI10.0的华为设备上申请token时,通过这个方法返回;
  2. 接收服务端刷新的Token
  3. 上次申请token失败,重试申请成功后也通过该方法返回token

其它功能

主题订阅,设备组消息,发送上行消息等PUSH功能业务介绍、代码调用示例等请参考开发指导

编译、加载、调试

完成上述代码后,手机连上电脑
方式一:
点击就可以进行编译构建将包安装到手机上。

方式二:

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

    运行demo后,保证手机联网,点击getToken按钮,获取token,日志里会打印token,过滤PushDemoLog:可以看到demo的所有日志

    1)EMUI10.0及之后的华为设备上,Push 3.0的新接口getToken直接在返回值里返回token:ADHpIj5s3j6jxaYJUW7miEx6vY5TtUgb8_v1IXIbvf5g4e0Nb4ztnJ7*******

    2)低于EMUI10.0的设备上和缓存重试的申请token,通过onNewToken方法返回:AFcSAHhhnxdrMCYBxth2QOG9IgY2VydAM61DTThqNux3KBC_hgzQQT*******

发送Push消息

使用AGC控制台发送测试消息,点击效果测试,输入上面的token,点击确定发送

发送成功后,手机上会接收到通知栏消息:

详细的发送测试消息步骤请参阅开发者指导。

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

您可以阅读下面链接,了解更多相关的信息。

相关文档.

您可以直接下载Push-Kit示例代码,进行Push-Kit开发体验。

源码下载

已复制代码