【发布时间】:2015-11-16 15:26:21
【问题描述】:
我可以通过 Google Cloud 消息传递进行基本的推送通知,但在处理多条消息时遇到了问题。我使用基本通知(例如,我让系统创建实际的通知消息),但在数据部分中提供要在我的应用程序中打开的 URL。
这是我目前所拥有的:
我的MainActivity 有一个意图过滤器:
<intent-filter>
<action android:name="GCM" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
在我的 onCreate() 函数中,我有以下内容:
Intent startIntent = getIntent();
if (startIntent.hasExtra("url")) {
openUrl(startIntent.getStringExtra("url"));
}
我发送如下所示的有效负载:
{
"registration_ids": [
"..."
],
"notification": {
"body": "This is a body.",
"title": "This is a title.",
"icon": "app",
"sound": "default",
"click_action": "GCM"
},
"data": {
"url": "/quiz/"
}
}
到目前为止一切顺利。当我收到一条消息并单击它时,它会打开我的应用程序并加载 URL。当我收到多条消息时出现问题:
- 当我收到两条带有两个不同 URL 的消息时,我总是在我的
MainActivity中获得第一个通知的 URL。即使我点击了第二个通知。 - 当我的活动已经打开并且我收到一条消息时,单击它不会打开 URL(可能是因为那时没有调用
onCreate())。
我的猜测是两者都有些相关,我应该以某种不同的方式处理传入的消息。
【问题讨论】:
-
从我目前的研究来看,Android 似乎对同一发件人的所有消息重用了相同的意图。解决它的通常方法是仅在数据中定义有效负载并自己构建通知。然而,这破坏了与 iOS 的兼容性。解决它的唯一方法是为 iOS 和 Android 发送不同的有效负载。
标签: android notifications push-notification google-cloud-messaging