【问题标题】:notify iOS & Android on data change on server通知 iOS 和 Android 服务器上的数据更改
【发布时间】:2015-08-16 14:22:35
【问题描述】:

我正在为 iOS 和 Android 创建移动应用程序。问题是当服务器上的任何数据发生变化时,我无法通知移动设备。

我找到了 3 个解决方案,每个都有缺点和优点。

  1. 使用推送通知。由于 iOS 总是向用户显示通知,这根本不是一个解决方案。我也不知道通知是否会发送到设备或何时发送。

  2. 每隔 X 秒询问服务器是否存在任何更改。我不想这样做,因为我认为创建太多 HTTP 连接并关闭它们不是一个好主意。此外,如果在设备询问后立即更改数据,设备上的信息更改将延迟发生。

  3. 使用网络套接字。我的应用程序的一次使用预期是~2 分钟。所以 web socket 看起来是个不错的选择,因为应用程序会很快终止或进入后台状态,并且电池消耗不会太多。此外,所有服务器端数据更改都会及时到达设备。但我对网络套接字知之甚少。我的意见可以接受吗?还有多少并发连接可以由我的服务器完成。是不是也是个问题。

这是我的所有解决方案。

【问题讨论】:

  • 这需要什么样的应用程序..我建议使用 websockets,因为我发现它对服务器到客户端的通信很有用..
  • 应用程序的对象声明为 open-willCloseInTenMinutes-closed。我必须在对象状态发生变化时通知用户——几乎是准确的时间——。任何用户都不应将关闭的对象视为打开或将关闭
  • 我建议使用网络套接字,因为您的服务器似乎需要非常频繁且即时地与客户端通信。
  • 我的情况不是很频繁,但即时是。

标签: android ios server


【解决方案1】:

该文件将提出假设 1. 以上是不正确的。

如果您阅读通知负载部分,您会遇到这个;

aps 字典也可以包含 content-available 属性。值为 1 的 content-available 属性让远程通知充当“静默”通知。当静默通知到达时,iOS 会在后台唤醒您的应用程序,以便您可以从服务器获取新数据或进行后台信息处理。用户不会被告知因静默通知而产生的新信息或更改信息,但他们可以在下次打开您的应用时了解这些信息。

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html

【讨论】:

  • 好的。我在那里有一个错误。感谢您提供信息,但通知状态(传输状态)仍然未知。任何设备都可能收不到通知
  • APNS 非常准确。设备及时收到通知 - 通常 - 但 GCM 不是。有时,Android 设备什么也收不到。
【解决方案2】:

我认为这在很大程度上取决于您的应用在做什么。

我会说你应该使用 #1 和 #2 的组合。

2 - 如果您需要来自服务器的信息,您将不得不发出请求。如果需要更新此信息,则可以在加载 ViewController 时继续请求信息。如果您需要在加载 ViewController 时更新此信息,那么您将需要每 X 秒发出一次后续请求...除此之外,如果您的用户正在与此数据交互并向服务器发送更新,您可以在此检查指出数据是否是最新的并提醒用户并返回当前数据。

1 - 推送通知根据“发送后忘记”协议运行。通知已发送,但未验证是否收到通知。这用作 #2 的补充,“不错”,但不应依赖。

【讨论】:

  • 这不仅仅是更新数据。如果是,没问题,我可以使用#2。我的一个旧应用程序就是这样运行的。但这一次,应用程序的对象声明为 open-willCloseInTenMinutes-closed。我必须在对象状态发生变化时通知用户——几乎是准确的时间——。任何用户都不应将关闭的对象视为打开或将关闭
  • 您将拥有一个计时器,该计时器将递减以实时显示时间变化。当此计时器达到 X 秒时,它将访问服务器并更新时间。随着计时器继续倒计时,如果达到 10 分钟,那么它将访问服务器并更新时间,如果确实还有 10 分钟直到关闭,那么您可以在那个时间准确地更新用户......与关闭时间相同。
【解决方案3】:

推送通知是预期的方式(来自 Google 通过 Google Cloud Messaging 和 Apple 通过 Apple Push Notification Service)。

选项 2 和 3 都不赞成,因为它们会影响电池寿命,而且它们是不必要的,因为大多数情况下的场景都可以通过推送通知覆盖。

【讨论】:

  • 正如我所提到的,我的应用程序的预期 ACTIVE TIME 太短,我不关心电池寿命。但我不知道网络套接字的其他场景。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
  • 2014-11-16
  • 2019-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多