在服务器端远程通知即时消息应用程序的最佳做法

时间:2015-11-03 02:43:51

标签: ios server apple-push-notifications

假设有2个人A和B,他们正在使用我的实例消息应用程序聊天,A或B可能会在对等方发送消息时切换到其他应用程序或锁定屏幕。如你所知,消息来自A将首先发送到服务器,然后服务器将它发送到B.如果B的应用程序不在前台,它将不会立即收到消息,所以我应该使用远程通知。 / p>

我想知道的是我的服务器端如何实现远程通知功能。我有两个选择。

  1. 每次服务器收到消息时,我都会向APNS发送消息。
  2. 我保留A和B的应用状态(前景或背景),当有消息进入时,如果对等方在前台,则不向APNS发送通知,否则发送通知。
  3. 第一种方法很简单,但可能会增加APNS服务器的压力。

    第二个是复杂的,它必须保持每个用户的应用程序状态,它可能不准确。假设当“A”的应用程序到达后台并且网络非常糟糕时,“A”无法通知服务器它进入后台,服务器认为“A”在前台,所以当“B”发送时消息“A”,服务器不会向APNS发送远程通知。

    任何有相关经验的人请分享您的解决方案,提前谢谢。

2 个答案:

答案 0 :(得分:1)

  

每次服务器收到消息时,我都会向APNS发送消息。

完全!只需为每条消息发送推送通知。如果应用程序位于前台,则无论如何都不会显示通知。

  

第一个是一个简单的方法,但它可能会增加APNS的压力   服务器

APNS将能够处理它,不用担心。

如果您尝试将应用状态与服务器同步,您迟早会遇到竞争条件和其他问题,因此不要让事情变得更加复杂......

答案 1 :(得分:0)

虽然Push(远程)通知几乎是瞬间传递的(APNS可以扩展以加载),但我建议您探索第三方库。这是一个很好的tutorial。值得探索XMPPFrameworkThis也可能有用。