最近使用NSURLSession做下載時(shí)应役,配置了NSURLSessionConfiguration為backgroundSessionConfiguration,
在下載時(shí)發(fā)現(xiàn)拔下iPhone拔下電源后院崇,點(diǎn)擊下載無任何進(jìn)度袍祖,連接電源后即可正常下載,最終發(fā)現(xiàn)是NSURLSessionConfiguration的discretionary設(shè)置為了YES導(dǎo)致捐凭;
此屬性在官方API文檔的定義為:
/* allows background tasks to be scheduled at the discretion of the system for optimal performance. */
@property (getter=isDiscretionary) BOOL discretionary NS_AVAILABLE(10_10, 7_0);
此屬性設(shè)置為YES時(shí)茁肠,系統(tǒng)根據(jù)當(dāng)前性能自動(dòng)處理后臺任務(wù)的優(yōu)先級缩举,以獲得最佳性能 (僅background session有效),
但是我用的測試機(jī)為iPhone7仅孩,且電量是滿滿的。
經(jīng)查閱:allowsCellularAccess 和 discretionary 被用于節(jié)省通過蜂窩連接的帶寬站刑。建議在使用后臺傳輸?shù)臅r(shí)候鼻百,使用discretionary屬性温艇,而不是allowsCellularAccess屬性,因?yàn)樗鼤?huì)把WiFi和電源可用性考慮在內(nèi)勺爱。