华为推送服务集成
前言
首先说明为什么要华为推送服务呢?这也是因为Android定制系统的问题,国内对安卓系统进行的定制的大厂有华为、小米、OPPO、VIVO、魅族等,小厂就更多了。大厂对Android系统进行了定制,形成特色的Android系统,而这些系统配置在国产的Android手机中,因为你需要根根据不同的厂商进行不同的适配,所以对于Android开发者来说,适配一直是一个比较头疼的事情,不过头疼归头疼,事情还是得做,推送就属于适配的一个内容。
推送的目的是什么呢?就是让用户得到最新的咨询信息,通常的应用场景就是最新消息,新闻,通知之类的推送。而对接厂商渠道的推送,可以在让的应用在未运行的情况下,收到通知,点击通知则会打开应用,这是对接厂商渠道的目的。
举一个例子,就拿微博来说,它并不是一直在后台运行的,而当你关注的博主,发送新的资讯,亦或者是微博给你发了什么资讯,你的手机是会收到通知,而当你点开这个通知,如果应用未运行,那么会先启动应用,然后再打开相应的咨询,如果在后台运行还没有被杀死,则会直接打开咨询。而微博的用户量这么多,群众基础很大,势必会碰到不同的机型,因为它就必须做厂商渠道的对接。相信你已经了解了这个对接的意义了,下面进入正题吧。
运行效果图
如果对这个效果还满意,可以往下看了。
正文
我做Android开发的时候都是直接拿自己的手机来做测试,一方面比较的方便,另一方面就是*一些,同时我基本上不用虚拟机和模拟器。所以本文的内容都是针对于真机运行使用。而我因为使用的是荣耀手机,之前是华为的子品牌,目前好像是说脱离了,不过不重要,对接还得继续,所以我主要是对接华为推送,如果我自己是小米手机,那么这个标题就是小米推送继承服务了,说明了前因后果,是为了一些后续考虑,当我这篇文章写完之后,肯定会有人说,可不可以写一篇关系小米、OPPO、VIVO、魅族等一些厂商的推送对接文章呢?
好了,我的废话够多了,下面正式来看看。
一、创建平台应用
首先进入华为开放平台
看右上角,有一个登录和注册,这一步希望读者能够独立完成,要成为华为开发者,记得做实名认证。
登录之后,找到推送服务。
然后配置AppGallery Connect
点击AppGallery Connect
勾选上,点击我同意。
点击我的项目
勾选上,点击继续。
点击添加项目。
输入项目名称,然后点击确认。
然后不出意外会出出现一个重名的提示,不过不用担心你的项目已经创建好了。
如果你实在觉得不得劲,那就改一下。
如上图,我加上了我名字的首拼音缩写。
添加添加应用按钮。
填写相关资料。
点击确认。
平台应用创建好了,可以看到上图要我们将这个配置文件加到项目里面去,以获得最佳的集成效果,先把这个配置文件下载到电脑本地,然后创建AS项目。
二、创建AS项目
创建AS应用也是有要求的。要求如下:
我的AS是3.5.2的,如果你的AS还是低于3.X以下的版本,比如2.X的版本的话,你就需要升级AS了,可以参考我写的关于AS安装配置的文章,里面有详细的说明。
点击Finish完成项目创建。
然后点击这个下拉按钮,切换到Project模式。
现在的目录是这样的。
然后将那个配置文件复制进来。
注意看复制的位置,是放在app文件夹中的,与src文件夹是同级别的。
然后你可以看看这个配置文件
这里面的信息和你刚才创建平台应用产生的值是一致的,这是平台的应用和项目信息
这里都是能对的上的,所以你要自己创建应用时去下载相应的配置文件。因此你最好是跟着一步一步来,拿到我的源码你反而要改的东西更多,而且你还可能改不好,所以建议你花一点时间,一步一步跟着来对接。
三、配置Gradle
打开项目级build.gradle,添加如下代码:
//新增
maven {url 'https://developer.huawei.com/repo/'}
//新增
classpath 'com.huawei.agconnect:agcp:1.3.1.300'
添加位置如下图。
然后打开模块级build.gradle,添加如下代码:
//新增
implementation 'com.huawei.hms:push:5.3.0.300'
添加位置如下图
然后点击右上角的Sync Now 进行资源同步。此时会下载相应的SDk文件,你不用管它。
四、生成并配置SHA256指纹
选择APK,点击Next。
点击Create new… 创建新的。
下面进行jks文件的生成,这是你的应用秘钥。
选择生成秘钥的文件路径和设置秘钥名称。
点击OK。
秘钥密码可以和秘钥别名密码一样。
这个提示不用管,点击OK。
选择生成应用的类型和生成APK的路径。
点击Finish。当你的AS的右下角出现这样的提示时,说明你的APK构建成功了,这个APK你是可以发给其他人的,都是可安装的。
刚才这么做是为了验证这个创建的jks文件没有问题,下面来获取SHA256指纹。
通过命令来获取。
keytool -list -v -keystore D:\APK\huaweiPush.jks
这里的D:\APK\huaweiPush.jks是我的jks文件存放路径,请以自己的为准。
输入密码,输入是不可见,输入完成之后回车即可。
这里SHA256指纹就有了。
回到平台应用处,进行填写。
这样就填写好了,这个SHA256指纹只用来检查应用的真实性。
五、开启应用推送服务
然后切换到这个API管理,看看你的推送服务有没有打开。
在左侧导航栏选择“增长 > 推送服务”,点击“立即开通”,然后会弹出一个框。
点击确定。
选择中国(如果你在国外,也可以切换对应国家),点击确定。
六、配置签名
将之前创建的huaweiPush.jks文件复制到你的app下
打开你的app的build.gradle,在里面添加
//配置签名
signingConfigs {
config {
storeFile file('huaweiPush.jks')
keyAlias 'key0'
keyPassword '203472'
storePassword '203472'
v1SigningEnabled true
v2SigningEnabled true
}
}
添加位置如下图
然后Sync Now。
七、HMS Toolkit工具配置
刚才进行了一系列的配置,下面通过工具来验证一下配置的结果,
点击“File > Settings > Plugins” ,搜索“HMS”找到HMS Toolkit
点击Install,进行下载安装。
点击重启Android Studio。
然后你会发现你的AS工具栏上面会多出来一个HMS
先登录一下,这里也需要使用华为账号。
然后你再看看你的AS
点击同意
之后再点击Configuration Wizard
可以看到这里出现了你在开放平台上的信息,向下滑动一下
这里的jks和密码都给你填写好了,如果没有的话,你就自己选择项目中app模块下的huaweiPush.jks,然后填写秘钥密码、秘钥别名、秘钥别名密码。
点击这个Generate按钮,会创建SHA56指纹,这里的指纹和你之前通过jks生成的是一致,如果不一致,说明你的jks不对。
这里可以做一下对比验证。
然后点击Next。
这里会一步一步的检查你的所有配置,如果出现检查不通过的项,请根据界面提示和点击“Link”手动设置,如下图所示。设置完成后,点击“Retry”重新进行检查。
可以看到我的全部检查项均通过,点击“Go to coding assistant”按钮。
点击Push Kit
下面还是一个演示的效果图。
按照演示操作一下。然后你会发现生成了一个Activity,一个PushMsgService,还有一个activity_push_get_token.xml,还有AndroidManifest.xml中的改动,看看AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.llw.huaweipush">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="push_kit_auto_init_enabled"
android:value="true" />
<service
android:name=".PushMsgService"
android:exported="false">
<intent-filter>
<action android:name="com.huawei.push.action.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>
</manifest>
如下代码是刚才生成的。
<meta-data
android:name="push_kit_auto_init_enabled"
android:value="true" />
<service
android:name=".PushMsgService"
android:exported="false">
<intent-filter>
<action android:name="com.huawei.push.action.MESSAGING_EVENT" />
</intent-filter>
</service>
不过这个里面并没有刚才生成的PushGetTokenActivity的配置,我们把这个
PushGetTokenActivity配置进AndroidManifest.xml并且设置为启动的Activity,如下图所示
然后通过USB运行安装应用到你的手机上。
八、推送消息
点击GetToken按钮,你会看到出现了一个token信息,而在控制台也会打印Token
有了这个Token,就可以推送消息了。
在控制台复制这个Token,回到你的华为开放平台
点击添加推送通知按钮。
填写一些测试信息,右边的预览可以看到通知的样式。向下滑动
点这个预估用户数按钮,会根据你输入的Token进行检测,看这个用户是否存在。
这里检测到一个用户数。向上滑动找到一个效果测试按钮,点击它,输入刚才复制的Token。
点击确定,然后你会看到手机上多了一个推送消息。
因为我现在就是在应用的首页,所以点击之后没有什么效果,下面我回到桌面再来试试。
然后我们把应用的进程杀掉,再来测试一下。
后面你还可以再杀死应用,息屏的状态下,通过后台发送通知进行测试看能不能收到消息。这个方式自行去测试一下。我测试一下是可以收到通知的,如下图所示,当你点击这个通知就会进入到你的App首页。
那么到这里,如果你觉得在网页上发送消息测试太麻烦了,其实也可以通过刚才AS中的HMS ToolKit中
在Push Kit卡片的工具栏中,点击“Message Test”(Push Kit消息推送测试工具),用于测试服务器向手机推送消息。
点击这个按钮来获取Get APP ID and APP SECRET
获取之后点击Next。
填写通知的标题和内容
这里的Token我并没有填写,点击这个绿色三角形运行按钮。
当你的应用在手机上安装时,AS会弹出这样的一个提示窗口,如上图的右下角所示,点击OK,就是将Token自动填写进去。
然后点击这个Send。手机上会收到通知,如下图所示:
好了,通过工具发送通知就是手机上收到时没有感觉,听不到铃声,而通过后台发送就会有。其他的区别自己去发现吧。本文没有什么源码,因为我都没有写过代码,全是配置产生的。希望读者能够认真的跟着操作一遍。
结语
不要想着坐享其成,自己付出努力了才会有成就,实践出真知,我是初学者-Study,山高水长,后会有期~