6

这是在我的 MainActivity 中用作 BroadcastReceiver 的代码

    mRegistrationBroadcastReceiver = new BroadcastReceiver() {

        //When the broadcast received
        //We are sending the broadcast from GCMRegistrationIntentService

        @Override
        public void onReceive(Context context, Intent intent) {
            //If the broadcast has received with success
            //that means device is registered successfully
            if(intent.getAction().equals(GCMRegistrationIntentService.REGISTRATION_SUCCESS)){
                //Getting the registration token from the intent
                String token = intent.getStringExtra("token");
                //Displaying the token as toast
                Toast.makeText(getApplicationContext(), "Registration token:" + token, Toast.LENGTH_LONG).show();

                //if the intent is not with success then displaying error messages
            } else if(intent.getAction().equals(GCMRegistrationIntentService.REGISTRATION_ERROR)){
                Toast.makeText(getApplicationContext(), "GCM registration error!", Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(getApplicationContext(), "Error occurred", Toast.LENGTH_LONG).show();
            }
        }
    };

我按照这个关于 GCM 的教程

https://www.simplifiedcoding.net/android-push-notification-using-gcm-tutorial/

4

2 回答 2

13

通过滑动关闭应用程序(通常称为滑动它)并不能完全杀死应用程序。在 Android Enthusiasts 社区中查看这个答案以获得更详细的描述。你可以看到那里提到:

..它不会直接导致服务停止..

由于 GCM 通知的侦听器是Services,这实际上意味着您的应用仍有可能继续接收它们,无论它是否被刷掉

尽管滑动应用程序的结果也可能因它正在运行的设备而异,但可能会杀死/强制停止它或如上所述的其他方法,将停止后台进程。

但是,如果结果是,应用程序被杀死/强制停止,如上面链接的答案中所述:

停止是完全杀死应用程序——所有进程被杀死,所有服务被停止,所有通知被移除,所有警报被移除,等等。

这将导致该应用程序根本不会收到任何类型的通知,因为它是自 3.1 版以来为 Android 设计的,如本答案所述:

处于停止状态的应用程序不会收到广播 Intent。

停止状态为:

最初安装应用程序时(用户在应用程序中运行某些内容之前)或强制停止之后。您可以在此处找到更多相关信息:http: //developer.android.com/about/versions/android-3.1.html#launchcontrols

希望这有助于以某种方式清除一些事情。干杯! :D

于 2016-05-25T06:36:41.723 回答
1

您可以尝试GcmListenerService 当您通过滑出关闭应用程序时,该服务仍然在后台激活,您可以接收推送通知。除非用户手动强制停止应用程序设置,否则此服务可以帮助您。

于 2016-05-25T07:00:59.457 回答