Android 华为推送服务集成 | 您所在的位置:网站首页 › 华为移动消息推送平台 › Android 华为推送服务集成 |
华为推送服务集成
前言正文一、创建平台应用二、创建AS项目三、配置Gradle和Manifest四、生成并配置SHA256指纹五、开启应用推送服务六、配置签名七、HMS Toolkit工具配置八、推送消息九、疑难杂症问题1:获取Token
结语
前言
首先说明为什么要华为推送服务呢?这也是因为Android定制系统的问题,国内对安卓系统进行的定制的大厂有华为、小米、OPPO、VIVO、魅族等,小厂就更多了。大厂对Android系统进行了定制,形成特色的Android系统,而这些系统配置在国产的Android手机中,因为你需要根根据不同的厂商进行不同的适配,所以对于Android开发者来说,适配一直是一个比较头疼的事情,不过头疼归头疼,事情还是得做,推送就属于适配的一个内容。 推送的目的是什么呢?就是让用户得到最新的咨询信息,通常的应用场景就是最新消息,新闻,通知之类的推送。而对接厂商渠道的推送,可以在让的应用在未运行的情况下,收到通知,点击通知则会打开应用,这是对接厂商渠道的目的。 举一个例子,就拿微博来说,它并不是一直在后台运行的,而当你关注的博主,发送新的资讯,亦或者是微博给你发了什么资讯,你的手机是会收到通知,而当你点开这个通知,如果应用未运行,那么会先启动应用,然后再打开相应的咨询,如果在后台运行还没有被杀死,则会直接打开咨询。而微博的用户量这么多,群众基础很大,势必会碰到不同的机型,因为它就必须做厂商渠道的对接。相信你已经了解了这个对接的意义了,下面进入正题吧。 运行效果图 如果对这个效果还满意,可以往下看了。 正文我做Android开发的时候都是直接拿自己的手机来做测试,一方面比较的方便,另一方面就是自由一些,同时我基本上不用虚拟机和模拟器。所以本文的内容都是针对于真机运行使用。而我因为使用的是荣耀手机,之前是华为的子品牌,目前好像是说脱离了,不过不重要,对接还得继续,所以我主要是对接华为推送,如果我自己是小米手机,那么这个标题就是小米推送继承服务了,说明了前因后果,是为了一些后续考虑,当我这篇文章写完之后,肯定会有人说,可不可以写一篇关系小米、OPPO、VIVO、魅族等一些厂商的推送对接文章呢? 好了,我的废话够多了,下面正式来看看。 一、创建平台应用首先进入华为开放平台
登录之后,找到推送服务。 然后配置AppGallery Connect 点击AppGallery Connect 点击我的项目 然后不出意外会出出现一个重名的提示,不过不用担心你的项目已经创建好了。 如果你实在觉得不得劲,那就改一下。 如上图,我加上了我名字的首拼音缩写。 添加添加应用按钮。 创建AS应用也是有要求的。要求如下:
打开项目级build.gradle,添加如下代码: //新增 maven {url 'https://developer.huawei.com/repo/'} // 增加agcp插件配置。 classpath 'com.huawei.agconnect:agcp:1.4.2.300'添加位置如下图。 然后打开模块级build.gradle,添加如下代码: //新增 implementation 'com.huawei.hms:push:5.3.0.304'添加位置如下图 然后点击右上角的Sync Now 进行资源同步。此时会下载相应的SDk文件,你不用管它。 在Android11.0中,需要在AndroidManifest.xml中进行一个配置。Android 11更改了应用查询用户在设备上已安装的其他应用以及与之交互的方式。您应用的targetSdkVersion是30或者更高版本时,需要在“AndroidManifest.xml”中manifest下添加标签,使应用可以访问HMS Core(APK)。 添加位置如下图
通过命令来获取。 keytool -list -v -keystore D:\APK\huaweiPush.jks这里的D:\APK\huaweiPush.jks是我的jks文件存放路径,请以自己的为准。 回到平台应用处,进行填写。
将之前创建的huaweiPush.jks文件复制到你的app下 打开你的app的build.gradle,在里面添加 //配置签名 signingConfigs { config { storeFile file('huaweiPush.jks') keyAlias 'key0' keyPassword '203472' storePassword '203472' v1SigningEnabled true v2SigningEnabled true } }添加位置如下图 刚才进行了一系列的配置,下面通过工具来验证一下配置的结果, 点击“File > Settings > Plugins” ,搜索“HMS”找到HMS Toolkit
点击重启Android Studio。 然后你会发现你的AS工具栏上面会多出来一个HMS
之后再点击Configuration Wizard 可以看到这里出现了你在开放平台上的信息,向下滑动一下
按照演示操作一下。然后你会发现生成了一个Activity,一个PushMsgService,还有一个activity_push_get_token.xml,还有AndroidManifest.xml中的改动,看看AndroidManifest.xml 如下代码是刚才生成的。 不过这个里面并没有刚才生成的PushGetTokenActivity的配置,我们把这个 PushGetTokenActivity配置进AndroidManifest.xml并且设置为启动的Activity,如下图所示 点击GetToken按钮,你会看到出现了一个token信息,而在控制台也会打印Token 在控制台复制这个Token,回到你的华为开放平台 后面你还可以再杀死应用,息屏的状态下,通过后台发送通知进行测试看能不能收到消息。这个方式自行去测试一下。我测试一下是可以收到通知的,如下图所示,当你点击这个通知就会进入到你的App首页。 那么到这里,如果你觉得在网页上发送消息测试太麻烦了,其实也可以通过刚才AS中的HMS ToolKit中 在Push Kit卡片的工具栏中,点击“Message Test”(Push Kit消息推送测试工具),用于测试服务器向手机推送消息。 点击这个按钮来获取Get APP ID and APP SECRET
好了,通过工具发送通知就是手机上收到时没有感觉,听不到铃声,而通过后台发送就会有。其他的区别自己去发现吧。本文没有什么源码,因为我都没有写过代码,全是配置产生的。希望读者能够认真的跟着操作一遍。 九、疑难杂症在这里分享读者跟着文章操作时遇到的问题和解决方法,因为我在写的时候没有遇到过,不过随着版本的更新会出现一个问题也是正常。 问题1:获取Token华为荣耀9i(android 9,EMUI 9.1.0)上面获取到的token没有在界面上显示的问题。 解答: 这是因为在低于EMUI10的手机上,获取token不是在HmsInstanceId类的getToken(String,String)里获取的,而是在HmsMessageService服务的onNewToken(String)获取的。 结语不要想着坐享其成,自己付出努力了才会有成就,实践出真知,我是初学者-Study,山高水长,后会有期~ |
CopyRight 2018-2019 实验室设备网 版权所有 |