1. IDFA隱私加強
IDFA默認關閉噪珊,需要向用戶申請獲取權限枫夺,需要在info.plist中明示用戶申請權限:
key : NSUserTrackingUsageDescription
value: “獲取設備信息用以精準推送您喜歡的內容”(用于顯示給用戶的話術)
申請代碼:
// 調用request會彈窗提示用戶是否授權彼宠,點拒絕則無法讀取
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
if (status == ATTrackingManagerAuthorizationStatusAuthorized) {
// 已授權
NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
} else {
// 此時用戶點擊拒絕則無法讀取
NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
}
}];
注意:
需要用戶在手機中打開追蹤開關,該開關默認關閉(正式版延期至2021年鸳惯,目前依然可讀妊蛔觥)。
如果用戶不打開該開關則無法獲取idfa贝或,也無法申請權限吼过。細則見文章結尾。
另外需要引入系統(tǒng)庫FrameWork: AppTrackingTransparency
2. 定位獲取變更
IOS 14可以授權模糊定位(Precise Location)盗忱,默認給出精準定位。APP可以申請單次的精準定位羊赵。
申請的單次精準定位本次APP生命周期內有效趟佃,APP一個生命周期內可以多次申請。任何一次允許后則可正常獲取精準定位昧捷。
申請方式:需要在info.plist中配置:
NSLocationTemporaryUsageDescriptionDictionary
key:precise闲昭。用于request的PurposeKey值,自定義即可
value:申請定位用于給您做精準推薦靡挥。(用于顯示給用戶的話術)
[self.locationManager requestTemporaryFullAccuracyAuthorizationWithPurposeKey:@"precise" completion:^(NSError *error) {
// 根據(jù)狀態(tài)判斷是否獲取到了定位權限
if (self.locationManager.accuracyAuthorization == CLAccuracyAuthorizationReducedAccuracy) {
}
}];
也可以不獲取精準定位直接請求模糊定位:NSLocationDefaultAccuracyReduced 值為true
注意:申請單次精準定位的前提是用戶選擇了給模糊定位序矩。如果用戶拒絕給定位或者已經給出精準定位,則無法申請單次精準定位跋破。
3. 新特性Clips
類似于小程序簸淀,通過瀏覽器、短信消息毒返、Maps啃擦、NFC荷荤、二維碼等形式啟動鞍帝。待更新
4. UITableViewCell
IOS 14要求使用[cell.contentView addSubview],不推薦使用[cell addSubview]了屈呕,有人說會遮擋視圖狡恬,目前沒復現(xiàn)珠叔,點擊也還正常,但是保不齊以后不讓用弟劲,還是建議用contentView add吧祷安。
5. KVC 不允許訪問 UIPageControl的pageImage
新增了API:preferredIndicatorImage設置image
6. 相冊新增選擇部分照片權限類型
PHAuthorizationStatusLimited,會在彈窗相冊權限時增加一個“選擇照片”選項兔乞,點擊可以勾選部分照片供該APP使用汇鞭。
如果用戶選擇了部分照片凉唐,那么重啟APP后再用到相冊權限依然會彈窗提醒選擇更多照片。
可以在Info.plist中設置“PHPhotoLibraryPreventAutomaticLimitedAccessAlert”為YES霍骄,來阻止彈窗反復彈出台囱。
也可以在代碼中配置在合適的位置彈窗:
[[PHPhotoLibrary sharedPhotoLibrary] presentLimitedLibraryPickerFromViewController:self];
7. 相機和麥克風
iOS14 中 App 在使用相機和麥克風時右上角會有綠點(相機)和黃點(麥克風)提示,無法隱藏读整。
8. 讀取剪切板會彈提示
讀取剪切板內容時簿训,會有toast提示,從頂部彈出米间,例如:手機淘寶 - 粘貼自:QQ
備注
IDFA獲取邏輯:
首先分總開關和小開關强品,總開關為設置里面的隱私開關,關閉后無論APP怎么處理都無法獲取idfa屈糊,只有在APP設置中開關開啟的狀態(tài)下才能進行其它操作的榛。下面介紹一下總開關開啟的情況下:
IOS 14以下:
即便IDFA的狀態(tài)為ATTrackingManagerAuthorizationStatusAuthorized,依然可以強制讀取IDFA逻锐。
IOS 14以后:
如果APP不進行request idfa操作困曙,那么默認開關是開啟的,此時我們獲取idfa狀態(tài)谦去,是未授權(ATTrackingManagerAuthorizationStatusAuthorized)慷丽,但是可以不進行if判斷強制讀取。
如果APP進行了request idfa操作鳄哭,那么會彈窗提醒用戶要糊,此時用戶如果點了拒絕,那么idfa無法讀取妆丘,強制讀取亦失效锄俄。但是在APP彈窗之前是可以讀取idfa的,所以如果APP是在使用期間進行request勺拣,那么request之前其實是可以拿到idfa并存儲下來奶赠。
綜合來說,目前的情形是不建議做彈窗授權药有,彈窗了反而會有無法讀取的可能毅戈。