https://blog.csdn.net/a18339063397/article/details/108799233
1. 隱私適配
iOS14最重要的更新之一:用戶隱私和安全。
(1) 廣告標識符IDFA
廣告標識符IDFA全稱Identity for Advertisers,用來標記用戶以便於投放廣告、個性化推薦等。
更新前后區別如下:
IDFA權限提示:iOS13左、iOS14右
1> iOS13系統IDFA
iOS13及以前,系統會默認為用戶 開啟 廣告追蹤權限。
通過以下代碼即可獲得IDFA標識符:
-
// TODO: ----------------- ViewController類 -----------------
-
-
-
- ( void)obtainIDFA {
-
// 使用原方式訪問 IDFA
-
if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
-
NSString *idfaStr = [[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString;
-
NSLog(@"idfaStr - %@", idfaStr);
-
}
-
}
2> iOS14系統IDFA
iOS14中,系統會默認為用戶 關閉 廣告追蹤權限。
且以上判斷用戶是否允許被追蹤的方法被廢棄:
ASIdentifierManager
3> iOS14系統IDFA配置
-
首先在 info.plist 中配置權限:
key
:NSUserTrackingUsageDescription
value
:獲取設備信息用以精准推送您喜歡的內容
-
然后通過以下代碼獲得IDFA標識符:
-
// TODO: ----------------- ViewController類 -----------------
-
-
-
-
- ( void)obtainIDFA {
-
// iOS14方式訪問 IDFA
-
if (@available(iOS 14, *)) {
-
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
-
if (status == ATTrackingManagerAuthorizationStatusAuthorized) {
-
NSString *idfaStr = [[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString;
-
NSLog(@"idfaStr - %@", idfaStr);
-
}
-
}];
-
} else {
-
// 使用原方式訪問 IDFA
-
if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
-
NSString *idfaStr = [[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString;
-
NSLog(@"idfaStr - %@", idfaStr);
-
}
-
}
-
}
- 最后啟動應用彈出申請,經過用戶同意授權之后,才能最終獲取正確的IDFA信息。
(2) 相冊
更新前后區別如下:
相冊權限提示:iOS13左、iOS14右
1> iOS13系統相冊
iOS13及以前,App請求用戶相冊授權:用戶同意App獲取相冊信息,當前App就可以獲取到用戶的整個照片庫信息。
2> iOS14系統相冊
iOS14新增了Limited Photo Library Access
模式,在授權彈窗中增加了 選擇照片
選項。用戶可以選擇開放照片庫或者特定的相冊給App,保證用戶隱私。
(3) 定位
更新前后區別如下:
定位權限提示:iOS13左、iOS14右
1> iOS13系統定位
iOS13及以前,App請求用戶定位授權:用戶同意App獲取定位信息,當前App就可以獲取到用戶的精確定位。
2> iOS14系統定位
iOS14新增了精確定位
和模糊定位
的概念,默認精確定位
,用戶可以手動關閉精確定位
以開啟模糊定位
,可以選擇允許一次
或使用App時允許
。
CLAccuracyAuthorization
請求精確定位方法
3> iOS14系統定位配置
倘若App需要精確定位:
-
首先在 info.plist 中配置權限:
NSLocationTemporaryUsageDescriptionDictionary
:key
:preciseKey
value
:申請定位用於給您做精准推薦
-
然后通過以下代碼單獨請求一次精確定位:
-
// TODO: ----------------- ViewController類 -----------------
-
-
-
- ( void)obtainLocation {
-
// iOS14方式請求 精確定位
-
if (@available(iOS 14.0, *)) {
-
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
-
[locationManager requestTemporaryFullAccuracyAuthorizationWithPurposeKey: @"preciseKey" completion:^(NSError * _Nullable error) {
-
-
}];
-
} else {
-
// Fallback on earlier versions
-
}
-
}
- 最后啟動應用彈出申請,經過用戶同意授權之后,才能最終獲取正確的精確定位。
(4) 麥克風和相機
iOS14中App在使用麥克風或相機時右上角會有提示:黃點(麥克風)、綠點(相機),無法隱藏。
iOS14麥克風和相機亮點提示
(5) 剪切板
iOS14中App在讀取剪切板內容時,會有toast提示,從頂部彈出。例如:手機淘寶 - 粘貼自:微信
iOS14剪切板提示
2. 控件適配
(1) UITableViewCell
contentView
iOS14推薦使用[cell.contentView addSubview:];
方式添加控件。
因為UITableViewCell
中使用 [cell addSubview:]
方式添加的控件,會顯示在contentView
的下層,控件會被contentView
遮擋並無法響應交互事件。
(2) UIDatePicker
更新前后區別如下:
UIDatePicker樣式:iOS13左、iOS14中和右
1> iOS13系統UIDatePicker
樣式
iOS13及以前,UIDatePicker
樣式只有輪播樣式。
2> iOS14系統UIDatePicker
樣式
iOS14中UIDatePicker
樣式有四種,可根據需求設置,默認是UIDatePickerStyleAutomatic
,會自動選擇當前平台和模式可用的最佳樣式。
UIDatePickerStyle
需要使用輪播樣式,設置為UIDatePickerStyleWheels
即可:
self.datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels;