我已经在几乎所有应用中成功实施了GCM,以便我可以向用户发送通知。他们工作正常,但现在我希望我的用户决定他们是否想要通知。我们假设有一个切换按钮,用于确定设备是注册还是未注册。
我尝试了以下代码取消注册,但没有成功,我仍然能够收到通知
GCMRegistrar.setRegisteredOnServer(context, false);
和
GCMRegistrar.unregister(this)
我可以选择工作,就像我可以在我的服务器上放置一个false标志,因此通知不会在原点发送,或者如果用户禁用选项,我将不会在onMessage()
中收听通知收到通知,但我不想要那个。
我希望GCMRegistrar将被取消注册,服务(GCMBaseIntentService)将被停止。
答案 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。
试着帮助你。