客户端(iOS设备)如何知道服务器的任何变化?

时间:2015-10-15 09:06:33

标签: ios apple-push-notifications

我正在开发一个iOS应用程序,我正在寻找一种方法,我的应用程序能够知道服务器上的数据是否已经改变。

我想到了一些方法:

1)每3秒向服务器发送一次请求。但是,使用这种方法,我担心当设备数量增加时服务器会过载。另一方面,我的iOS应用程序的性能将受到影响。

2)使用iOS推送通知(apns)。但是,使用这种方法,我的应用程序仅在服务器处于休眠或不活动状态时从服务器接收数据。

请您告诉我任何其他方法或给我任何建议。感谢。

注意:我使用的是Objective-C,Xcode 7.1。

3 个答案:

答案 0 :(得分:4)

  

使用ios推送通知(apns)。但是,使用这种方法,我的应用程序仅在服务器处于休眠或不活动状态时从服务器接收数据。

这是 NOT true!

即使应用处于活动状态,您的应用也会收到推送通知。在这种情况下,它只显示一个alertView(如果已实现),但在Notifications Bar UI上没有任何内容。

然后,您可以在此回调中的 AppDelegate 中实现您的逻辑:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    //Make a Differential Call to the server.
}

答案 1 :(得分:1)

您可以使用网络套接字进行实时双向连接。为此目的,Square有一个名为SocketRocket的库。

答案 2 :(得分:0)

APNS是实现目标的正确方法。