【发布时间】:2014-08-20 01:30:43
【问题描述】:
目标
- 带有 Parse 后端的移动应用程序
- 用户向所有/管理员/特定用户创建消息
- “收件人”收到收到新消息的通知
- 点击通知时,会显示有关消息的详细信息
目前的方法
我在 afterSave 云代码方法中创建了一个自定义推送。调用如下所示:
Parse.Push.send({
where : query,
data : {
action : "com.acme.CUSTOM_ACTION_GOES_HERE",
content : messageContent
}
}).then(...
(查询被定义为获取特定的Parse.Installation对象。)
在 Android 应用中,我有一个像这样注册的 BroadcastReceiver
<receiver
android:name=".MyBroadcastReceiver"
android:exported="false" >
<intent-filter>
<action android:name="com.acme.CUSTOM_ACTION_GOES_HERE" >
</action>
</intent-filter>
</receiver>
在广播接收器的 onReceive 方法中,我创建了自定义通知,我还定义了在单击通知时启动活动的待定意图:
Intent contentIntent = new Intent(context, DisplayDetailsActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(DisplayDetailsActivity.class);
stackBuilder.addNextIntent(contentIntent);
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
Notification noti = new Notification.Builder(context)
.setContentTitle("New message")
.setContentText(content)
.setSmallIcon(R.drawable.ic_stat_notify_message)
.setNumber(notificationsCount)
.setContentIntent(pendingIntent)
.setAutoCancel(true)
.build();
noti.defaults |= Notification.DEFAULT_SOUND;
NotificationManager mgr = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
mgr.notify(555, noti);
问题
不调用(例如在应用程序的onCreate 方法中)
PushService.setDefaultPushCallback(getApplicationContext(), SomeActivity.class);
...推送未发送到设备
使用该调用时,当点击通知时会启动活动SomeActivity,而不是在广播接收器的意图中设置的活动DisplayDetailsActivity。
当我只有一种类型的自定义通知时,可以使用DisplayDetailsActivity.class 作为第二个参数来调用setDefaultPushCallback。
但是,我计划有多个不同的自定义通知,单击每个通知应该会启动不同的活动。在这种情况下,上述解决方法不再可行。
任何想法如何解决这个问题?
【问题讨论】:
标签: android notifications parse-platform