在Parse.com
上阅读Docs我找不到接收推送消息的方法而不显示默认通知。我想收到消息(JSON
),用它做一些工作,然后(如有必要)用它准备一个自定义通知。
可能吗?我不明白为什么不应该这样,但是Docs对此并不清楚。
答案 0 :(得分:3)
您在这两个帐户上都是正确的 - 文档可以使用更多细节,这是可能的。
首先,为了提供您自己的逻辑实现,您需要创建自己的广播接收器类扩展ParsePushBroadcastReceiver
。执行此操作时,您必须更新清单文件,并将<receiver>
指向您的班级,而不是ParsePushBroadcastReceiver
。
在新创建的类中,getNotification()
方法负责创建通知。如果您不想显示通知,请覆盖它以返回null
,或创建您自己的Notification
并将其返回或调用默认super
的{{1}}实施如果你愿意的话。
你还有许多其他的&#34;钩子&#34; (可覆盖的方法)在接收推送时执行逻辑,每个都接收Notification
和Context
作为参数。在每种方法中,您都可以获取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()
方法返回之前。但既然你不想显示任何东西,你不必担心这一点。这包含在上面的示例代码中。