背景
開發(fā)公司的一個項目,第一期正常上線伦仍,以為第二期的話也會很順利岩榆,沒想到因為background modes的問題被打回來。主要還是因為之前對background modes幾種模式了解的不夠业岁,存在濫用,正好趁這次機會寇蚊,好好梳理一下笔时。
1. Audio, AirPlay and Picture in Picture
這個選項中包含四種場景:音頻的播放,錄音仗岸,AirPlay及畫中畫的視頻播放允耿。
- 音頻的播放:在播放音頻時,即使應(yīng)用退到后臺扒怖,只要一直有音頻在播放较锡,那應(yīng)用就可以一直在后臺運行。
-
錄音:應(yīng)用可以請求使用麥克風(fēng)姚垃,當(dāng)開啟了此后臺選項念链,應(yīng)用在使用麥克風(fēng)時,即使退到后臺积糯,也可以一直后臺運行掂墓,通過查看微信安裝包中的 plist 文件,微信的語音聊天看成,就是通過這種方式實現(xiàn)的君编。而當(dāng)該類應(yīng)用退到后臺后,iOS 系統(tǒng)的狀態(tài)欄會變成紅色川慌,并在狀態(tài)欄中顯示正在使用麥克風(fēng)的應(yīng)用的名稱吃嘿,如下圖所示。
image - AirPlay: AirPlay是指將iOS設(shè)備梦重,或者Mac設(shè)備上的音視頻兑燥,同步到另一個設(shè)備中播放。舉兩個例子琴拧,第一個是把 iPhone 上的音樂通過藍牙的方式在汽車的藍牙音響播放降瞳,第二個是把 iPhone 上的視頻,同步到智能電視屏幕上播放。此功能一般用于多端及多屏的交互挣饥。
- 畫中畫的視頻播放:畫中畫是 iPad 版本的 iOS 9 新增加的功能除师,可以在 iOS 的桌面,或者其他應(yīng)用的界面的上面播放視頻扔枫,從而該視頻區(qū)域所屬的應(yīng)用就可以后臺運行了汛聚。此功能現(xiàn)在只在 iPad 應(yīng)用中提供。
2. Location updates
一般用于導(dǎo)航應(yīng)用中短荐,開啟此選項后倚舀,應(yīng)用退到后臺,還可以得到系統(tǒng)的定位更新忍宋,從而使得應(yīng)用可以根據(jù)定位的變化做出不同的反應(yīng)瞄桨。
3. Newsstand downloads
提供給報刊雜志類應(yīng)用可以在后臺下載及處理報刊雜志內(nèi)容,而下載的過程需要使用 NewsstandKit 中的 NKAssetDownload 進行下載讶踪。需要注意的是,下載的過程中泊交,應(yīng)用可能還是會被掛起乳讥,甚至應(yīng)用被退出,而 iOS 會在 Wi-Fi 環(huán)境下繼續(xù)下載廓俭,直到下載完成云石。而一旦下載完成,如果應(yīng)用只是被掛起研乒,則 iOS 會喚醒對應(yīng)的應(yīng)用汹忠,回調(diào)對應(yīng)的事件;如果應(yīng)用已經(jīng)退出雹熬,則會啟動應(yīng)用宽菜,在啟動參數(shù)中會帶上對應(yīng)的標識表示這次啟動是因為下載報刊雜志內(nèi)容完成。
4. External Accessory communication
此選項提供給一些MFi外設(shè)通過藍牙竿报,或者Lightning接頭等方式與iOS設(shè)備連接铅乡,從而可在外設(shè)發(fā)送消息時,喚醒已經(jīng)被掛起的應(yīng)用烈菌。而一旦被喚醒阵幸,一般情況下,應(yīng)用只有最多10秒鐘的執(zhí)行時間芽世。
MFi 外設(shè):是指通過蘋果 MFi 認證的設(shè)備挚赊,而 MFi 認證是對其授權(quán)配件廠商生產(chǎn)的外置配件的一種標識使用許可,是 Made for iOS 的英文縮寫济瓢。
5. Uses Bluetooth LE accessories
此選項與External Accessory communication類似荠割,只是此選項無需限制MFi外設(shè),而需要的是Bluetooth LE設(shè)備葬荷。
6. Acts as a Bluetooth LE accessory
此選項是指iOS設(shè)備作為一個藍牙外設(shè)連接時涨共,對應(yīng)的應(yīng)用可以后臺運行纽帖,但是使用此模式需要用戶進行授權(quán)認證。
7. Background fetch
iOS7新增加的一個選項举反,用于即使在后臺懊直,也需要頻繁更新數(shù)據(jù)的應(yīng)用。例如一個 PM2.5 的應(yīng)用火鼻,需要幾個小時更新一次數(shù)據(jù)室囊,那么可以開啟此選項,設(shè)置一個時間間隔魁索,從而讓 iOS 在間隔時間內(nèi)在后臺啟動該應(yīng)用融撞,執(zhí)行指定數(shù)據(jù)的獲取工作,而此過程最多只能執(zhí)行 30 秒鐘粗蔚。
8. Remote Notifications
iOS7新增加的一個選項尝偎,是一種靜默推送,它有別于一般的推送鹏控,應(yīng)用收到此類推送后致扯,不會有任何的界面提示,而當(dāng)應(yīng)用退到后臺或者掛起時收到此類推送当辐,iOS也會喚醒對應(yīng)的應(yīng)用抖僵。
Notice
- 提交審核時,App Store的審核人員會檢查應(yīng)用中是否有必要開啟該后臺運行模式選項缘揪,如果應(yīng)用中不需要耍群,而又開啟了,可能會被拒找筝。(親測蹈垢,會被拒,且是不定期)
- 總的來說袖裕,其實后臺獲取和靜默推送在很多方面是很類似的耘婚,特別是實現(xiàn)和處理的方式,但是它們適用的情景是完全不同的陆赋。后臺獲取更多地使用在泛數(shù)據(jù)模式下沐祷,也即用戶對特定數(shù)據(jù)并不是很關(guān)心,數(shù)據(jù)應(yīng)該被更新的時間也不是很確定攒岛,典型的有社交類應(yīng)用和天氣類應(yīng)用赖临;而靜默推送或者是推送喚醒更多地應(yīng)該是用戶感興趣的內(nèi)容發(fā)生更新時被使用,比如消息類應(yīng)用和內(nèi)容型服務(wù)等灾锯。
- 待驗證:只有iOS10以上才支持app被喚醒后在后臺/鎖屏狀態(tài)下播放音頻兢榨。
本文部分摘自zhenby的簡書,多謝作者zhenby的貢獻。
原文鏈接:http://www.reibang.com/p/d3e279de2e32