【发布时间】:2015-04-29 22:54:25
【问题描述】:
我正在尝试使用 parse.com 的 push notification service 在我的 Android 应用程序中获取推送通知。他们实现了一个广播接收器,我正在自己的类中扩展它:
public class MyPushBroadcastReceiver extends ParsePushBroadcastReceiver
{
@Override
protected void onPushReceive(Context context, Intent intent)
{
JSONObject data = getDataFromIntent(intent);
[...]
super.onPushReceive(context, intent);
}
@Override
protected void onPushOpen(Context context, Intent intent)
{
ParseAnalytics.trackAppOpenedInBackground(intent);
Intent i = new Intent(context, MyActivity.class);
i.putExtras(intent.getExtras());
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
我覆盖了两种方法:
- onPushReceive - 当通知到达时调用它
- onPushOpen - 当用户点击通知区域中的通知时调用它
我需要做三件事:
- 当通知到达时,我需要保存它
- 当用户点击通知时,我需要打开应用程序以显示我已保存的通知的活动
- 如果在我打开应用以显示通知活动时收到通知,我需要更新 UI 以包含新活动。
第一部分很简单。我只是将一些 JSON 写入文件。
第二个我没有遇到任何问题。我创建了一个意图,这将打开我的活动。它从文件中读取 JSON,而 Bob 是你的叔叔。
我一直无法找到处理第三部分的干净方法。
我认为我卡住的地方是我对活动或广播服务的生命周期没有清楚的了解。我也没有在我的应用程序中创建它们,它们在清单中声明,并在任何时候构建。
Android 框架在处理清单时是否会分别创建一个?活动是否可以找到广播接收器的实例?如果可以的话,我很容易在它们之间建立一个回调。
或者我是否需要定义我自己的 BroadcastService,ParsePushBroadcastReceiver 将使用它来发布事件,并且该活动将消耗?我看到的关于这样做的例子似乎过于复杂,因为这应该是一件相当简单的事情。
我们将不胜感激。
【问题讨论】:
-
很抱歉提出不相关的问题。我是解析新手,是每个活动都必须使用这行代码“trackAppOpenedInBackground”还是仅启动页面以进行跟踪?
标签: android android-intent notifications android-broadcast