Android GCM:通知关闭后重复推送
Android GCM: duplicate push after notification dismiss
我正在使用 GCM 向 Android 设备发送通知并且它正确到达,但有一种情况是通知在被关闭后显示。重现步骤:
- 打开启动服务接收通知的应用程序。
- 发送带有
notification
负载的 gcm 消息。
- 通过滑动 left/right 这条通知来关闭通知。如果它有
action_click
元素,点击它也是有效的。
- 打开任务并关闭当前应用程序。
- 再次打开应用程序。当 GCM 服务再次启动时,它会收到之前关闭的通知。
我的代码是 google 使用 GcmListenerService
提供的 example 中最基本的代码。只需设置权限,将服务放在清单中,让 google 为您显示通知。当提供的场景发生时,我在服务的 onMessageReceive
中使用相同的数据被调用两次。
这是我发送给 GCM 的通知负载:
{
collapseKey: 'push',
delayWhileIdle: true,
timeToLive: 3600,
data: undefined,
notification: {
body: 'test message 2 updated',
title: 'Notification',
icon: 'myicon'
},
contentAvailable: false
}
编辑:
- 我使用的是
play-services-gcm:7.8.0
版本,但也用 7.5 测试过
- 我可以重复该过程 5 次,之后,通知将永远消失。
我终于解决了这个问题。使用新的 GCM 实现,无需启动提供信息的服务,Google 是谁根据推送的选项在需要时启动它。
因此,如果您的代码中有此行,删除它们:
//This service extends GcmListenerService
Intent intent = new Intent(GCMNotificationService.class, context);
context.startService(intent);
您将不再遇到缓存通知问题、收到两次相同的通知和一些奇怪的其他行为。
我正在使用 GCM 向 Android 设备发送通知并且它正确到达,但有一种情况是通知在被关闭后显示。重现步骤:
- 打开启动服务接收通知的应用程序。
- 发送带有
notification
负载的 gcm 消息。 - 通过滑动 left/right 这条通知来关闭通知。如果它有
action_click
元素,点击它也是有效的。 - 打开任务并关闭当前应用程序。
- 再次打开应用程序。当 GCM 服务再次启动时,它会收到之前关闭的通知。
我的代码是 google 使用 GcmListenerService
提供的 example 中最基本的代码。只需设置权限,将服务放在清单中,让 google 为您显示通知。当提供的场景发生时,我在服务的 onMessageReceive
中使用相同的数据被调用两次。
这是我发送给 GCM 的通知负载:
{
collapseKey: 'push',
delayWhileIdle: true,
timeToLive: 3600,
data: undefined,
notification: {
body: 'test message 2 updated',
title: 'Notification',
icon: 'myicon'
},
contentAvailable: false
}
编辑:
- 我使用的是
play-services-gcm:7.8.0
版本,但也用 7.5 测试过
- 我可以重复该过程 5 次,之后,通知将永远消失。
我终于解决了这个问题。使用新的 GCM 实现,无需启动提供信息的服务,Google 是谁根据推送的选项在需要时启动它。
因此,如果您的代码中有此行,删除它们:
//This service extends GcmListenerService
Intent intent = new Intent(GCMNotificationService.class, context);
context.startService(intent);
您将不再遇到缓存通知问题、收到两次相同的通知和一些奇怪的其他行为。