服务器可以在没有用户知晓的情况下通知iOS / Android应用程序有关更改吗?

时间:2012-06-27 09:50:31

标签: php android ios sync

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

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

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

我考虑过使用webservice(可能是Rest with RestKit)或在服务器记录上应用各种时间戳,这些都不是问题。

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

那么有可能这样做吗?这很复杂吗?值得吗?其他建议?

正如我所说的那样,我是新人,所以也许我的想法是错的,所以在那种情况下很抱歉,我搜索了这些问题并且无法找到答案。

5 个答案:

答案 0 :(得分:1)

至少在iOS中,解决方案是使用Apple推送通知。如果你不想打扰并希望它尽可能透明,你可以定义你想要的那种“通知”信号,如下所示:

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

至于后台流程,我认为你无法做到这一点。 Apple在后台可以做的事情非常严格(不是后台线程,但是当你不在应用程序中时,后台作为工作过程)。我建议使用通知徽章,以便用户知道有新内容,当他进入应用程序时,您可以开始更新。


我必须同意Yase:

  

为什么在用户不知道的情况下更新数据?

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

iOS Push Notificaton Tutorial

我的Android体验很少,但在这些设备上进行推送通知似乎更为贴切。 (我相信有人会尽快纠正我:D)

这可能会有所帮助:

Android Push Notifications

答案 3 :(得分:1)

在没有用户知道应用程序的iOS上是不可能的 - 从服务器端更新应用程序数据的唯一方法是...

  1. ...应用程序已打开,您正在打开tcp连接
  2. ...您发送推送消息(以便用户打开应用程序)
  3. 在这两种情况下,用户都知道应用程序正在运行。您可以做的是在用户使用应用程序时在后台更新数据。您可以使用推送消息让用户打开应用程序。但那就是它。

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

答案 4 :(得分:0)

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