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