如何停止GCMBaseIntentService以便不收到通知?

时间:2014-05-15 09:30:27

标签: android notifications google-cloud-messaging android-notifications

我已经在几乎所有应用中成功实施了GCM,以便我可以向用户发送通知。他们工作正常,但现在我希望我的用户决定他们是否想要通知。我们假设有一个切换按钮,用于确定设备是注册还是未注册。

我尝试了以下代码取消注册,但没有成功,我仍然能够收到通知

GCMRegistrar.setRegisteredOnServer(context, false);

GCMRegistrar.unregister(this)

我可以选择工作,就像我可以在我的服务器上放置一个false标志,因此通知不会在原点发送,或者如果用户禁用选项,我将不会在onMessage()中收听通知收到通知,但我不想要那个。

我希望GCMRegistrar将被取消注册,服务(GCMBaseIntentService)将被停止。

1 个答案:

答案 0 :(得分:1)

在您的班级中创建一个静态处理程序,您可以在其中注册gcm

    static Handler mHandler;

并在你的oncreate中

mHandler = new Handler()
    {
        public void handleMessage(android.os.Message msg) 
        {
            super.handleMessage(msg);
            if (msg.what == 0)
            {

                GCMRegistrar.unregister(context);

            }


        }
    };

现在向处理程序发送消息以取消注册此gcm。

        Message msg=MainActivity.mHandler.obtainMessage();
            msg.what=0;
            MainActivity.mHandler.sendMessage(msg);

这将触发mainActivity的处理程序以取消注册gcm。

试着帮助你。