Android GCM 通知后台堆栈
Posted
技术标签:
【中文标题】Android GCM 通知后台堆栈【英文标题】:Android GCM Notification Backstack 【发布时间】:2016-02-23 21:02:58 【问题描述】:我在 android 上设置了 GCM,并且能够正确接收通知。在通知中,我设置了“click_action”,以便 android 在选择通知时为我打开一个特定的活动 (ListActivity
)。这一切都很好。
但是,如果用户通过按返回键离开应用程序,则当新 Activity 启动(通过 gcm)时,整个返回堆栈都会丢失。这是我的 android 清单,也是我如何发送通知的示例。
AndriodManifest.xml
<activity
android:name=".views.HomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".views.ListActivity"
android:parentActivityName=".views.HomeActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="OPEN_ACTIVITY_LIST"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".views.HomeActivity"/>
</activity>
通知示例
curl -X POST https://gcm-http.googleapis.com/gcm/send \
-H "Content-Type:application/json" \
-H "Authorization:key=AUTHORIZATION_KEY" \
-d '
"to" : "GCM_TOKEN",
"priority" : "high",
"notification" :
"body" : "Notification body",
"title" : "Notification Title",
"click_action": "OPEN_ACTIVITY_LIST"
,
"data":
"message": "Please open an activity with a backstack configured!"
'
是否可以让 gcm 为我自动创建后台堆栈?如果是这样,我该如何实现?
【问题讨论】:
你能粘贴你的 ListActivity 代码吗?或者你可以在 listviewActivity 中添加返回事件 嗨@jigspatel,目前ListActivity是空的。 【参考方案1】:我发现这很有趣website。看看Step 5。我想这就是你要找的。p>
要让云消息打开应用程序并直接跳转到对讲消息,我们需要将意图数据发送给我们。在您的应用启动活动(它将进入的第一个活动)中添加以下内容。您应该在 Activity 生命周期的早期调用此方法,例如 onCreate。
Intercom.client().openGCMMessage(getIntent());
如果您希望为此通知创建自定义返回堆栈,您可以将 TaskStackBuilder 传递给相同的方法:
openGCMMessage(Intent intent, TaskStackBuilder stackBuilder);
【讨论】:
您好@gerardnimo,您建议的解决方案涉及使用对讲机,我想纯粹使用 GCM。我相信内部对讲机正在使用 TaskStackBuilder 在抽屉中创建通知,这是我自己可以做的事情。我想要的是让 GCM 自动创建后台堆栈。 就文档而言,我认为这是不可能的。如果它是 GCM 已经可用的功能,您至少应该能够在他们的文档中找到它。【参考方案2】:我发现的最简单的解决方案是覆盖
onCreateSupportNavigateUpTaskStack
在活动中
【讨论】:
以上是关于Android GCM 通知后台堆栈的主要内容,如果未能解决你的问题,请参考以下文章
应用程序完全关闭时不出现 Android 推送通知(使用 node-gcm)