6

我能够创建推送通知。但目前我只能让人们登陆主屏幕。

如何将人们发送到特定的活动?是否也可以添加一些参数,如 item_id,以便活动知道要加载哪些数据?

或者,如果某处有一个很好的教程,那也很棒。我似乎无法通过谷歌搜索找到很多关于此的好信息。

在我的 GCMIntentService 我有这个方法:

      @Override
      protected void onMessage(Context ctxt, Intent message) 
      {           
        Bundle extras=message.getExtras();

        try
        {
            String question_id = extras.getString("question_id");
//          SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences( this );
//          Intent intent = new Intent(ctxt, QuestionActivity.class);

            generateNotification(ctxt, extras.getString("message"), "New Message"  );           
        }
        catch ( Exception e )
        {
        }
      }

但我不确定如何更改 generateNotification 以指示该人应该登陆什么活动。谢谢!

4

2 回答 2

10

更新:将 JSON 归功于 Eran,我只想详细说明。

您可以使用 data 键添加其他参数:

{
   "registration_ids" : ["APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx..."],
   "data": {
       "stuff": "100",
       "more": "abc"
   },
}

然后使用相同的方式访问intent.getExtras().getString("stuff")

一切都在这里

然后在你的generateNotifcation()

private static void generateNotification(Context context, String message) {
    NotificationManager notificationManager = (NotificationManager)
        context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(R.drawable.ic_launcher, message, when);
    String title = "...";


    //get id from json here and decide which activity to go to...
    Intent notificationIntent = new Intent(context, someClass.class);


    notificationIntent.putExtra("message",message);
    PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent,PendingIntent.FLAG_UPDATE_CURRENT);
    notification.setLatestEventInfo(context, title, message, intent);
    notification.defaults|=Notification.DEFAULT_VIBRATE;
    notificationManager.notify(0, notification);
}
于 2013-03-11T22:03:38.253 回答
3

当然,您可以添加一个参数,例如item_id. 您可以将所需的任何参数添加到通知中。与 Apple 推送通知不同,没有预定义的有效负载参数,因此就像您有一个message参数一样,您可以有任何其他带有字符串值的参数(只要参数名称和值的总长度不超过 4096 字节) .

至于从通知中加载 Activity,您可以在此处找到所需的一切。

于 2013-03-12T00:22:21.117 回答