JPush推送(极光推送)推送消息

jpush推送

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

推送流程

开发者集成 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可推送的内容如下

可推送的类型
  • 其中红包需要集成第三方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自动集成所需,不报错就可以进行下一项了


同步一下
  • 在项目的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具体项目可根据实际情况配置
 <receiver android:name=".MyReceiver"
            android:enabled="true"
            >
            <intent-filter>
                <action android:name="cn.jpush.android.intent.REGISTRATION" />
                <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
                <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
                <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
                <action android:name="cn.jpush.android.intent.NOTIFICATION_CLICK_ACTION" />
                <action android:name="cn.jpush.android.intent.CONNECTION" />
                <category android:name="com.pushdemo" />
            </intent-filter>
        </receiver>

广播中的每个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());
        }
    }
}

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容