关于极光的升级基本只要按照他的官方文档去修改就好了,但是有两个点还是要注意一下,否则直接导致收不到推送:
1.关于JPushMessageReceiver
<!-- Required since 3.0.7 --> <!-- 新的 tag/alias 接口结果返回需要开发者配置一个自定的广播 --> <!-- 3.3.0开始所有事件将通过该类回调 --> <!-- 该广播需要继承 JPush 提供的 JPushMessageReceiver 类, 并如下新增一个 Intent-Filter --> <receiver android:name=".receiver.PushMessageReceiver" android:enabled="true" android:exported="false" > <intent-filter> <action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" /> <category android:name="包名" /> </intent-filter> </receiver>
注释里面写着3.3.0开始所有事件将通过该类回调,也就是说你原来自定义的receiver已经失效了,需要自定义一个新的继承JPushMessageReceiver,在新的receiver中处理接收消息。如果你还想用原来的receiver的话,那就写一个空的继承,如果你复写了父类的方法,且添加新代码,则一定要调用super父类的方法,否则原来的receiver就失效了。
备注:以下是老版本自定义的receiver <!-- User defined. 用户自定义的广播接收器--> <receiver android:name=".receiver.MyReceiver" android:enabled="true" android:exported="false"> <intent-filter> <!--Required 用户注册SDK的intent--> <action android:name="cn.jpush.android.intent.REGISTRATION" /> <!--Required 用户接收SDK消息的intent--> <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!--Required 用户接收SDK通知栏信息的intent--> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!--Required 用户打开自定义通知栏的intent--> <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!-- 接收网络变化 连接/断开 since 1.6.3 --> <action android:name="cn.jpush.android.intent.CONNECTION" /> <category android:name="包名" /> </intent-filter> </receiver>
2.关于JCommonService
<!-- Since JCore2.0.0 Required SDK核心功能--> <!-- 可配置android:process参数将Service放在其他进程中;android:enabled属性不能是false --> <!-- 这个是自定义Service,要继承极光JCommonService,可以在更多手机平台上使得推送通道保持的更稳定 --> <service android:name=".receiver.PushService" android:enabled="true" android:exported="false" android:process=":pushcore"> <intent-filter> <action android:name="cn.jiguang.user.service.action" /> </intent-filter> </service>
用不到的话也可以写一个空类来继承JCommonService。
3.总结:上述两个类都必须得新增,否则推送无法正常接收。新版本有很多功能大家也可以研究一下,其中在发送的时候可以控制提示声,震动等,以前默认的老版本都是开启的。