2015-09-30 210 views
4

根据this post,最佳做法是在客户端过滤通道消息。我还没有找到一种可行的方法来完成推送通知。目前我们的iOS客户端在应用没有运行时会收到大量无用的消息。Pubnub iOS推送通知过滤?

+1

我在我们的支持系统上收到您的问题,并会回答他们的问题。我会在这里发布最终答案。 –

回答

4

过滤PubNub邮件和推送通知

这是APNS,不PubNub一个缺点。 PubNub以这样的方式工作,即一个频道的所有订阅者都可以收到在该频道上发布的所有消息。但是,当应用程序处于iOS的后台或完全没有运行时,您的应用程序就没有机会在iOS设备显示推送通知之前处理推送通知。 Android/GCM确实允许您的应用在显示消息之前拦截该消息。

幸运的是,只有一个情景(我可以想到)msg的发件人会收到其推送通知版本的消息(意思是说,您不能截取并且不显示它)。

  • 用户发布味精
  • 后立即(快速)离开应用程序(home键,切换到另一个应用程序等)
  • 推味精出现

但是,如果用户停留在(或足够长的时间以接收实时消息和推送通知),那么您可以阻止显示推送消息。但是不需要在UUID上进行过滤,因为在didReceiveRemoteNotification委托中应用处于活动状态时,您应该禁止显示所有推送通知,因为您已在订阅回调中具有实时消息。

link you referenced (Filter Owner Messages on PubNub Data Streams)仅适用于实时推送通知,Stephen正在调用我们将在不久的将来推出的一项功能,该功能允许您订阅频道,但提供的查询允许您过滤/查询该频道上的消息,如“where uuid!=”,其中是用户的uuid。然后,订户不会收到实时消息或推送通知消息,因为服务器会为您过滤它们。

对于推送通知的一个很好的概述见Sending APNS and GCM Messages to Subscribers and Mobile Push Notification Services in One API Call

有关完整push notification setup, configuration and implementation, see the docs for each of our SDKs

此外,请参阅我的答案,其中描述how to use iOS silent push notifications to do on device filtering。同样的事情可以在Android上完成,但不需要做任何特别的事情,因为你总是有机会在显示之前处理推送通知。

+0

令人敬畏的东西克雷格。是否有过滤功能的估计时间表? – Bonk

+1

没有外部宣布,但。请继续关注@pubnub和https://www.pubnub.com/blog/,了解所有即将发布的功能的最新信息。 –