客户端(iOS 设备)如何知道服务器的任何更改?
How does the client (iOS device) know any changes from server?
我正在开发一个 iOS 应用程序,我正在寻找一种方法让我的应用程序能够知道服务器上的数据是否已更改。
我想到了一些方法:
1) 每3秒向服务器发送一次请求。但是,使用这种方法,恐怕当设备数量增加时服务器会超载。另一方面,我的 iOS 应用程序的性能会受到影响。
2) 使用 iOS 推送通知 (apns)。但是,通过这种方法,我的应用仅在服务器处于休眠或非活动状态时才从服务器接收数据。
能否请您告诉我任何其他方法或给我任何建议。谢谢
注意:我使用的是Objective-C、Xcode7.1.
using ios push notification (apns). However, with this approach, my app only receives data from server when it is sleeping or inactive.
这是不正确的!
即使应用程序处于活动状态,您的应用程序也会收到推送通知。在这种情况下,它只会显示一个 alertView(如果已实现),但通知栏上不会显示任何内容 UI。
然后您可以在此回调中的 AppDelegate 中实现您的逻辑:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
//Make a Differential Call to the server.
}
您可以使用网络套接字进行实时双向连接。为此,Square 有一个名为 SocketRocket 的库。
APNS 是实现您想要的目标的正确方法。
我正在开发一个 iOS 应用程序,我正在寻找一种方法让我的应用程序能够知道服务器上的数据是否已更改。
我想到了一些方法:
1) 每3秒向服务器发送一次请求。但是,使用这种方法,恐怕当设备数量增加时服务器会超载。另一方面,我的 iOS 应用程序的性能会受到影响。
2) 使用 iOS 推送通知 (apns)。但是,通过这种方法,我的应用仅在服务器处于休眠或非活动状态时才从服务器接收数据。
能否请您告诉我任何其他方法或给我任何建议。谢谢
注意:我使用的是Objective-C、Xcode7.1.
using ios push notification (apns). However, with this approach, my app only receives data from server when it is sleeping or inactive.
这是不正确的!
即使应用程序处于活动状态,您的应用程序也会收到推送通知。在这种情况下,它只会显示一个 alertView(如果已实现),但通知栏上不会显示任何内容 UI。
然后您可以在此回调中的 AppDelegate 中实现您的逻辑:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
//Make a Differential Call to the server.
}
您可以使用网络套接字进行实时双向连接。为此,Square 有一个名为 SocketRocket 的库。
APNS 是实现您想要的目标的正确方法。