1

我是移动开发的新手,我有一个项目要做,过去几天我一直在寻找问题的解决方案,直到我迷路了,所以我希望我能在这里找到最终答案。

我有一个服务器(php & MySQL DB)并在 iOS + Android 中开发一个从服务器检索数据的移动应用程序。移动应用程序应在第一次运行时从服务器获取数据并将其保存在手机中,以便在再次运行时获取存储的数据。

每当发生更改时,服务器应“在用户不知情的情况下”通知应用程序,以便应用程序可以立即更新数据。

我考虑过使用 web 服务(可能是带有 RestKit 的 REST)或在服务器记录上应用某种时间戳,这都不是问题。

我的问题是我找不到一种方法让服务器本身在发生更改时通知应用程序有关更改并允许应用程序然后更新新数据。我考虑过使用推送通知,但 - 特别是在 iOS 中 - 它不能对用户隐藏。

那么有没有可能的方法呢?复杂吗?值得吗?其他建议?

正如我所说,我是新人,所以在这种情况下,我的想法可能错了,很抱歉,我搜索了这些问题,但找不到我的问题的答案。

4

5 回答 5

1

你能解释一下你想要做什么吗?这里的经典习惯用法是在应用程序启动时更新数据(您可以使用缓存版本,如果它仍然是最新的并且如果用户没有连接)如果用户不知道为什么要更新数据?

于 2012-06-27T09:59:54.080 回答
1

我不确定我是否正确地关注了您的问题,但听起来您希望服务器知道已进行更改,然后将这些更改通知用户。

为什么不运行 cron 作业以在您想要的任何定时周期检查服务器,然后向用户发送推送通知(在 iOS 上)

iOS 推送通知教程

我几乎没有 Android 经验,但在这些设备上进行推送通知似乎更棘手。(我相信有人会尽快纠正我:D)

这可能会有所帮助:

Android 推送通知

于 2012-06-27T10:14:15.247 回答
1

在用户不知道应用程序的情况下,在 iOS 上是不可能的 - 您可以从服务器端更新应用程序数据的唯一方法是如果...

  1. ...应用程序已打开,您正在打开一个 tcp 连接
  2. ...您发送推送消息(以便用户打开应用程序)

在这两种情况下,用户都知道应用程序正在运行。您可以做的是在用户使用应用程序时在后台更新数据。您可以使用推送消息让用户打开应用程序。但就是这样。

在 Android 上,如果您让应用程序运行后台服务,可能会有更多可能性,但是不要忘记,如果您的应用程序正在耗尽电池等,用户会删除它。

于 2012-06-27T10:32:53.303 回答
1

至少在 iOS 中,一个解决方案是使用 Apple Push Notifications。如果您不想打扰并希望它尽可能透明,您可以定义您想要什么样的“通知”信号,如下所示:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
         (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

至于后台进程,我认为您无法做到这一点。Apple 对您可以在后台执行的操作非常严格(不是后台线程,而是您不在应用程序中时作为工作进程的后台)。我的建议是使用通知徽章,这样用户就会知道有新的东西,当他进入应用程序时,你可以开始更新。


我不得不同意亚瑟:

如果用户不知道,为什么要更新数据?

您应该始终使其尽可能用户友好。在我看来,不让您的用户知道应用程序可能会消耗资源是不好的。想象一下,您正在更新 2mb 的信息,而用户正在使用 3G...

于 2012-06-27T09:55:39.153 回答
0

对于应用程序数据更新,您应该检查服务器上数据的版本。最好的方法是让您的应用程序在每次用户启动应用程序时询问您的服务器:用户启动应用程序 -> 应用程序询问服务器是否有 RESTful API 样式的新数据 -> 服务器响应是/否 -> 如果有是新数据,应用程序将其加载到设备。

于 2012-06-27T10:36:36.680 回答