極光推送第二篇:消息處理
極光推送第三篇:消息跳轉(zhuǎn)和自定義
相信很多人都是用的極光推送载佳,因?yàn)槊趾每词跆铡9俜揭灿形臋n:https://docs.jiguang.cn//jpush/client/Android/android_sdk/屉来,但我覺(jué)得太雜太亂了,還是打算自己總結(jié)一下自動(dòng)集成,因?yàn)閼校圆皇謩?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)入
- 注意 :如果需要【處理收到的消息】、使用 3.0.7 版本支持的別名與標(biāo)簽的新接口又官,AndroidManifest 中的自定義廣播接收器仍需開(kāi)發(fā)者手動(dòng)配置延刘,參考 SDK 壓縮包里的 AndroidManifest.xml 樣例文件。
1.引入sdk:極光現(xiàn)在采用模塊化引入六敬,所以jcore
核心是所有的極光服務(wù)都要引入的碘赖,然后我們只需要再引入推送jpush
就可以了:
- a.在
dependencies
引入相關(guān)的SDK
implementation 'cn.jiguang.sdk:jpush:3.3.2'
implementation 'cn.jiguang.sdk:jcore:2.0.1'
- b.在
android{defaultConfig{}}
中配置:ndk(cup的支持)
ndk {
//選擇要添加的對(duì)應(yīng) cpu 類型的 .so 庫(kù)。
abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a','x86', 'x86_64', 'mips', 'mips64'
}
- c.在
android{defaultConfig{}}
中配置:manifestPlaceholders(包名,key,渠道)
manifestPlaceholders = [
JPUSH_PKGNAME : applicationId,
JPUSH_APPKEY : "你的 Appkey ", //JPush 上注冊(cè)的包名對(duì)應(yīng)的 Appkey.
JPUSH_CHANNEL : "developer-default", //暫時(shí)填寫默認(rèn)值即可.
]
2.配置JCommonService:說(shuō)好的在 AndroidManifest.xml 中不需要添加配置普泡,但【極光】說(shuō):使用 JCore 2.0.0 及以上版本播掷,則需要配置一個(gè)Service,才能更穩(wěn)定撼班。我們肯定希望更穩(wěn)定捌缧佟!所以:
a.在創(chuàng)建自己的PushService
import cn.jpush.android.service.JCommonService;
public class PushService extends JCommonService {
}
b.在AndroidManifest.xml
中配置
<!-- Since JCore2.0.0 Required SDK核心功能-->
<!-- 可配置android:process參數(shù)將Service放在其他進(jìn)程中砰嘁;android:enabled屬性不能是false -->
<!-- 這個(gè)是自定義Service件炉,要繼承極光JCommonService,可以在更多手機(jī)平臺(tái)上使得推送通道保持的更穩(wěn)定 -->
<service android:name="com.smallcake.jpush.PushService"
android:enabled="true"
android:exported="false"
android:process=":pushcore">
<intent-filter>
<action android:name="cn.jiguang.user.service.action" />
</intent-filter>
</service>
3.配置JPushMessageReceiver:說(shuō)好的在 AndroidManifest.xml 中不需要添加配置般码,但【極光】說(shuō):要自己處理消息妻率,就還是要寫一個(gè) 廣播接收器。我們肯定要自己處理一些消息鞍遄!宫静!所以:
a.創(chuàng)建
/**
* 自定義JPush message 接收器,包括操作tag/alias的結(jié)果返回(僅僅包含tag/alias新接口部分)
* */
public class MyJPushMessageReceiver extends JPushMessageReceiver {
@Override
public void onTagOperatorResult(Context context,JPushMessage jPushMessage) {
super.onTagOperatorResult(context, jPushMessage);
}
@Override
public void onCheckTagOperatorResult(Context context,JPushMessage jPushMessage){
super.onCheckTagOperatorResult(context, jPushMessage);
}
@Override
public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
super.onAliasOperatorResult(context, jPushMessage);
}
@Override
public void onMobileNumberOperatorResult(Context context, JPushMessage jPushMessage) {
super.onMobileNumberOperatorResult(context, jPushMessage);
}
}
b.配置
<!-- Required since 3.0.7 -->
<!-- 新的 tag/alias 接口結(jié)果返回需要開(kāi)發(fā)者配置一個(gè)自定的廣播 -->
<!-- 3.3.0開(kāi)始所有事件將通過(guò)該類回調(diào) -->
<!-- 該廣播需要繼承 JPush 提供的 JPushMessageReceiver 類, 并如下新增一個(gè) Intent-Filter -->
<receiver
android:name="com.smallcake.jpush.MyJPushMessageReceiver"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
<category android:name="您應(yīng)用的包名" />
</intent-filter>
</receiver>
4.初始化:在我們自己的Application中初始化,并設(shè)置調(diào)試開(kāi)關(guān)
JPushInterface.init(this);
JPushInterface.setDebugMode(BuildConfig.DEBUG);
如果你設(shè)置了開(kāi)啟混淆minifyEnabled true
,記得添加混淆配置:
#極光推送
-dontoptimize
-dontpreverify
-dontwarn cn.jpush.**
-keep class cn.jpush.** { *; }
-keep class * extends cn.jpush.android.helpers.JPushMessageReceiver { *; }
-dontwarn cn.jiguang.**
-keep class cn.jiguang.** { *; }
配置好這些后券时,我們?nèi)O光后臺(tái)發(fā)送一條消息測(cè)試一下孤里,效果如下:
下一篇我們來(lái)看看消息的處理: