使用APNS(带有或不带有AWS SNS)实时更新聊天应用程序吗?

时间:2018-10-04 03:40:02

标签: swift apple-push-notifications swift4 amazon-sns

我正在Swift中编写一个消息传递应用程序,人们可以在其中聊天,类似于短信或其他流行的聊天应用程序的工作方式。支持API在AWS上,以C#编写。

这里有一些有趣的地方:

  1. 希望避免第三方内容(例如Firebase等),但愿意听取建议
  2. 暂时不需要警报通知-没有弹出窗口,横幅等。仅想显示消息气泡实时到达一个ViewController上-当且仅当此人正在注视消息屏幕时。如果它们在应用程序的其他位置,则不会发生任何事情。
  3. 我们不想提示用户询问他们是否对此应用程序发送通知感到满意,因为除了新的聊天到达之外,我们没有向他们发送标语或任何视觉效果。 APNS是否有此要求?我觉得这意味着有人可以说“不”,然后我们就无法实时更新聊天应用,因为它不会运行。

    我假设一种简单的方法是从消息ViewController运行某种计时器/循环,其中每隔一秒或两秒就会到达API,并询问是否有新消息,但这对我来说似乎是错误的-该应用必须是健壮的,并且可能有成千上万的人在使用它-这是许多API请求,而且在许多情况下,可能没有新消息,因此浪费了调用。显然这不是要走的路,对吗?

问题#1 我当时在想应该使用APNS,但是不确定它是否需要提示用户要求他们许可从Apple接收任何东西?再次我担心的是,聊天气泡应该实时出现,并且不希望使用户能够以某种方式看不到它们(破坏应用程序)

如果要使用APNS,并且必须提示他们,那么我假设流程是,我将收集我的设备ID(在appdelegate中创建,保存在C#db中,并与每个消息线程相关联),并且只要有人键入一条消息,然后转到我的API,将其保存在消息数据库表中,然后将一条消息发送到APNS,并将其发送给每个人的设备ID。

Apple将其排队,然后发送给每个人,如果他们在屏幕上,则消息会出现。

这是我应该如何利用APNS实现我想要的吗?

问题2 :我看到其他人建议使用SNS(与APNS结合使用),但是我不明白为什么。 APNS既不充当适当的队列又充当通知服务,从而使使用AWS的SNS / SQS的需求完全失效了吗?对我来说似乎是多余的,但也许我只是不理解为什么同时需要两种技术的想法。

提前感谢任何人的时间,如果他们能为我提供一些启示!

谢谢!

1 个答案:

答案 0 :(得分:0)

问题1

即使您正在使用WebSockets(如@stevenpcurtis所述),当应用程序处于后台/挂起状态时,您仍需要通知用户有关用户收到消息的事实。是的,您必须“强迫”用户为应用程序启用通知并解释其需求。根据经验,如果用户安装了Messenger,则他会了解通知的用途以及启用通知的原因。

问题2

从移动角度看,当应用程序处于后台或挂起状态时,当用户收到通知时,SNS仍会传递推送通知。从后端的角度来看,您可以使用SNS。

结论:

从移动设备的角度来看,您有2种模式:

  • 应用程序处于活动状态-通常由您决定如何接收消息。 (Web套接字,推送等)
  • 应用程序在后台或被挂起:您需要一个工具来通知用户有关更改的信息,而无需控制应用程序。这是推送通知服务的工作。从后端发送推送的方式由您决定。

您还可以选中This question以获得更多信息。