上篇说到,在Application中获取registrationID的方法,有一个严重的错误,就是当第一次进入app中,获取不到registrationID,原因如下:极光还没有注册完成就获取registrationID,当然获取不到。
解决办法如下:
<receiver android:name=".activity.MyReceiver"> <intent-filter> <action android:name="cn.jpush.android.intent.REGISTRATION" /> <category android:name="com.youzheng.slqx" /> </intent-filter> </receiver>
public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); String title = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID); SharedPreferences id = context.getSharedPreferences("id", MODE_PRIVATE); id.edit().putString("id",title).commit(); }
原理:当极光注册成功会发送一条广播,通过JPushInterface.EXTRA_REGISTRATION_ID获取registrationID,一次保存,永久使用。