如果應用是多媒體播放,電子雜誌,下載之類的就不多說了。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,項目中使用的第二種方法,成功。