iOS後臺與服務器交互(支持鎖屏)eg:後臺定時上傳當前位置

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章