Android - 我如何发送 GCM 推送通知,其中包含要加载哪个活动的说明?
Posted
技术标签:
【中文标题】Android - 我如何发送 GCM 推送通知,其中包含要加载哪个活动的说明?【英文标题】:Android - how can I send a GCM push notification with instructions of which activity to load? 【发布时间】:2013-03-11 21:50:41 【问题描述】:我能够创建推送通知。但目前我只能让人们登陆主屏幕。
如何将人们发送到特定的活动?是否也可以添加一些参数,如 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 以指示该人应该登陆什么活动。 谢谢!
【问题讨论】:
【参考方案1】:更新: 将 JSON 归功于 Eran,我只想详细说明。
您可以使用数据键添加其他参数:
"registration_ids" : ["APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx..."],
"data":
"stuff": "100",
"more": "abc"
,
然后使用intent.getExtras().getString("stuff")
以同样的方式访问。
都是here。
然后在你的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);
【讨论】:
其实有一个问题:一旦我发送并解析了额外的参数,如何将它保存到 SharedPreferences 之类的东西中? 其实我可能说错了。我在用手机我会在我回到电脑前更新。抱歉尽快更新。 谢谢...我认为从服务器发送 id 以及通知是有意义的。我刚刚实现了。诀窍是如何在调用 generateNotification(ctxt, extras.getString("message"), "New Message"); 时指定要转到的 Activity; 来自generateNotification
,你能解析出id然后创建一个意图intent = new Intent(ctxt, someClass.class)
,其中someClass
会根据id而变化吗?
是的,我可以这样做,但方法定义是(上下文、字符串、字符串)......除非我没有看到其他选项。如果我们在其中传递意图,这个调用会是什么样子?【参考方案2】:
当然可以添加item_id
之类的参数。您可以将所需的任何参数添加到通知中。与 Apple Push Notifications 不同,没有预定义的有效负载参数,因此就像您有一个 message
参数一样,您可以有任何其他带有字符串值的参数(只要参数名称和值的总长度不通过4096 字节)。
至于从通知中加载活动,您可以找到所需的一切here。
【讨论】:
也谢谢你。你们俩都非常有帮助:)以上是关于Android - 我如何发送 GCM 推送通知,其中包含要加载哪个活动的说明?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 GCM 在 android 设备上分别显示每个推送通知
使用 c# .net 发送带有图像的 GCM 推送通知(适用于 android 应用程序)