解析推送 - 如何在Android上接收推送时自动打开活动而无需用户操作

时间:2014-03-05 17:03:42

标签: android push-notification push parse-platform google-cloud-messaging

我有一个要求(android)我的应用程序应该在收到推送通知时自动运行其主要活动而用户没有点击系统托盘中的通知。我有一张地图显示当前位置,但在推送中,我将收到一个位置,我需要在主活动中将地图移动到接收推送时相机到当前接收的位置,并提醒用户自定义声音。所有这一切都应该在用户没有点击的情况下发生。请帮忙。提前谢谢。

2 个答案:

答案 0 :(得分:9)

是的,这是可能的。 Parse.com文档说:

  

您还可以指定推送通知时在后台触发的Intent   接收。这将允许您的应用程序对通知执行自定义处理,以及   无论您是否选择显示系统托盘消息,都可以使用。实施   自定义通知处理,在推送通知数据中设置操作条目   您想要触发的Intent动作的字典。 Android指南建议   使用包名称为操作添加前缀,以避免与其他包名称冲突   正在运行的应用程序。

所以你以这种方式发送推送通知:

JSONObject data = new JSONObject("{\"action\": \"com.example.UPDATE_STATUS\""}));

ParsePush push = new ParsePush();
push.setData(data);
push.sendPushInBackground();

然后在AndroidManifest.xml中注册一个广播接收器,只要收到带有动作参数com.example.UPDATE_STATUS的推送通知,就会调用该广播接收器:

<receiver android:name="com.example.MyBroadcastReceiver" android:exported="false">
  <intent-filter>
    <action android:name="com.example.UPDATE_STATUS" />
  </intent-filter>
</receiver>

在您的广播接收器中,您可以开始新的活动:

public class MyBroadcastReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    context.startActivity(new Intent(context, MyActivity.class));
  }
}

答案 1 :(得分:1)

警告@makovkastar,自版本V1.8以来的重大变化。例如:不再有com.example.UPDATE_STATUS。

推送通知指南现在更加清晰:https://www.parse.com/tutorials/android-push-notifications

这是ParsePushBroadcastReceiver子类:https://gist.github.com/panchicore/97d5ad25842258576109 这个答案有一个很好的教程来发送/接收本地广播:https://stackoverflow.com/a/8875292/155293

基本上在设备收到推送时会调用onPushReceive,在这种方法中使用LocalBroadcastManager在应用程序中创建一些内容,例如,向聊天室添加新消息。