美文网首页Android开发
关于APP进程被杀死,极光推送收不到消息的解决办法

关于APP进程被杀死,极光推送收不到消息的解决办法

作者: ana生 | 来源:发表于2018-01-24 14:15 被阅读752次

推送是每一个APP必不可少的一部分,这几天正好在做这一块,所以总结一下遇到的一些问题。在APP被杀死的情况下,对应的推送service也一起被杀死了,这个时候我们怎么能够收到后台的推送呢?
解决办法很简单,但是也特别粗暴,在mainfest中给application设置这个属性android:persistent="true",看意思我们就知道,持续的,一直的,这样的话,app是杀不死的,推送肯定有可以收到了。但是强烈建议不要这样做,因为这样就像某些流氓软件一样了,毕竟我们做个应用出来,也不想让别人以为我们的是流氓软件吧。好了,重头戏来了,最后一种方法,也是我比较推荐的一种。用Broadcast Receivers。我们都知道,推送实际上应用的就是广播,这里我们自定义一个广播接收器,让它继承系统的Broadcast Receivers,然后复写它的onReceive方法,在onReceive里面开启推送的服务。最后在mainfest中去注册我们自定义的广播接收器。这里一定要用静态注册的广播接收器。如果是动态注册的,APP被杀死后,广播接收器也会被杀死。下面我已极光推送为例。

//自定义的接收器

public class BoardcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
 Intent pushintent=new Intent(context,PushService.class);//启动极光推送的服务
    context.startService(pushintent);
}
}

//静态注册接收器
 <receiver
        android:name="BoardcastReceiver"
        android:enabled="true">
        <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" />
            <action android:name="android.intent.action.BOOT_COMPLETED"/><!--开机广播-->
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/><!--网络状态改变广播-->
            <category android:name="com.woman.RCTest" />
        </intent-filter>
    </receiver>

相关文章

网友评论

  • 7e625c8993c4:你这不行啊,应用退出,收不到通知啊

本文标题:关于APP进程被杀死,极光推送收不到消息的解决办法

本文链接:https://www.haomeiwen.com/subject/vyluaxtx.html