【问题标题】:Parse Push - How to Automatically Open an activity without user action on receiving a push on AndroidParse Push - 如何在 Android 上接收推送时自动打开活动而无需用户操作
【发布时间】:2014-04-07 21:34:30
【问题描述】:

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

【问题讨论】:

  • 无论要求与否,这都是对用户极为不利的事情。
  • 你可以在the documentation找到所有...你读了吗?
  • @SevaAlekseyev - 这不是面向普通用户的应用程序,它是为员工内部目的使用的......所以用户应该对此友好。 :)
  • @Selvin 我已经阅读了文档..但是当收到通知时使用它,它只会在系统托盘中创建一个通知,用户需要单击它..但我想要一些收到推送时自动执行的操作...请帮助

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


【解决方案1】:

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

您还可以指定在推送通知时在后台触发的 Intent 已收到。这将允许您的应用对通知执行自定义处理,并且 无论您是否选择显示系统托盘消息,都可以使用。实施 自定义通知处理,在您的推送通知数据中设置 Action 条目 您要触发的 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));
  }
}

【讨论】:

  • 是的,我已经做了同样的事情并且效果很好......感谢您的光临,但您能否再帮我一些忙,因为我正在寻找启用/禁用我的活动中的按钮使用当我收到推送时,这个广播接收器。如果未显示应用程序,我应该将其置于前台并启用按钮,否则只需启用按钮...我不希望运行相同活动的两个实例。你能帮忙吗?
  • 更新:得到答案,我使用 LocalBroadCastManager 向我的 Activity 发送广播,并在本地广播接收器的 onrecieve 中启用/禁用按钮。谢谢大家。
  • 如果你有多个“action”,你知道如何检索JSON对象的所有其他成员吗?
【解决方案2】:

警告@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 在应用中进行某些操作,例如,向聊天室添加新消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多