Android 华为推送服务集成

简介: Android 华为推送服务集成

华为推送服务集成


前言


首先说明为什么要华为推送服务呢?这也是因为Android定制系统的问题,国内对安卓系统进行的定制的大厂有华为、小米、OPPO、VIVO、魅族等,小厂就更多了。大厂对Android系统进行了定制,形成特色的Android系统,而这些系统配置在国产的Android手机中,因为你需要根根据不同的厂商进行不同的适配,所以对于Android开发者来说,适配一直是一个比较头疼的事情,不过头疼归头疼,事情还是得做,推送就属于适配的一个内容。


推送的目的是什么呢?就是让用户得到最新的咨询信息,通常的应用场景就是最新消息,新闻,通知之类的推送。而对接厂商渠道的推送,可以在让的应用在未运行的情况下,收到通知,点击通知则会打开应用,这是对接厂商渠道的目的。


举一个例子,就拿微博来说,它并不是一直在后台运行的,而当你关注的博主,发送新的资讯,亦或者是微博给你发了什么资讯,你的手机是会收到通知,而当你点开这个通知,如果应用未运行,那么会先启动应用,然后再打开相应的咨询,如果在后台运行还没有被杀死,则会直接打开咨询。而微博的用户量这么多,群众基础很大,势必会碰到不同的机型,因为它就必须做厂商渠道的对接。相信你已经了解了这个对接的意义了,下面进入正题吧。


运行效果图

2021051017525065.gif


如果对这个效果还满意,可以往下看了。


正文


我做Android开发的时候都是直接拿自己的手机来做测试,一方面比较的方便,另一方面就是自由一些,同时我基本上不用虚拟机和模拟器。所以本文的内容都是针对于真机运行使用。而我因为使用的是荣耀手机,之前是华为的子品牌,目前好像是说脱离了,不过不重要,对接还得继续,所以我主要是对接华为推送,如果我自己是小米手机,那么这个标题就是小米推送继承服务了,说明了前因后果,是为了一些后续考虑,当我这篇文章写完之后,肯定会有人说,可不可以写一篇关系小米、OPPO、VIVO、魅族等一些厂商的推送对接文章呢?


好了,我的废话够多了,下面正式来看看。


一、创建平台应用


首先进入华为开放平台


20210510094917268.png


看右上角,有一个登录和注册,这一步希望读者能够独立完成,要成为华为开发者,记得做实名认证。


登录之后,找到推送服务。


20210510095233674.png


然后配置AppGallery Connect


点击AppGallery Connect


2021051010020579.png


勾选上,点击我同意。


20210510100521459.png


点击我的项目


20210510100554802.png


勾选上,点击继续。


20210510100629193.png


点击添加项目。


20210510100713644.png


输入项目名称,然后点击确认。


然后不出意外会出出现一个重名的提示,不过不用担心你的项目已经创建好了。

如果你实在觉得不得劲,那就改一下。


20210510100924840.png


如上图,我加上了我名字的首拼音缩写。


添加添加应用按钮。


2021051010113971.png


填写相关资料。


20210510101613548.png


点击确认。


20210510101845515.png


平台应用创建好了,可以看到上图要我们将这个配置文件加到项目里面去,以获得最佳的集成效果,先把这个配置文件下载到电脑本地,然后创建AS项目。


二、创建AS项目


创建AS应用也是有要求的。要求如下:


20210510095812199.png


我的AS是3.5.2的,如果你的AS还是低于3.X以下的版本,比如2.X的版本的话,你就需要升级AS了,可以参考我写的关于AS安装配置的文章,里面有详细的说明。


20210510102058439.png


点击Finish完成项目创建。


然后点击这个下拉按钮,切换到Project模式。


20210510102550424.png


现在的目录是这样的。


20210510103057484.png


然后将那个配置文件复制进来。


2021051010321182.png


注意看复制的位置,是放在app文件夹中的,与src文件夹是同级别的。

然后你可以看看这个配置文件


20210510103507664.png


这里面的信息和你刚才创建平台应用产生的值是一致的,这是平台的应用和项目信息

20210510103813763.png



这里都是能对的上的,所以你要自己创建应用时去下载相应的配置文件。因此你最好是跟着一步一步来,拿到我的源码你反而要改的东西更多,而且你还可能改不好,所以建议你花一点时间,一步一步跟着来对接。


三、配置Gradle和Manifest


打开项目级build.gradle,添加如下代码:

    //新增
        maven {url 'https://developer.huawei.com/repo/'}
    // 增加agcp插件配置。
        classpath 'com.huawei.agconnect:agcp:1.4.2.300'


添加位置如下图。


7ed9724ed0e3a2b426db59b3a8617dd1.png


然后打开模块级build.gradle,添加如下代码:


  //新增
    implementation 'com.huawei.hms:push:5.3.0.304'

添加位置如下图


916396779034b6641f6859d20734112f.png


然后点击右上角的Sync Now 进行资源同步。此时会下载相应的SDk文件,你不用管它。


在Android11.0中,需要在AndroidManifest.xml中进行一个配置。Android 11更改了应用查询用户在设备上已安装的其他应用以及与之交互的方式。您应用的targetSdkVersion是30或者更高版本时,需要在“AndroidManifest.xml”中manifest下添加标签,使应用可以访问HMS Core(APK)。


  <!--适配Android11,使应用可以访问HMS Core(APK)-->
    <queries>
        <intent>
            <action android:name="com.huawei.hms.core.aidlservice" />
        </intent>
    </queries>


添加位置如下图


e65f37bb924f4e5f94c06e55bef85c1d.png


四、生成并配置SHA256指纹


20210510105415907.png


选择APK,点击Next。


20210510105441218.png


点击Create new… 创建新的。


20210510105526538.png


下面进行jks文件的生成,这是你的应用秘钥。


20210510105647185.png


选择生成秘钥的文件路径和设置秘钥名称。


20210510105721865.png


点击OK。


20210510105900292.png


秘钥密码可以和秘钥别名密码一样。


20210510105926817.png


这个提示不用管,点击OK。


20210510105953591.png


选择生成应用的类型和生成APK的路径。


20210510110040333.png


点击Finish。当你的AS的右下角出现这样的提示时,说明你的APK构建成功了,这个APK你是可以发给其他人的,都是可安装的。


20210510110212157.png


刚才这么做是为了验证这个创建的jks文件没有问题,下面来获取SHA256指纹。


通过命令来获取。


keytool -list -v -keystore D:\APK\huaweiPush.jks
1


这里的D:\APK\huaweiPush.jks是我的jks文件存放路径,请以自己的为准。


20210510110941379.png


输入密码,输入是不可见,输入完成之后回车即可。


20210510111133692.png


这里SHA256指纹就有了。


回到平台应用处,进行填写。


20210510111244200.png


这样就填写好了,这个SHA256指纹只用来检查应用的真实性。


五、开启应用推送服务


20210510111523167.png


然后切换到这个API管理,看看你的推送服务有没有打开。


20210510111653484.png


在左侧导航栏选择“增长 > 推送服务”,点击“立即开通”,然后会弹出一个框。


20210510111743735.png


点击确定。


20210510111822298.png


选择中国(如果你在国外,也可以切换对应国家),点击确定。


六、配置签名


将之前创建的huaweiPush.jks文件复制到你的app下


20210510145953543.png


打开你的app的build.gradle,在里面添加



  //配置签名
    signingConfigs {
        config {
            storeFile file('huaweiPush.jks')
            keyAlias 'key0'
            keyPassword '203472'
            storePassword '203472'
            v1SigningEnabled true
            v2SigningEnabled true
        }
    }

添加位置如下图


20210510145845355.png


然后Sync Now。


七、HMS Toolkit工具配置


刚才进行了一系列的配置,下面通过工具来验证一下配置的结果,

点击“File > Settings > Plugins” ,搜索“HMS”找到HMS Toolkit


20210510152044763.png


点击Install,进行下载安装。


20210510154820209.png


点击重启Android Studio。


然后你会发现你的AS工具栏上面会多出来一个HMS


20210510155136611.png


先登录一下,这里也需要使用华为账号。


20210510155304628.png


然后你再看看你的AS


20210510155406786.png


20210510155426625.png

点击同意


之后再点击Configuration Wizard


20210510155525873.png

68edc4f28a726a9bdfbc24d9b0150915.png


点击Add Kit。


c85aebf430fd2b1f1ff6e939dc78a03b.png


选中Push Kit,点击Confirm。


可以看到这里出现了你在开放平台上的信息,向下滑动一下


20210510155947796.png

20210510160029842.png


这里的jks和密码都给你填写好了,如果没有的话,你就自己选择项目中app模块下的huaweiPush.jks,然后填写秘钥密码、秘钥别名、秘钥别名密码。


20210510160240319.png


点击这个Generate按钮,会创建SHA56指纹,这里的指纹和你之前通过jks生成的是一致,如果不一致,说明你的jks不对。


20210510160615267.png


这里可以做一下对比验证。

然后点击Next。


20210510160737551.png


这里会一步一步的检查你的所有配置,如果出现检查不通过的项,请根据界面提示和点击“Link”手动设置,如下图所示。设置完成后,点击“Retry”重新进行检查。


20210510161005743.png



可以看到我的全部检查项均通过,点击“Go to coding assistant”按钮。


20210510162011403.png


点击Push Kit


20210510162053179.png


下面还是一个演示的效果图。


20210510162119561.gif


按照演示操作一下。然后你会发现生成了一个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,如下图所示


2021051016404490.png


然后通过USB运行安装应用到你的手机上。


20210510164409405.png


八、推送消息


点击GetToken按钮,你会看到出现了一个token信息,而在控制台也会打印Token


20210510171342294.png


有了这个Token,就可以推送消息了。


在控制台复制这个Token,回到你的华为开放平台


20210510171621535.png


点击添加推送通知按钮。


20210510171926876.png


填写一些测试信息,右边的预览可以看到通知的样式。向下滑动


20210510172035644.png


点这个预估用户数按钮,会根据你输入的Token进行检测,看这个用户是否存在。


20210510172353317.png


这里检测到一个用户数。向上滑动找到一个效果测试按钮,点击它,输入刚才复制的Token。


20210510173944302.png


点击确定,然后你会看到手机上多了一个推送消息。


20210510174543587.gif


因为我现在就是在应用的首页,所以点击之后没有什么效果,下面我回到桌面再来试试。


20210510174826112.gif


然后我们把应用的进程杀掉,再来测试一下。


2021051017525065.gif


后面你还可以再杀死应用,息屏的状态下,通过后台发送通知进行测试看能不能收到消息。这个方式自行去测试一下。我测试一下是可以收到通知的,如下图所示,当你点击这个通知就会进入到你的App首页。


20210510175638425.png


那么到这里,如果你觉得在网页上发送消息测试太麻烦了,其实也可以通过刚才AS中的HMS ToolKit中


在Push Kit卡片的工具栏中,点击“Message Test”(Push Kit消息推送测试工具),用于测试服务器向手机推送消息。


20210510180021217.png


点击这个按钮来获取Get APP ID and APP SECRET


20210510180102931.png


获取之后点击Next。


2021051018053665.png


填写通知的标题和内容


20210510181119278.png


这里的Token我并没有填写,点击这个绿色三角形运行按钮。


20210510181258553.png


当你的应用在手机上安装时,AS会弹出这样的一个提示窗口,如上图的右下角所示,点击OK,就是将Token自动填写进去。


20210510181450408.png


然后点击这个Send。手机上会收到通知,如下图所示:


20210510181545943.gif


好了,通过工具发送通知就是手机上收到时没有感觉,听不到铃声,而通过后台发送就会有。其他的区别自己去发现吧。本文没有什么源码,因为我都没有写过代码,全是配置产生的。希望读者能够认真的跟着操作一遍。


九、疑难杂症


 在这里分享读者跟着文章操作时遇到的问题和解决方法,因为我在写的时候没有遇到过,不过随着版本的更新会出现一个问题也是正常。


问题1:获取Token


华为荣耀9i(android 9,EMUI 9.1.0)上面获取到的token没有在界面上显示的问题。


解答:


这是因为在低于EMUI10的手机上,获取token不是在HmsInstanceId类的getToken(String,String)里获取的,而是在HmsMessageService服务的onNewToken(String)获取的。


结语


不要想着坐享其成,自己付出努力了才会有成就,实践出真知,我是初学者-Study,山高水长,后会有期~




相关文章
|
4月前
|
API 定位技术 开发工具
百宝箱开放平台 ✖️ Android 集成说明
本文介绍如何通过SDK将百宝箱与友盟+ Android应用集成,涵盖环境配置、权限声明、混淆设置、SDK初始化及预初始化、日志查看、效果验证等步骤,并提供完整demo工程及参数说明,助力开发者快速实现功能集成。
250 1
百宝箱开放平台 ✖️ Android 集成说明
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
1231 1
|
测试技术 Android开发 开发者
【03】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第三篇安卓APP上架华为商店后面的步骤-华为应用商店相对比较麻烦一些-华为商店安卓上架
【03】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第三篇安卓APP上架华为商店后面的步骤-华为应用商店相对比较麻烦一些-华为商店安卓上架
240 16
|
API 开发者 容器
DevEco Studio:熟练使用华为提供的集成开发环境DevEco Studio
【10月更文挑战第22天】随着HarmonyOS的普及,华为推出了官方集成开发环境DevEco Studio,以提高开发效率。本文通过开发一款天气应用的案例,详细介绍了如何使用DevEco Studio进行环境搭建、界面设计、数据绑定与交互、调试与运行等步骤,帮助开发者高效完成HarmonyOS应用开发。
1109 6
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
784 1
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
704 0
|
开发者 算法 虚拟化
惊爆!Uno Platform 调试与性能分析终极攻略,从工具运用到代码优化,带你攻克开发难题成就完美应用
【8月更文挑战第31天】在 Uno Platform 中,调试可通过 Visual Studio 设置断点和逐步执行代码实现,同时浏览器开发者工具有助于 Web 版本调试。性能分析则利用 Visual Studio 的性能分析器检查 CPU 和内存使用情况,还可通过记录时间戳进行简单分析。优化性能涉及代码逻辑优化、资源管理和用户界面简化,综合利用平台提供的工具和技术,确保应用高效稳定运行。
368 0
|
机器学习/深度学习 TensorFlow 算法框架/工具
全面解析TensorFlow Lite:从模型转换到Android应用集成,教你如何在移动设备上轻松部署轻量级机器学习模型,实现高效本地推理
【8月更文挑战第31天】本文通过技术综述介绍了如何使用TensorFlow Lite将机器学习模型部署至移动设备。从创建、训练模型开始,详细演示了模型向TensorFlow Lite格式的转换过程,并指导如何在Android应用中集成该模型以实现预测功能,突显了TensorFlow Lite在资源受限环境中的优势及灵活性。
1751 0
|
Java 开发工具 Android开发
Android mk 集成app
Android mk 集成app
173 5
|
安全 物联网 Android开发
构建未来:Android与IoT设备的无缝集成
【5月更文挑战第10天】 在数字化时代的浪潮中,智能设备与互联网的结合日益紧密。本文深入探讨了Android系统如何通过其开放性和灵活性成为连接物联网(IoT)设备的关键枢纽。我们将分析Android平台与IoT设备集成的技术途径,探索它们如何共同塑造智能家居、可穿戴技术以及工业自动化等领域的未来。文中不仅阐述了当前的发展状况,还展望了未来的发展趋势,特别是安全性和隐私保护方面的挑战及对策。
497 1

热门文章

最新文章