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 通知后台堆栈的主要内容,如果未能解决你的问题,请参考以下文章

重复通知 GCM android 应用程序

在 Android 上使用 GCM 推送通知

应用程序完全关闭时不出现 Android 推送通知(使用 node-gcm)

当一个活动直接从一个通知启动时,你如何构建一个 Android 后台堆栈?

来自后台的Android本地通知没有标题

Android - GCM 在打开应用程序时收到来自 gcm 的通知