1. IDFA隱私加強(qiáng)
IDFA默認(rèn)關(guān)閉,需要向用戶申請獲取權(quán)限,需要在info.plist中明示用戶申請權(quán)限:
key : NSUserTrackingUsageDescription
value: “獲取設(shè)備信息用以精準(zhǔn)推送您喜歡的內(nèi)容”(用于顯示給用戶的話術(shù))
申請代碼:
// 調(diào)用request會(huì)彈窗提示用戶是否授權(quán),點(diǎn)拒絕則無法讀取
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
if (status == ATTrackingManagerAuthorizationStatusAuthorized) {
// 已授權(quán)
NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
} else {
// 此時(shí)用戶點(diǎn)擊拒絕則無法讀取
NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
}
}];
注意:
需要用戶在手機(jī)中打開追蹤開關(guān),該開關(guān)默認(rèn)關(guān)閉(正式版延期至2021年,目前依然可讀取)。
如果用戶不打開該開關(guān)則無法獲取idfa,也無法申請權(quán)限。細(xì)則見文章結(jié)尾。
另外需要引入系統(tǒng)庫FrameWork: AppTrackingTransparency
2. 定位獲取變更
IOS 14可以授權(quán)模糊定位(Precise Location),默認(rèn)給出精準(zhǔn)定位。APP可以申請單次的精準(zhǔn)定位。
申請的單次精準(zhǔn)定位本次APP生命周期內(nèi)有效,APP一個(gè)生命周期內(nèi)可以多次申請。任何一次允許后則可正常獲取精準(zhǔn)定位。
申請方式:需要在info.plist中配置:
NSLocationTemporaryUsageDescriptionDictionary
key:precise。用于request的PurposeKey值,自定義即可
value:申請定位用于給您做精準(zhǔn)推薦。(用于顯示給用戶的話術(shù))
[self.locationManager requestTemporaryFullAccuracyAuthorizationWithPurposeKey:@"precise" completion:^(NSError *error) {
// 根據(jù)狀態(tài)判斷是否獲取到了定位權(quán)限
if (self.locationManager.accuracyAuthorization == CLAccuracyAuthorizationReducedAccuracy) {
}
}];
也可以不獲取精準(zhǔn)定位直接請求模糊定位:NSLocationDefaultAccuracyReduced 值為true
注意:申請單次精準(zhǔn)定位的前提是用戶選擇了給模糊定位。如果用戶拒絕給定位或者已經(jīng)給出精準(zhǔn)定位,則無法申請單次精準(zhǔn)定位。
3. 新特性Clips
類似于小程序,通過瀏覽器、短信消息、Maps、NFC、二維碼等形式啟動(dòng)。待更新
4. UITableViewCell
IOS 14要求使用[cell.contentView addSubview],不推薦使用[cell addSubview]了,有人說會(huì)遮擋視圖,目前沒復(fù)現(xiàn),點(diǎn)擊也還正常,但是保不齊以后不讓用,還是建議用contentView add吧。
5. KVC 不允許訪問 UIPageControl的pageImage
新增了API:preferredIndicatorImage設(shè)置image
6. 相冊新增選擇部分照片權(quán)限類型
PHAuthorizationStatusLimited,會(huì)在彈窗相冊權(quán)限時(shí)增加一個(gè)“選擇照片”選項(xiàng),點(diǎn)擊可以勾選部分照片供該APP使用。
如果用戶選擇了部分照片,那么重啟APP后再用到相冊權(quán)限依然會(huì)彈窗提醒選擇更多照片。
可以在Info.plist中設(shè)置“PHPhotoLibraryPreventAutomaticLimitedAccessAlert”為YES,來阻止彈窗反復(fù)彈出。
也可以在代碼中配置在合適的位置彈窗:
[[PHPhotoLibrary sharedPhotoLibrary] presentLimitedLibraryPickerFromViewController:self];
7. 相機(jī)和麥克風(fēng)
iOS14 中 App 在使用相機(jī)和麥克風(fēng)時(shí)右上角會(huì)有綠點(diǎn)(相機(jī))和黃點(diǎn)(麥克風(fēng))提示,無法隱藏。
8. 讀取剪切板會(huì)彈提示
讀取剪切板內(nèi)容時(shí),會(huì)有toast提示,從頂部彈出,例如:手機(jī)淘寶 - 粘貼自:QQ
備注
IDFA獲取邏輯:
首先分總開關(guān)和小開關(guān),總開關(guān)為設(shè)置里面的隱私開關(guān),關(guān)閉后無論APP怎么處理都無法獲取idfa,只有在APP設(shè)置中開關(guān)開啟的狀態(tài)下才能進(jìn)行其它操作。下面介紹一下總開關(guān)開啟的情況下:
IOS 14以下:
即便IDFA的狀態(tài)為ATTrackingManagerAuthorizationStatusAuthorized,依然可以強(qiáng)制讀取IDFA。
IOS 14以后:
如果APP不進(jìn)行request idfa操作,那么默認(rèn)開關(guān)是開啟的,此時(shí)我們獲取idfa狀態(tài),是未授權(quán)(ATTrackingManagerAuthorizationStatusAuthorized),但是可以不進(jìn)行if判斷強(qiáng)制讀取。
如果APP進(jìn)行了request idfa操作,那么會(huì)彈窗提醒用戶,此時(shí)用戶如果點(diǎn)了拒絕,那么idfa無法讀取,強(qiáng)制讀取亦失效。但是在APP彈窗之前是可以讀取idfa的,所以如果APP是在使用期間進(jìn)行request,那么request之前其實(shí)是可以拿到idfa并存儲(chǔ)下來。
綜合來說,目前的情形是不建議做彈窗授權(quán),彈窗了反而會(huì)有無法讀取的可能。