Android GCM通知Backstack

时间:2016-02-23 21:02:59

标签: android notifications push-notification google-cloud-messaging back-stack

我在Android上设置了GCM,我能够正确接收通知。在通知中我设置了" click_action"这样android在选择通知时会为我打开一个特定的活动(ListActivity)。这一切都很有效。

但是,如果用户通过向后按离开应用程序,则在启动新活动时(按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自动为我创建后栈?如果是这样,我怎么能实现这个目标呢?

2 个答案:

答案 0 :(得分:1)

我发现这个有趣website。看看Step 5。我认为这正是你要找的。

  

要允许云消息打开应用并直接跳转到内部通信消息,我们需要将意图数据发送给我们。在您的应用启动活动(它将进入的第一个活动)中添加以下内容。您应该在Activity生命周期的早期调用此方法,例如onCreate。

Intercom.client().openGCMMessage(getIntent());
     

如果您希望为此通知创建自定义后台堆栈,您可以将TaskStackBuilder传递给相同的方法:

openGCMMessage(Intent intent, TaskStackBuilder stackBuilder);

答案 1 :(得分:0)

最简单的解决方案我发现是覆盖

  

onCreateSupportNavigateUpTaskStack

活动中的