? ? 有些朋友覺得集成這些東西是很繁瑣很麻煩的一件事情,有些人覺得不就是看看文檔照著來一遍就OK的事情嗎?我覺得一篇詳細(xì)而簡潔的集成步驟才是入門人最需要的。
??一、添加資源
? ? 這里我自動(dòng)跳過了申請(qǐng)賬號(hào)的步驟:
首先,下載一份官方demo
然后,打開demo,將里面需要的資源CV到我們的項(xiàng)目中
1.解壓縮 jpush-android--3.x.x-release.zip 集成壓縮包。
2.復(fù)制 libs/jcore-android-1.x.x.jar 到工程 libs/ 目錄下。
3.復(fù)制 libs/jpush-android-3.x.x.jar 到工程 libs/ 目錄下。
4.復(fù)制 libs/(cpu-type)/libjcore1xy.so 到你的工程中存放對(duì)應(yīng)cpu類型的目錄下。
5.復(fù)制 res/ 中drawable-hdpi, layout, values文件夾中的資源文件到你的工程中 res/ 對(duì)應(yīng)同名的目錄下。
說明 1:若沒有res/drawable-xxxx/jpush_notification_icon這個(gè)資源默認(rèn)使用應(yīng)用圖標(biāo)作為通知icon,在5.0以上系統(tǒng)將應(yīng)用圖標(biāo)作為statusbar icon可能顯示不正常,用戶可定義沒有陰影和漸變色的icon替換這個(gè)文件,文件名不要變。
說明 2:使用android studio的開發(fā)者,如果使用jniLibs文件夾導(dǎo)入so文件,則僅需將所有cpu類型的文件夾拷進(jìn)去;如果將so文件添加在module的libs文件夾下,注意在module的gradle配置中添加一下配置:
android {
......
sourceSets {
main {
jniLibs.srcDirs = ['libs']
......
}
......
}
......
}
二、配置 AndroidManifest.xml
這里無論你是根據(jù)demo的里的Manifest也好還是官方文檔也好,代碼一定要注釋一定要寫好,以免東西太多,以后你自己都不知道那是哪了
付上極光文檔的鏈接:極光推送文檔









這里注意在圖7和圖8中涉及到兩個(gè)不同的Receiver
一個(gè)是接收普通通知以及富媒體的Receiver,一個(gè)是自定義別名標(biāo)簽的Receiver,
這里的這兩個(gè)receiver,都可以在官方demo中對(duì)應(yīng)找到,直接復(fù)制,
將每個(gè)action對(duì)應(yīng)邏輯,添加自己項(xiàng)目所需要的邏輯即可
在官方文檔的“進(jìn)階教程”中的通知VS自定義中,可以直接看到示例代碼,都是一樣的
三、API及參數(shù)
在項(xiàng)目的Appliaction中調(diào)用,init 只需要在應(yīng)用程序啟動(dòng)時(shí)調(diào)用一次該 API 即可。不明白可以參考官方demo
JPushInterface.setDebugMode(true);【項(xiàng)目上線要把調(diào)式模式改為false】
JPushInterface.init(this);
初始化推送服務(wù):public static void init(Context context);【這個(gè)API就是上面說的初始化的調(diào)用】
停止推送服務(wù):public static void stopPush(Context context);
恢復(fù)推送服務(wù):public static void resumePush(Context context);
判斷推送服務(wù)是否已經(jīng)被停止public static boolean isPushStopped(Context context);
其他的API可以在官方文檔中的“SDKAPI”中全部查看,這里不一一列舉了
參數(shù):
對(duì)于極光推送過來的消息,所對(duì)應(yīng)的參數(shù)為哪些?
1.全局唯一ID:
Bundle bundle = intent.getExtras();
String title = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);
2.保存服務(wù)器推送下來的消息的標(biāo)題。對(duì)應(yīng) API 消息內(nèi)容的 title 字段。Portal 推送消息界上不作展示
Bundle bundle = intent.getExtras();
String title = bundle.getString(JPushInterface.EXTRA_TITLE);
3.保存服務(wù)器推送下來的消息內(nèi)容。對(duì)應(yīng) API 消息內(nèi)容的 message 字段。對(duì)應(yīng) Portal 推送消息界面上的"自定義消息內(nèi)容”字段。
Bundle bundle = intent.getExtras();
String message = bundle.getString(JPushInterface.EXTRA_MESSAGE);
4.附加字段:
Bundle bundle = intent.getExtras();
String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
5.唯一標(biāo)識(shí)消息的ID,用于統(tǒng)計(jì)上報(bào):
Bundle bundle = intent.getExtras();
String file = bundle.getString(JPushInterface.EXTRA_MSG_ID);
6.推送通知界面上的“通知標(biāo)題”字段:
Bundle bundle = intent.getExtras();
String title = bundle.getString(JPushInterface.EXTRA_NOTIFICATION_TITLE);
7.推送通知界面上的“通知內(nèi)容”字段:
Bundle bundle = intent.getExtras();
String content = bundle.getString(JPushInterface.EXTRA_ALERT);
8.富媒體通知推送下載的HTML的文件路徑,用于展現(xiàn)WebView:
Bundle bundle = intent.getExtras();
String fileHtml = bundle.getString(JPushInterface.EXTRA_RICHPUSH_HTML_PATH);
9.富媒體通知推送下載的圖片資源的文件名,多個(gè)文件名用 “,” 分開。 與 “JPushInterface.EXTRA_RICHPUSH_HTML_PATH” 位于同一個(gè)路徑:
Bundle bundle = intent.getExtras();
String fileStr = bundle.getString(JPushInterface.EXTRA_RICHPUSH_HTML_RES);
String[] fileNames = fileStr.split(",");
總結(jié):至此,我們常用的步驟就這么多了,需要更多的豐富內(nèi)容,可以仔細(xì)的去再讀一遍官方的文檔
1、導(dǎo)入資源,配置Manifest
2、添加廣播,可以copy官方文檔實(shí)例代碼,也可以copy官方demo
3、根據(jù)API初始化極光推送,在廣播對(duì)應(yīng)的action中,獲取所需要的參數(shù)字段