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

jpush推送

其正常工作的必要條件是:JPush SDK 與 JPush Server 的網(wǎng)絡(luò)保持著連接。請(qǐng)參考這篇文章來(lái)做進(jìn)一步的理解:極光推送技術(shù)原理:移動(dòng)無(wú)線網(wǎng)絡(luò)長(zhǎng)連接歼郭。

推送流程

開(kāi)發(fā)者集成 JPush Android SDK 到其應(yīng)用里,JPush Android SDK 創(chuàng)建到 JPush Cloud 的長(zhǎng)連接儿奶,為 App 提供永遠(yuǎn)在線的能力挖腰。
當(dāng)開(kāi)發(fā)者想要及時(shí)地推送消息到達(dá) App 時(shí)词身,只需要調(diào)用 JPush API 推送,或者使用其他方便的智能推送工具贴捡,即可輕松與用戶交流忽肛。
圖中紅色部分,是 JPush 與 App 開(kāi)發(fā)者的接觸點(diǎn)烂斋。手機(jī)客戶端側(cè)屹逛,App 需要集成 JPush SDK础废;服務(wù)器端部分,開(kāi)發(fā)者調(diào)用 JPush REST API 來(lái)進(jìn)行推送罕模。

  • Android SDK 服務(wù)
    JPush Android SDK 是作為 Android Service 長(zhǎng)期運(yùn)行在后臺(tái)的评腺,從而創(chuàng)建并保持長(zhǎng)連接,保持永遠(yuǎn)在線的能力淑掌。

  • JPush可推送的內(nèi)容如下

可推送的類(lèi)型
  • 其中紅包需要集成第三方SDK
  • 區(qū)別通知于自定義消息
    通知即指在手機(jī)的通知欄(狀態(tài)欄)上會(huì)顯示的一條通知信息蒿讥。
    自定義消息是極光推送自己的概念。
    自定義消息不是通知抛腕,所以不會(huì)被SDK展示到通知欄上芋绸。其內(nèi)容完全由開(kāi)發(fā)者自己定義。
    自定義消息主要用于應(yīng)用的內(nèi)部業(yè)務(wù)邏輯兽埃。一條自定義消息推送過(guò)來(lái)侥钳,有可能沒(méi)有任何界面顯示

使用Jcenter自動(dòng)集成說(shuō)明

使用jcenter自動(dòng)集成的開(kāi)發(fā)者适袜,不需要在項(xiàng)目中添加jar和so柄错,jcenter會(huì)自動(dòng)完成依賴;在AndroidManifest.xml中不需要添加任何JPush SDK 相關(guān)的配置苦酱,jcenter會(huì)自動(dòng)導(dǎo)入售貌。
如果開(kāi)發(fā)者需要修改組件屬性,可以在本地的 AndroidManifest 中定義同名的組件并配置想要的屬性疫萤,然后用 xmlns:tools 來(lái)控制本地組件覆蓋 jcenter 上的組件颂跨。

集成步驟

  • 當(dāng)然先要注冊(cè)開(kāi)發(fā)者賬號(hào)
  • 下載對(duì)應(yīng)平臺(tái)的SDK(android/ios/windowsphone/...)
  • 配置
  • 開(kāi)發(fā)
  • 測(cè)試推送

來(lái)一波最easy的demo

以android項(xiàng)目為例,使用Android Studio自動(dòng)集(jcenter)成極光推送

  • 創(chuàng)建AS項(xiàng)目
  • 在JPUSH平臺(tái)創(chuàng)建應(yīng)用扯饶,獲取appkey,創(chuàng)建時(shí)需提供項(xiàng)目的包名
  • 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 {
            //選擇要添加的對(duì)應(yīng)cpu類(lèi)型的.so庫(kù)尾序。
            abiFilters 'armeabi', 'armeabi-v7a', 'armeabi-v8a'
            // 還可以添加 'x86', 'x86_64', 'mips', 'mips64'
        }
 manifestPlaceholders = [
                JPUSH_PKGNAME : applicationId,
                JPUSH_APPKEY : "eabbe4d26af31ef9b397c3a7", //JPush上注冊(cè)的包名對(duì)應(yīng)的appkey.
                JPUSH_CHANNEL : "developer-default", //暫時(shí)填寫(xiě)默認(rèn)值即可.
        ]

配置完畢了钓丰,點(diǎn)擊一下如圖按鈕,as自動(dòng)集成所需每币,不報(bào)錯(cuò)就可以進(jìn)行下一項(xiàng)了


同步一下
  • 在項(xiàng)目的Application中進(jìn)行初始化JPUSH的SDK
@Override
    public void onCreate() {
        super.onCreate();
        //初始化
        JPushInterface.init(this);
        //開(kāi)啟調(diào)試
        JPushInterface.setDebugMode(true);
    }
  • 在JPUSH控制臺(tái)進(jìn)行推送測(cè)試

測(cè)試結(jié)果提示:

  • 按以上操作就簡(jiǎn)單集成了携丁,后臺(tái)推送的消息也能準(zhǔn)確接收到
  • 在系統(tǒng)通知欄可以看見(jiàn)圖標(biāo)為android中經(jīng)典的icon(機(jī)器人圖標(biāo))
  • 發(fā)送通知富媒體消息下的URL消息可準(zhǔn)確收到
  • 自定義消息后臺(tái)顯示成功,通知欄不顯示(這個(gè)屬于正常情況兰怠,需顯示還需要自己操作)
  • 富媒體消息下的模板后臺(tái)顯示發(fā)送成功梦鉴,手機(jī)上未收到消息

針對(duì)以上出現(xiàn)問(wèn)題的(使用jcenter集成)解決方案

如何設(shè)置推送顯示項(xiàng)目所需的圖標(biāo)?

官方文檔特別說(shuō)明
說(shuō)明:若沒(méi)有res/drawable-xxxx/jpush_notification_icon這個(gè)資源默認(rèn)使用應(yīng)用圖標(biāo)作為通知icon揭保,在5.0以上系統(tǒng)將應(yīng)用圖標(biāo)作為statusbar icon可能顯示不正常肥橙,用戶可定義沒(méi)有陰影和漸變色的icon替換這個(gè)文件,文件名不要變秸侣。
嘗試:將自己的圖片改名為jpush_notification_icon放到res/drawable-xxxx文件夾存筏,重新運(yùn)行仍然顯示默認(rèn)icon

  • 終極方案

基于上面出現(xiàn)的問(wèn)題娜庇,如何才能接收到富媒體消息?

  • 原因:未配置PushActivity組件
    必須將壓縮包 res 中的資源放到我們自己的項(xiàng)目的對(duì)應(yīng)文件夾方篮,并按照官方示例 AndroidManifest.xml配置 PushActivity 組件

  • 終極方案

基于上面出現(xiàn)的問(wèn)題名秀,如何才能接收到自定義消息并顯示到所發(fā)送的消息?

自定義消息:SDK 不會(huì)把自定義消息展示到通知欄藕溅。
調(diào)試時(shí)匕得,需要到日志里才可以看到服務(wù)器端推送的自定義消息。自定義消息一定要由開(kāi)發(fā)者寫(xiě) 接收推送消息 來(lái)處理收到的消息

  • 自定義廣播接收器MyReceiver(采用靜態(tài)注冊(cè)方式)
  • AndroidManifest.xml注冊(cè)廣播配置,這里添加所有action具體項(xiàng)目可根據(jù)實(shí)際情況配置
 <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>

廣播中的每個(gè)action詳情功能說(shuō)明巾表,請(qǐng)查看官方文檔API-接收推送消息Receiver

附上項(xiàng)目完整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())) {
            // 自定義消息不會(huì)展示在通知欄汁掠,完全要開(kāi)發(fā)者寫(xiě)代碼去處理
            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過(guò)來(lái),接收到再解析

                    } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
            System.out.println("收到了通知");
            // 在這里可以做些統(tǒng)計(jì)集币,或者做些其他工作
        } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent
                .getAction())) {
            System.out.println("用戶點(diǎn)擊打開(kāi)了通知");
            // 在這里可以自己寫(xiě)代碼去定義用戶點(diǎn)擊后的行為
            Intent i = new Intent(context, MainActivity.class); // 自定義打開(kāi)的界面
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        } else {
            Log.d(TAG, "Unhandled intent - " + intent.getAction());
        }
    }
}

持續(xù)更新中.......

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末考阱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鞠苟,更是在濱河造成了極大的恐慌乞榨,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件当娱,死亡現(xiàn)場(chǎng)離奇詭異吃既,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)跨细,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)鹦倚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人冀惭,你說(shuō)我怎么就攤上這事震叙。” “怎么了散休?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵媒楼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我溃槐,道長(zhǎng)匣砖,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任昏滴,我火速辦了婚禮猴鲫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谣殊。我一直安慰自己拂共,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布姻几。 她就那樣靜靜地躺著宜狐,像睡著了一般势告。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上抚恒,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天咱台,我揣著相機(jī)與錄音,去河邊找鬼俭驮。 笑死回溺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的混萝。 我是一名探鬼主播遗遵,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼逸嘀!你這毒婦竟也來(lái)了车要?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤崭倘,失蹤者是張志新(化名)和其女友劉穎翼岁,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體绳姨,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡登澜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年阔挠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了飘庄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡购撼,死狀恐怖跪削,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情迂求,我是刑警寧澤碾盐,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站揩局,受9級(jí)特大地震影響毫玖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凌盯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一付枫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧驰怎,春花似錦阐滩、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)继效。三九已至,卻和暖如春装获,著一層夾襖步出監(jiān)牢的瞬間瑞信,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工穴豫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喧伞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓绩郎,卻偏偏與公主長(zhǎng)得像潘鲫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肋杖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容