jpush自定义消息android,JPush推送(极光推送)推送消息

jpush推送

其正常工作的必要条件是:JPush SDK 与 JPush Server 的网络保持着连接。请参考这篇文章来做进一步的理解:极光推送技术原理:移动无线网络长连接。

968a4c61faab

推送流程

开发者集成 JPush Android SDK 到其应用里,JPush Android SDK 创建到 JPush Cloud 的长连接,为 App 提供永远在线的能力。

当开发者想要及时地推送消息到达 App 时,只需要调用 JPush API 推送,或者使用其他方便的智能推送工具,即可轻松与用户交流。

图中红色部分,是 JPush 与 App 开发者的接触点。手机客户端侧,App 需要集成 JPush SDK;服务器端部分,开发者调用 JPush REST API 来进行推送。

Android SDK 服务

JPush Android SDK 是作为 Android Service 长期运行在后台的,从而创建并保持长连接,保持永远在线的能力。

JPush可推送的内容如下

968a4c61faab

可推送的类型

其中红包需要集成第三方SDK

区别通知于自定义消息

通知即指在手机的通知栏(状态栏)上会显示的一条通知信息。

自定义消息是极光推送自己的概念。

自定义消息不是通知,所以不会被SDK展示到通知栏上。其内容完全由开发者自己定义。

自定义消息主要用于应用的内部业务逻辑。一条自定义消息推送过来,有可能没有任何界面显示

使用Jcenter自动集成说明

使用jcenter自动集成的开发者,不需要在项目中添加jar和so,jcenter会自动完成依赖;在AndroidManifest.xml中不需要添加任何JPush SDK 相关的配置,jcenter会自动导入。

如果开发者需要修改组件属性,可以在本地的 AndroidManifest 中定义同名的组件并配置想要的属性,然后用 xmlns:tools 来控制本地组件覆盖 jcenter 上的组件。

集成步骤

当然先要注册开发者账号

下载对应平台的SDK(android/ios/windowsphone/...)

配置

开发

测试推送

来一波最easy的demo

以android项目为例,使用Android Studio自动集(jcenter)成极光推送

创建AS项目

在JPUSH平台创建应用,获取appkey,创建时需提供项目的包名

在module:app下的build.gradle中添加依赖

compile 'cn.jiguang.sdk:jpush:3.0.3' // 此处以JPush 3.0.3 版本为例。 compile 'cn.jiguang.sdk:jcore:1.1.1' // 此处以JCore 1.1.1 版本为例。

module:app下的build.gradle>defaultConfig{}中添加以下代码

ndk {

//选择要添加的对应cpu类型的.so库。

abiFilters 'armeabi', 'armeabi-v7a', 'armeabi-v8a'

// 还可以添加 'x86', 'x86_64', 'mips', 'mips64'

}

manifestPlaceholders = [

JPUSH_PKGNAME : applicationId,

JPUSH_APPKEY : "eabbe4d26af31ef9b397c3a7", //JPush上注册的包名对应的appkey.

JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.

]

配置完毕了,点击一下如图按钮,as自动集成所需,不报错就可以进行下一项了

968a4c61faab

同步一下

在项目的Application中进行初始化JPUSH的SDK

@Override

public void onCreate() {

super.onCreate();

//初始化

JPushInterface.init(this);

//开启调试

JPushInterface.setDebugMode(true);

}

在JPUSH控制台进行推送测试

测试结果提示:

按以上操作就简单集成了,后台推送的消息也能准确接收到

在系统通知栏可以看见图标为android中经典的icon(机器人图标)

发送通知和富媒体消息下的URL消息可准确收到

自定义消息后台显示成功,通知栏不显示(这个属于正常情况,需显示还需要自己操作)

富媒体消息下的模板后台显示发送成功,手机上未收到消息

针对以上出现问题的(使用jcenter集成)解决方案

如何设置推送显示项目所需的图标?

官方文档特别说明

说明:若没有res/drawable-xxxx/jpush_notification_icon这个资源默认使用应用图标作为通知icon,在5.0以上系统将应用图标作为statusbar icon可能显示不正常,用户可定义没有阴影和渐变色的icon替换这个文件,文件名不要变。

尝试:将自己的图片改名为jpush_notification_icon放到res/drawable-xxxx文件夹,重新运行仍然显示默认icon

终极方案

基于上面出现的问题,如何才能接收到富媒体消息?

原因:未配置PushActivity组件

必须将压缩包 res 中的资源放到我们自己的项目的对应文件夹,并按照官方示例 AndroidManifest.xml配置 PushActivity 组件

终极方案

基于上面出现的问题,如何才能接收到自定义消息并显示到所发送的消息?

自定义消息:SDK 不会把自定义消息展示到通知栏。

调试时,需要到日志里才可以看到服务器端推送的自定义消息。自定义消息一定要由开发者写 接收推送消息 来处理收到的消息

自定义广播接收器MyReceiver(采用静态注册方式)

AndroidManifest.xml注册广播配置,这里添加所有action具体项目可根据实际情况配置

android:enabled="true"

>

广播中的每个action详情功能说明,请查看官方文档API-接收推送消息Receiver

附上项目完整MyReceiver

public class MyReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

Bundle bundle = intent.getExtras();

Log.d(TAG, "onReceive - " + intent.getAction());

if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {

} else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {

// 自定义消息不会展示在通知栏,完全要开发者写代码去处理

String content = bundle.getString(JPushInterface.EXTRA_MESSAGE);

String extra = bundle.getString(JPushInterface.EXTRA_EXTRA);

Toast.makeText(context, "自定义消息" + content + "\nextra" + extra, Toast.LENGTH_SHORT).show();

//TODO 可推送json过来,接收到再解析

} else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {

System.out.println("收到了通知");

// 在这里可以做些统计,或者做些其他工作

} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent

.getAction())) {

System.out.println("用户点击打开了通知");

// 在这里可以自己写代码去定义用户点击后的行为

Intent i = new Intent(context, MainActivity.class); // 自定义打开的界面

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(i);

} else {

Log.d(TAG, "Unhandled intent - " + intent.getAction());

}

}

}

持续更新中.......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值