推送有很多,常用的有极光,个推,友盟推送等,我们这里简单介绍一下极光推送的使用和一些注意事项

1.首先在 module 的 gradle 中添加依赖和AndroidManifest的替换变量。

android {......defaultConfig {applicationId "com.xxx.xxx" //JPush上注册的包名.......ndk {//选择要添加的对应cpu类型的.so库。 abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'}manifestPlaceholders = [JPUSH_PKGNAME : applicationId,JPUSH_APPKEY : "你的appkey", //JPush上注册的包名对应的appkey.JPUSH_CHANNEL : "自定义渠道名称", //用户渠道统计的渠道名称]......}......
}
dependencies {......compile 'cn.jiguang.sdk:jpush:3.0.5'  // 此处以JPush 3.0.5 版本为例。compile 'cn.jiguang.sdk:jcore:1.1.2'  // 此处以JCore 1.1.2 版本为例。......
}

官方文档上说:
注 : 如果在添加以上 abiFilter 配置之后android Studio出现以下提示:
NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin.
则在 Project 根目录的gradle.properties文件中添加:
android.useDeprecatedNdk=true
但我并没有遇到过,还有上面的JPUSH_CHANNEL : “developer-default”, 暂时填写默认值developer-default即可.

然后是添加权限

 <!-- Required --><uses-permission android:name="com.example.administrator.testjpush.permission.JPUSH_MESSAGE" /><uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.VIBRATE" /><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!-- Optional. Required for location feature --><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 --><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /><uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

然后官方文档上写了好多东西:

<!-- Required SDK 核心功能--><!-- 可配置android:process参数将PushService放在其他进程中 --><service
            android:name="cn.jpush.android.service.PushService"android:enabled="true"android:exported="false" ><intent-filter><action android:name="cn.jpush.android.intent.REGISTER" /><action android:name="cn.jpush.android.intent.REPORT" /><action android:name="cn.jpush.android.intent.PushService" /><action android:name="cn.jpush.android.intent.PUSH_TIME" /></intent-filter></service><!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 --><!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 --><service
             android:name="cn.jpush.android.service.DaemonService"android:enabled="true"android:exported="true"><intent-filter ><action android:name="cn.jpush.android.intent.DaemonService" /><category android:name="您应用的包名"/></intent-filter></service><!-- Required SDK核心功能--><receiver
            android:name="cn.jpush.android.service.PushReceiver"android:enabled="true" ><intent-filter android:priority="1000"> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> <category android:name="您应用的包名"/> </intent-filter><intent-filter><action android:name="android.intent.action.USER_PRESENT" /><action android:name="android.net.conn.CONNECTIVITY_CHANGE" /></intent-filter><!-- Optional --><intent-filter><action android:name="android.intent.action.PACKAGE_ADDED" /><action android:name="android.intent.action.PACKAGE_REMOVED" /><data android:scheme="package" /></intent-filter></receiver><!-- Required SDK核心功能--><activity
            android:name="cn.jpush.android.ui.PushActivity"android:configChanges="orientation|keyboardHidden"android:theme="@android:style/Theme.NoTitleBar"android:exported="false" ><intent-filter><action android:name="cn.jpush.android.ui.PushActivity" /><category android:name="android.intent.category.DEFAULT" /><category android:name="您应用的包名" /></intent-filter></activity><!-- SDK核心功能--><activity
            android:name="cn.jpush.android.ui.PopWinActivity"android:configChanges="orientation|keyboardHidden"android:exported="false"android:theme="@style/MyDialogStyle"><intent-filter><category android:name="android.intent.category.DEFAULT" /><category android:name="您应用的包名" /></intent-filter></activity><!-- Required SDK核心功能--><service
            android:name="cn.jpush.android.service.DownloadService"android:enabled="true"android:exported="false" ></service><!-- Required SDK核心功能--><receiver android:name="cn.jpush.android.service.AlarmReceiver" /><!-- User defined. 用户自定义的广播接收器--><receiver
             android:name="您自己定义的Receiver"android:enabled="true"><intent-filter><!--Required 用户注册SDK的intent--><action android:name="cn.jpush.android.intent.REGISTRATION" /> <!--Required 用户接收SDK消息的intent--> <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!--Required 用户接收SDK通知栏信息的intent--><action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!--Required 用户打开自定义通知栏的intent--><action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!-- 接收网络变化 连接/断开 since 1.6.3 --><action android:name="cn.jpush.android.intent.CONNECTION" /><category android:name="您应用的包名" /></intent-filter></receiver><!-- Required. For publish channel feature --><!-- JPUSH_CHANNEL 是为了方便开发者统计APK分发渠道。--><!-- 例如: --><!-- 发到 Google Play 的APK可以设置为 google-play; --><!-- 发到其他市场的 APK 可以设置为 xxx-market。 --><!-- 渠道统计报表位于控制台页面的 “统计”-“用户统计”-“渠道分布” 中--><meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/><!-- Required. AppKey copied from Portal --><meta-data android:name="JPUSH_APPKEY" android:value="您应用的Appkey"/> 

但我在项目中只是配置了接受的receiver

<receiver
            android:name=".MyBroadCastReceiver"android:enabled="true"><intent-filter><action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED"<category android:name="com.example.administrator.testjpush" />/></intent-filter></receiver>

其中的category是一定要配置的,亲测不配的话点击跳转不会到达我们指定的页面,而这里的NOTIFICATION_OPENED就是,,,恩,看文档吧

<action android:name="cn.jpush.android.intent.REGISTRATION" /> <!--Required  用户注册SDK的intent--><action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!--Required  用户接收SDK消息的intent--><action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!--Required  用户接收SDK通知栏信息的intent--><action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!--Required  用户打开自定义通知栏的intent--><action android:name="cn.jpush.android.intent.CONNECTION" /><!-- 接收网络变化 连接/断开 since 1.6.3 -->

然后我们就可以判断消息类型:

Bundle bundle = intent.getExtras();Logger.d(TAG, "onReceive - " + intent.getAction() + ", extras: " + AndroidUtil.printBundle(bundle));if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {Logger.d(TAG, "JPush用户注册成功");} else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {Logger.d(TAG, "接受到推送下来的自定义消息");} else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {Logger.d(TAG, "接受到推送下来的通知");receivingNotification(context,bundle);} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {Logger.d(TAG, "用户点击打开了通知");openNotification(context,bundle);} else {Logger.d(TAG, "Unhandled intent - " + intent.getAction());}

获取通知中的信息内容的方法是:

String title = bundle.getString(JPushInterface.EXTRA_NOTIFICATION_TITLE);Logger.d(TAG, " title : " + title);String message = bundle.getString(JPushInterface.EXTRA_ALERT);Logger.d(TAG, "message : " + message);String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);Logger.d(TAG, "extras : " + extras);

其中extras是json格式的,并且不不显示给用户,我们可以根据其中的字段做一些操作,例如客户点击跳转到指定页面,当然推送的内容也有差别,我们这里主要说的是通知,还有自定义消息和富媒体消息,这里先不做介绍,有需要再说,恩,先这么多吧

极光推送集成步骤及注意事项相关推荐

  1. Flutter极光推送集成小米厂商通道【教程】

    极光推送官方已经开发出Flutter版的插件,地址:https://pub.dev/packages/jpush_flutter 在Flutter项目里面的pubspec.yaml里面依赖极光推送:j ...

  2. 极光小课堂 | 极光推送集成解决方案

    1. 极光推送集成背景 最近在研究推送和长连接,调研了市场上的几家平台,综合考虑选择了极光推送.长连接保活一直是一个大问题,尤其是 Android 方面.在最近谷歌公司的几次更新之后,Android ...

  3. Android华为推送踩坑,极光推送集成华为遇到的坑?

    一.前言: 首先极光推送对各个厂商通道对接是没有在开发者平台提供文档的,需要申请VIP资格后,极光才会提供对应对接文档. 1.极光普通集成 1.步骤1 图片.png 2.步骤2 图片.png 3.步骤 ...

  4. 极光推送集成厂商通道指南

    转自:https://www.yuque.com/huangrongcai/bolg/etfchp 参考:极光厂商通道集成指南 https://www.yuque.com/docs/share/307 ...

  5. 极光推送android 区分开发测试,给自己的项目做极光推送的步骤

    极光推送(对客户端的app如天猫进行消息推送) 第一种:利用网页进行推送(下面按这种来介绍) 第二种:利用javase代码进行消息推送 使用步骤 1\登陆极光网址 2\注册后并登陆 3.点击用户名下的 ...

  6. 极光推送集成厂商通道(java)

    极光推送后台开发文档:https://docs.jiguang.cn//jpush/server/push/rest_api_v3_push/ 跟安卓商量好,只能启用安卓端已经集成的厂商通道: 以下封 ...

  7. 极光推送集成APP和web服务

    一.申请极光账号 1.极光地址:https://www.jiguang.cn/push 2.创建极光平台服务应用. 二.配置web端服务 1.导jar <dependency><gr ...

  8. 使用极光推送详细步骤

    首先进入官网https://www.jpush.cn/,先注册一个账号. 注册号以后,创建应用 1.点击右上角进入个人中心 2.点击创建应用 3.在创建应用界面输入自己项目的应用名和应用的包名,输入后 ...

  9. wrs-jpush极光推送原生app插件

    功能 支持通知消息.自定义消息,收到消息/点击消息通知回调 别名alias.标签tag管理.角标badge.Channel配置 厂家推送.厂商通道注册结果.token回调 支持app杀死时由点击消息启 ...

最新文章

  1. 这是人家大一新生开发的工具!网友:我好菜
  2. 福州大学计算机学院董晨老师,福州大学代表队高分斩获第三届福建省高校网络空间安全大赛冠军...
  3. linux下yum安装pgsql,CentOS7使用yum安装PostgreSQL和PostGIS的方法
  4. jdk8 calendar_JDK 8的Calendar.Builder
  5. 自动点击屏幕脚本代码_原来这么简单,一分钟学会引流脚本
  6. 名副其实!华为天才少年身份曝光!
  7. 和pythondjango后端_webGIS实践:4_0_python django后端搭建web工程
  8. python开发gui实战_python实战GUI界面+mysql
  9. Linux的java配置及tomcat的启动
  10. J2Cache SpringBoot集成(j2cache-spring-boot2-starter)
  11. Ubuntu18.04LTS安装TigerVNC
  12. 视频教程-Nodejs极速入门-Node.js
  13. 360cdn能挡住cc攻击_云防CDN是网页CC攻击的克星?cdn集群防御
  14. 埃隆 · 马斯克、山姆 · 奥特曼和 OpenAI 的秘史
  15. 【企业微信实现免密登录以及发送消息(企业内部应用)】
  16. QChart动态生成图表(曲线)
  17. 关于UGUI如何自动拓展父物体大小
  18. Ubuntu Server 12.04 搭建 hadoop 集群版环境——基于VirtualBox
  19. CAJ文献如何转成PDF?免费全篇转换的方法
  20. 佳能服务器维护,佳能产品维护工具(IJ Printer Assistant tool)

热门文章

  1. Eigen求解大型稀疏对称矩阵(Cholesky分解)
  2. 「数据架构」5分钟学会数据流程图:客户服务系统示例
  3. 如何更换服务器的IP地址?
  4. 企业3A信用证书办理有什么作用?评级内容有哪些?
  5. MIT 线性代数(16—18)读书笔记
  6. matlab中求立方根,MATLAB基础入门
  7. Endnote 中批量导出PDF
  8. KNN算法改进约会网站匹配效果
  9. MATLAB--数字图像处理 车牌识别之简易识别程序
  10. js验证用户输入的 座机/手机/固定电弧 格式是否正确