ios - 使用 XMPP 作为推送服务器?

标签 ios google-app-engine xmpp push-notification

在过去的几天里,我一直在兜圈子,试图为我的问题找到一个好的解决方案。这里的主要关键是这是针对 iOS 应用程序的。我想要的是从一台设备快速通信到另一台设备更新。所以如果用户 1 执行了一个 Action ,我想实时地告诉用户 2 用户 1 已经执行了这个 Action 。

出于各种原因,我不想使用 Apple 推送通知。所以这是不可能的。我研究了 Pusher 和 PubNub 之类的服务,但这些服务太贵了(并且只允许并发连接数少得离谱,~2500)。我还研究了 Google App Engine 的 Channel API,但它通过 Javascript 工作,并且必须在 iOS 上使用阴暗的技术来实现。老实说,我宁愿不使用它。

所以现在我正在研究 Google App Engine 中的 XMPP。似乎它会做我想做的事,但我不确定我是否理解了整个画面。难道我不能使用 XMPP 消息完成我想要的,即当用户 1 执行操作时,我可以使用 JSON 消息快速通知用户 2?

这里的主要关键是我必须在后台使用用户的唯一 ID 为 XMPP 执行用户注册。这是否可以在没有用户干预的情况下自动创建一个 Jabber ID,例如 user-unique-id@my-app-engine-domain.com?

总的来说,这是一个可行的解决方案吗?我错过了什么?有哪些异常(exception)?

最佳答案

您所描述的一切听起来都可以通过 XMPP 轻松实现。

只是几点。

  • 当然,您确实意识到它是基于 XML 的,因此您的 JSON 消息将嵌入 XML 节中,并在必要时进行适当的转义。
  • 您的用户注册将由服务器实现确定,但我相信大多数将允许自定义身份验证 Hook (如 LDAP)。因此,拥有外部注册机制应该不是问题,并且是一种相当普遍的方法。
  • 由于您使用的是 ios,因此您应该查看 XMPPFramework作为您的 XMPP 库。
  • 根据您的用例,您可能需要查看 XMPP pubsub以及您的更新,这取决于当一个人进行更改时应该有多少其他设备收到消息。我已经使用了这种方法,它适用于实时客户端到客户端更新。
  • 关于ios - 使用 XMPP 作为推送服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13277970/

    相关文章:

    ios - 在 ios9 中为 CNContactPickerViewController 设置什么 displayedPropertyKeys

    ios - 在特定的 CollectionViewCell 中隐藏 View

    ios - 如何将圆形蒙版应用到 UIImageView

    python - get_current_session 返回 None

    python - 谷歌应用程序引擎 - NDB - KEY

    java - 使用 Smack 4.1 的 XMPP 客户端在登录期间给出 NullPointerException

    ios - 更新 Xcode 12.5 和 ios 14.5 时出现抖动问题

    google-app-engine - golang中不同实体种类的无情祖先查询

    rest - 是否可以通过 websockets 进行 ReST?

    java - 如何实现XMPP发送推送通知