集光的sdk分为公有云部署和私有云部署,两者集成的步骤大同小异,自己开发的项目使用的是极光私有云部署,个人认为集成过程主要分为两部分:

  • 集成极光sdk, 使用极光通道进行推送

  • 集成厂商通道并进行推送(因为app在后台被杀死的情况下无法收到推送,所以只集成极光通道实用性不大,还是需要集成厂商通道)

关于自定义的广播、设置别名、获取RegistrationId等具体代码可以下载官网demo示例查看(Android 集成极光推送和厂商通道这篇博客写的比较详细), 自己这篇博客是对集成极光推送过程中遇到的问题,尤其是集成厂商通道过程中踩到的坑作以总结。

一、集成极光sdk

极光厂商给的说明文档中关于集成sdk的步骤写的比较详细,此处简单作以介绍,因为自己开发的项目中采用的是极光私有化部署,所以公有云sdk的初始化api有一定区别。

1、导入jar包或者aar包

将极光的jar报或者aar放入libs目录中,并在gradle文件中作以下配置进行引用:

dependencies {implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
}

2、build.gradle配置

    productFlavors {//内网研发develop {applicationId 'com.****.develop'.....manifestPlaceholders = [//在清单文件中引用app_name: "金色**(内网)",app_icon: "@mipmap/ic_launcher_nw",//极光相关配置信息, 便于在清单文件中引用, appkey一定要和包名对应JIGUANG_PRIVATES_CHANNEL: "developer-default",JIGUANG_PRIVATES_APPKEY : "1023984109843aasldkfj",JIGUANG_PRIVATES_PROCESS: ":remote",]}}

要注意的是这里的applicationId对应的包名、JIGUANG_PRIVATES_APPKEY 的值一定要和极光控制台上的应用包名、appkey一致,如果不一致是收不到推送的自己就是在粘贴控制台的appkey到项目中的时候多了一个空格,造成无法收到推送,耽误了不少时间。 如下图所示

3、创建必须的组件并配置清单文件

参考厂商的demo示例代码创建Service和Receiver, 并在清单文件中配置, 配置完成后不要忘记在清单文件中声明所必要的权限。

                 <!-- 必须,网络权限 --><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- 可选,通知震动 --><uses-permission android:name="android.permission.VIBRATE" /> <!-- 由于此类具有长连接功能,手机厂商省电优化时可能直接杀死包名带jiguang字样的service --><!-- 所以需要开发者继承cn.jiguang.app.component.JCommonService,提升长连接存活率,已达到提高消息到达率的目的 --><serviceandroid:name="cn.jiguang.app.component.UserService"android:exported="false"android:process="${JIGUANG_PRIVATES_PROCESS}"><intent-filter><action android:name="cn.jiguang.privates.intent.USER_SERVICE" /></intent-filter></service><!-- 用于接收极光业务的回调,包含了长连接状态/通知开关状态/通知消息到达/通知消息点击/通知消息删除/自定义消息/tag操作/alias操作/厂商token回调 --><!-- 不需要配置子进程,此回调中在主进程中,方便业务操作 --><receiverandroid:name="cn.jiguang.app.component.UserReceiver"android:exported="false"><intent-filter><action android:name="cn.jiguang.privates.intent.USER_RECEIVER" /></intent-filter></receiver>

4、sdk的初始化

在Application类的onCreat方法中初始化sdk,根据自己的环境设置相应的参数值,不同版本的sdk代码会略有不同。注意不需要重新开启子线程,sdk内部有判断。

        JCorePrivatesApi.configAddress(this, new Address()// 默认连接ip,注意ip是数字组合,host才是字母组合.setDefaultIp("100.24.24.159")// 默认连接端口.setDefaultPort(3000)// 上报地址,不需要配置/v3/report和/v1/sdk/report地址,只需要http://ip+port或着域名即可.setDefaultReportUrl("http://pricloud-master-badgeapi.glqas.jpushoa.com"));// 必须在application.onCreate中配置,不要判断进程,sdk内部有判断JCorePrivatesApi.configDebugMode(this, true);// 后台没升级tag: V3.5.4-newportal-20210823-gamma.57版本,前端必须调用此方法,否则通知点击跳转有问题// JPushPrivatesApi.configOldPushVersion(context.getApplicationContext());// 初始化推送JPushPrivatesApi.init(this);

5、推送的测试

如何判断sdk是否集成成功了呢? 为了避免原有apk的影响,先卸载已经安装的app,然后运行打包。

使用关键字 jiguang过滤日志,如果获取到了RegistrationId的值就说明集成成功了, 然后在控制台使用RegistrationId进行推送测试。 要注意的是 部分手机默认通知选项是没有打开的,需要手动设置允许通知

6、 小结

集成极光通道其实并不复杂,按照厂商给的demo和说明文档集成即可,只要细心一些很容成功,需要注意的一个地方就是项目中配置的appkey、包名要和控制台设置的要一致。

二、集成厂商通道

目前高版本的系统在用户安装完应用的时候,会默认勾选一个锁屏清理后台应用的选项, 即便没有选择这个选项,当内存不足的情况下app所在的进程也会被杀死, 这种情况下极光通道是无法收到通知,所以只集成极光通道而不集成厂商通道时没有什么实用性的。

2.1、 注意事项(踩到的坑)

集成厂商通道的过程中踩了不少坑,有些配置注意事项极光的厂商也没有详细说明,华为厂商通道的说明文档也没有写清楚,所以耗费了很大的精力。自己开发的项目集成了华为、小米、opple这三型号手机的厂商通道, 自己遇到的坑或者说特别耗费精力的主要有如下几点:

  • 项目不需要审核通过也可以测试(使用)推送,只要创建好应用,填写完应用信息,设置好应用签名,点击保存即可进行推送测试, 这一点华为没有给出明确说明( 而opple在页面上给出了说明,未审核通过的项目每天只能推送1000条), 自己误认为只有项目审核通过的情况下才可以测试推送,然后就吭哧吭哧开始提交审核,而准备各种审核材料(软著、权限说明、隐私证明、加固包)又是一项特别耗时的事情, 好不容易审核资料凑齐了,又因为提前索权的问题被连续拒绝了好几次。
  • appkey相关参数配置错误的问题(例如appkey粘贴的时候多了一个空格)
  • 极光后台相关配置没有开启的问题(例如集成厂商通道时,极光控制台配置中的厂商通道优先选项自己没有打开)
  • 用户手机没有打开允许通知的权限(有些手机默认会打开通知,但是也有的手机默认情况下不允许接受通知),小米的部分手机需要在通知的设置中的广告营销选项,才可以收到推送

2.2 、 集成华为厂商通道

注意: app不需要审核通过也可以测试推送,只要你的项目不需要在华为应用商店上架,完全不需要进行提交审核,准备各种审核材料的时候特别浪费时间。 自己认为集成华为厂商通道是这三种手机型号中相对来说比较复杂的一个, 集成华为厂商通道可以参考极光提供的集成文档:JPush SDK华为厂商集成文档(3.5.4 及以上)

1. 集成厂商通道的sdk

将华为厂商通道的jar报放到libs目录中。

华为是通过读取agconnect-services.json来进行推送的,而其它的厂商,例如opple和小米只需要在build.gradle中文件中配置appId和appkey即可。

2. 获取agconnect-services.json文件

首先打开链接华为开发者联盟,注册华为开发者账号,新建项目并创建应用,一个项目下可以创建多个应用,例如自己开发的项目有三个环境:研发、预生产、生产, 那么就可以在这个项目中创建三个应用,然后在项目中配置多渠道打包即可。关于多渠道打包可以参考官方文档 配置支持多Flavor

当我们创建好项目和应用后,填写相关的信息, 如果自己的项目不需要上架的话,那么就不用提交审核,资料随便填写就行。 填写完成后,配置应用签名。填写应用信息和设置应用签名在下图所示页面

填写完应用信息,设置完应用签名后, 点击我的项目就会进入下图所示页面,图中1位置显示的就是项目的名称,点击下拉框就可以选择不同项目。 2的位置就是选择应用的下拉框, 可以在下拉框中选择不同环境的应用

在2的位置选择正式环境的应用,然后点击3的位置下载agconnect-services.json文件, 将其放在应用app的根目录中。

json文件的内容如下所示, client这个节点中的package_name"就是上面选择的正式环境应用的包名,appInfos就是不同环境(渠道)应用的信息 。 华为是通过读取这个json文件中的配置信息,而其它厂商是通过读取gradle中的配置信息进行推送的。

{..."client":{"cp_id":"akdjfklajlfkd","product_id":"lakjdflkjal","client_id":"alskdjflkad","client_secret":"alkjdflkaldfa","project_id":"lakjsdflka","app_id":"kjhkj","api_key":"alsdjfklalkdjfla","package_name":"com.app.develop"},"oauth_client":{"client_id":"adsfafadsf","client_type":1},"app_info":{"app_id":"adfadfs","package_name":"com.app.develop"},..."appInfos":[{"package_name":"com.app.develop.develop","client":{"app_id":"afdafda"},"app_info":{"package_name":"com.app.develop.develop","app_id":"asdfasfd"},"oauth_client":{"client_type":1,"client_id":"adfasdf"}},{"package_name":"com.app.develop.test","client":{"app_id":"adfafds"},"app_info":{"package_name":"com.app.develop.test","app_id":"adsfaf"},"oauth_client":{"client_type":1,"client_id":"adfafdadf"}}]

还有一点需要注意,就是不要忘记开通推送权限,如下图所示

3. 配置gradle文件

上面这种使用同一个json文件来配置多渠道的方式需要项目集成1.5.0.300及以上版本的AGC插件,所以需要在项目的gradle中进行配置, 可以参考 华为多渠道配置说明文档和极光提供的文档JPush SDK华为厂商集成文档(3.5.4 及以上)

repositories {...maven {url 'https://developer.huawei.com/repo/'}}dependencies {classpath 'com.huawei.agconnect:agcp:1.5.2.300'}
}allprojects {repositories {maven {url 'https://developer.huawei.com/repo/'}}
}

在app的module的gradle文件中配置如下代码


apply plugin: 'com.huawei.agconnect'
android {implementation 'com.huawei.hms:push:5.0.2.300'
}

4.配置极光后台

在极光的后台配置appid和app sec,app sec 对应的华为控制台中的Client Secret 如下图所示

然后打开厂商通道优先设置,否则默认会走极光通道

5. 测试通知

以上的配置都完成后,基本就算集成完成,运行项目,如果在控制台获取到了华为厂商通道的token,就说明集成成功了。然后使用极光返回的RegistrationId进行推送测试, 测试的时候一定要注意将手机的通知打开。

6. 关于debug和release环境的调试

在下图红框的位置分别添加debug和release证书sha256指纹,以便测试debug环境和release环境。

2.3 、集成小米厂商通道和opple厂商通道

这两个厂商通道集成起来就相对简单些, 都是先注册账号,创建多个测试环境的应用, 填写应用信息,配置签名(小米不需要设置,opple需要设置) ,开启推送服务(这一步千万不要忘记) 。 然后在项目的gradle文件中配置appkey和appid。 此处以小米为例

1. 创建应用

创建应用并填写相关信息,填写完成后如下图所示

点击应用信息就可以看到appid、appkey等信息。

2、配置项目

首先是将厂商通道的jar或者aar包放到libs目录中。

然后打开gradle文件,配置appkey和appid, 如下代码所示, MI-1234134 中中划线后边的值就是小米后台注册生成的appid, 一定不要漏掉前面的MI

   productFlavors {//内网研发develop {applicationId '*********.develop'....manifestPlaceholders = [XIAOMI_APPID            : "MI-1234134",XIAOMI_APPKEY           : "MI-lkjfdaljlkdfj",OPPO_APPID    : "OP-12345",OPPO_APPKEY   : "OP-12345",OPPO_APPSECRET: "OP-12345",]}//预生产check {applicationId '*********.test'resValue("string" , "name","预生产")....manifestPlaceholders = [XIAOMI_APPKEY : "MI-akdjhfkla",//小米平台注册的appkeyXIAOMI_APPID  : "MI-alkjdflka",//小米平台注册的appid//对应的是预生产包名和debug签名OPPO_APPID    : "OP-alkjdfla",OPPO_APPKEY   : "OP-lksjdfgkskldf",OPPO_APPSECRET: "OP-qoieuropqure",]}
}

opple需要配置三个值,appid和appkey分别对应opple控值台注册生成的appid和appkey, OPPO_APPSECRET对应的是下图中的 appsecret

3. 测试推送

和测试华为推送厂商通道一样,如果在日志中能够获取到小米的返回的token,就说明集成成功了,然后在极光控制台使用RegistrationId进行推送。

需要注意小米部分型号手机需要将通知设置中的广告营销选项中的允许通知开关打开,才可以收到推送。

集成极光推送和厂商通道相关总结相关推荐

  1. Android 集成极光推送和厂商通道

    JPush 产品简介 Push 是经过考验的大规模 App 推送平台,每天推送消息量级为数百亿条. 开发者集成 SDK 后,可以通过调用 API 推送消息.同时,JPush 提供可视化的 web 端控 ...

  2. Android 极光推送华为厂商通道集成问题记录

    本人根据极光推送文档华为厂商通道集成指南集成华为厂商通道后,一直并未打印上面的成功集成华为厂商通道的标志,最后发现只在华为开发者平台创建项目及应用,但是没有开通项目推送服务权限,也是被自己蠢哭了,在华 ...

  3. 极光推送(厂商通道参数申请和uniapp集成SDK),广播推送,别名设置,标签设置等

    本文旨在通过极光官方文档进行uniapp安卓移动应用的信息推广: 主要流程: 1.极光推送官方账号的注册和登录,创建应用,获取到appid 2.进行Android集成,配置应用包名和厂商通道参数(厂商 ...

  4. android极光推送 小米,极光推送- 小米厂商通道集成指南 - 极光文档

    JPush SDK 小米通道集成指南 概述 在国内 Android 生态中,推送通道都是由终端与云端之间的长链接来维持,严重依赖于应用进程的存活状态.如今一些手机厂家会在自家 rom 中做系统级别的推 ...

  5. Java中集成极光推送实现给Android提送消息通知(附代码下载)

    场景 Android中集成极光推送实现推送消息通知与根据别名指定推送附示例代码下载: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...

  6. 极光推送 简书android,(Android)react-native集成极光推送

    在Android中使用reactnative集成极光推送步骤如下: (1)在AndroidManifest中声明网络权限,获取包名到极光推送官网添加应用,获取AppKey,该key需要注册到应用中以获 ...

  7. Android第三方SDK集成 —— 极光推送

    前言: 本文前篇,可以帮助朋友们快速集成极光推送.本文后篇,是我自己项目实践的一些总结和心得,应该对读者们还是很有参考价值的,相信读完这篇文章,你会对极光推送有更加深入的理解,而不仅仅只是会集成而已. ...

  8. 三分钟帮你集成极光推送——和那些可能你不知道的事

    本文简介:本文前篇,可以帮助朋友们快速集成极光推送.本文后篇,是我自己项目实践的一些总结和心得,应该对读者们还是很有参考价值的,相信读完这篇文章,你会对极光推送有更加深入的理解,而不仅仅只是会集成而已 ...

  9. React-Native集成极光推送(Android和IOS)

    React-Native集成极光推送的具体流程如下: 本文选取的是极光官方维护的react-native推送插件,github地址:https://github.com/jpush/jpush-rea ...

  10. Android集成极光推送踩坑(二)升级篇

    转载请标明出处 http://blog.csdn.net/mohan6/article/details/74133186 本文作者:[默寒的博客] 前言 前段时间针对集成极光推送写了篇文章( Andr ...

最新文章

  1. 黑客声称盗取微软GitHub账号500GB数据,网友:这些最终都会开源的
  2. Thrift序列化字节数组存取redis VS 对象转Json存取Redis
  3. LeetCode之Sqrt(x)
  4. 笨办法学 Python · 续 练习 11:`uniq`
  5. 用Windows Server 2003配置×××
  6. mvc html.radiobutton 选中,asp.net-mvc - 如何使用RadioButtonFor选择单选按钮中的任何一个并包含if else语句 - 堆栈内存溢出...
  7. 使用命令行修改当前gnome终端的名称技术
  8. 中兴笔试c语言,中兴c语言笔试题
  9. python实现循环赛日程表问题的算法_循环赛日程表问题
  10. SEM和TEM的相同点和不同点
  11. 我的wow血精灵圣骑士,晒晒
  12. 计算机师范专业行业分析,前景最好的4个师范专业,有行业“香馍馍”之称,别不信...
  13. JZ45 扑克牌顺子
  14. bboss es对比直接使用es客户端的优势
  15. 从spaceX的火箭回收想到的一些事儿
  16. 3 个月前被裁员了,心情跌落谷底,直到我看到了这本神书…
  17. 使用CSS3动画做出光芒万丈的效果
  18. 2022-2027年中国中医药行业发展监测及投资战略研究报告
  19. 掌财社:股票交割日是什么意思?
  20. matplotlib 第二章学习

热门文章

  1. VAR模型分析联合内生变量的动态关系
  2. vm虚拟机显卡是不是比服务器主板上的要好,自VM11起,虚拟显卡的性能是增强还是削弱?...
  3. QAM调制 - IQ正交调制及星座图
  4. 如何更改 think-cell 图表的默认颜色?
  5. 苏教版六年级上册计算机教案,苏教版六年级数学上册最新全册教案
  6. 分享三种计算机专业毕业设计模板附下载地址
  7. 软媒魔方 v6.2.1.0 绿色纯净版及经典版
  8. 5V升压8.4V,5V转8.4芯片电路图
  9. 一款非常好用的日期插件(强烈推荐)
  10. WiFi 中继/桥接功能 — 基于OpenWRT路由器