如果应用是多媒体播放,电子杂志,下载之类的就不多说了。http://www.zhihu.com/question/20114323
如果你的应用为了后台而实现多媒体播放很有可能被评估拒绝。
下面是我测试的两种方法
1.Background Fetch
步骤1:project editor选中 Capabilities tab设置 找到Background Modes选中Background fetch
步骤2:在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中添加如下代码
[application setMinimumBackgroundFetchInterval:60.0];//设置时间间隔,告知应用程序多久唤醒应用程序
步骤3:在应用程序委托中实现下列方法
- (
void
) application:(UIApplication *)application
performFetchWithCompletionHandler:(
void
(^)(UIBackgroundFetchResult))completionHandler
2.Remote Notifications(静默推送)
服务器配置,类似远程推送,只不过改变一下字段,该推送不会在客户端有任何提示
PushNotificationPayload payLoad = PushNotificationPayload.fromJSON("{\"aps\":{\"content-available\":1}}" ); //在推送通知的payload设置content-available标志
服务端写个定时器,定时向客户端发送静默推送来唤醒应用程序
客户端:project editor选中 Capabilities tab设置 找到Background Modes选中Remote Notifications
当客户端收到带有content-available的推送通知时,这个方法被调用
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
//your code 在此处理,和服务器交互
}
最后网络请求需要使用NSURLSession代替NSURLConnection,项目中使用的第二种方法,成功。