关闭应用程序时如何避免处理来自 GCM 的推送通知

How to avoid processing push notifications from GCM when the app is closed

我正在将推送通知集成到具有这种特殊行为的应用程序中:

当用户使用最近的应用程序堆栈(或类似的东西)关闭应用程序时,我的问题就来了,因为并不总是调用 onDestroy() 方法,并且应用程序无法从 GCM 中删除令牌。如果我此时发送推送通知,应用程序会对其进行处理。

我一直在寻找这个问题,似乎每个人都有相反的问题,当应用程序关闭时他们没有收到通知。

有没有办法配置广播接收器在关闭时不唤醒我的应用程序?或者有什么方法可以做到这一点?

谢谢

使用广播接收器。在Activity的onStart中注册,在onStop中注销。

如果您有多个 activity 并在 GCM IntentService 中执行某些您希望阻止的操作(如果您的应用不是 运行),则在共享首选项中维护一个计数并增加它在所有活动中的 OnStart 和减少 onStop。当您获得 GCM 检查计数是否为正时,以确保您的应用程序处于前台。

有两种方法可以实现,

第一种方法: 当您从堆栈中清除您的应用程序时调用此方法,我的意思是在您的应用程序任务中,OnDestroy 或 OnTerminate.This 将清除您的设备令牌,因此您将不再收到通知。

但是你必须确保当你返回你的应用程序时你需要重新注册并将你的设备令牌发送到服务器以便你可以正常接收通知。

GCMRegistrar.unregister(上下文);

第二种方法: 您可以使用 sharedpreferences,您可以使用布尔值创建它 value.You 在启动应用程序时必须将值设置为 true,在清除它时必须将值设置为 false。

然后在你的 GCMIntentService class 你可以在 onMessage 使用这个首选项 method.you 可以在那里设置条件如果值为真那么它会触发通知否则什么都不会显示。

在这种情况下,服务器会触发通知,但您的通知不会显示在通知栏中。

希望这些信息对您有所帮助。