在没有通知的情况下解析推送通知

时间:2015-02-11 09:23:57

标签: android parse-platform push-notification

Parse.com上阅读Docs我找不到接收推送消息的方法而不显示默认通知。我想收到消息(JSON),用它做一些工作,然后(如有必要)用它准备一个自定义通知。 可能吗?我不明白为什么不应该这样,但是Docs对此并不清楚。

3 个答案:

答案 0 :(得分:3)

您在这两个帐户上都是正确的 - 文档可以使用更多细节,这是可能的。

首先,为了提供您自己的逻辑实现,您需要创建自己的广播接收器类扩展ParsePushBroadcastReceiver。执行此操作时,您必须更新清单文件,并将<receiver>指向您的班级,而不是ParsePushBroadcastReceiver

在新创建的类中,getNotification()方法负责创建通知。如果您不想显示通知,请覆盖它以返回null,或创建您自己的Notification并将其返回或调用默认super的{​​{1}}实施如果你愿意的话。

你还有许多其他的&#34;钩子&#34; (可覆盖的方法)在接收推送时执行逻辑,每个都接收NotificationContext作为参数。在每种方法中,您都可以获取Intent数据,只需致电:

JSON

答案 1 :(得分:1)

您可以通过创建自己的BroadcastReceiver来过滤解析的操作。为此,您需要将ParsePushBroadcastReceiver替换为您自己的接收器(在这种情况下为NotiReceiver)。例如..

在AndroidManifest.xml中

<receiver
    android:name=".NotiReceiver"
    android:exported="false" >
    <intent-filter>
        <action android:name="com.parse.push.intent.RECEIVE" />
    </intent-filter>

在你的NotiReceiver中,

@Override
public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();
    if (action.equals("com.parse.push.intent.RECEIVE")) { 
        Log.i("Data : ", intent.getExtras().getString("com.parse.Data"));
    }
}

希望它对你有用。

答案 2 :(得分:1)

如果您遵循通知的生命周期,您会发现仍然可以实现您想要的目标,而无需执行大量的实施。控制推送通知(特别是显示或不显示推送通知)的最简单,最基本的方法是覆盖onReceive的{​​{1}}方法。如果您致电ParsePushBroadcastReceiver,则通知将继续通知的生命周期并显示 - 如果您未拨打super.onReceive(),则生命周期结束并且不会显示通知(因此不会调用{完全{1}}。目前接受的答案会让您不必要地将生命周期延续到super.onReceive()并返回getNotification(),但如果未调用getNotification(),则null也不会。下面是一个更简洁的方法,可以用更少的代码获得你想要的东西。

super.onReceive()

即使您不希望显示通知,也会在当前接受的答案中建议您必须构建自己的通知,这也是不必要的,因为可以自由地自定义Parse SDK为您提供的通知在以getNotification()方法返回之前。但既然你不想显示任何东西,你不必担心这一点。这包含在上面的示例代码中。