1. 隱私適配
iOS14最重要的更新之一:用戶隱私和安全。
(1) 廣告標(biāo)識符IDFA
廣告標(biāo)識符IDFA全稱Identity for Advertisers臂拓,用來標(biāo)記用戶以便于投放廣告拙毫、個性化推薦等。
更新前后區(qū)別如下:
1> iOS13系統(tǒng)IDFA
iOS13及以前泌枪,系統(tǒng)會默認(rèn)為用戶 開啟 廣告追蹤權(quán)限。
通過以下代碼即可獲得IDFA標(biāo)識符:
// TODO: ----------------- ViewController類 -----------------
#import <AdSupport/AdSupport.h>
- (void)obtainIDFA {
// 使用原方式訪問 IDFA
if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
NSString *idfaStr = [[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString;
NSLog(@"idfaStr - %@", idfaStr);
}
}
2> iOS14系統(tǒng)IDFA
iOS14中秕岛,系統(tǒng)會默認(rèn)為用戶 關(guān)閉 廣告追蹤權(quán)限碌燕。
且以上判斷用戶是否允許被追蹤的方法被廢棄:
3> iOS14系統(tǒng)IDFA配置
首先在 info.plist 中配置權(quán)限:
key
:NSUserTrackingUsageDescription
value
:獲取設(shè)備信息用以精準(zhǔn)推送您喜歡的內(nèi)容
然后通過以下代碼獲得IDFA標(biāo)識符:
// TODO: ----------------- ViewController類 -----------------
#import <AdSupport/AdSupport.h>
#import <AppTrackingTransparency/AppTrackingTransparency.h>
- (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);
}
}
}
- 最后啟動應(yīng)用彈出申請,經(jīng)過用戶同意授權(quán)之后继薛,才能最終獲取正確的IDFA信息修壕。
(2) 相冊
更新前后區(qū)別如下:
1> iOS13系統(tǒng)相冊
iOS13及以前遏考,App請求用戶相冊授權(quán):用戶同意App獲取相冊信息慈鸠,當(dāng)前App就可以獲取到用戶的整個照片庫信息。
2> iOS14系統(tǒng)相冊
iOS14新增了Limited Photo Library Access
模式灌具,在授權(quán)彈窗中增加了 選擇照片
選項青团。用戶可以選擇開放照片庫或者特定的相冊給App,保證用戶隱私咖楣。
(3) 定位
更新前后區(qū)別如下:
1> iOS13系統(tǒng)定位
iOS13及以前,App請求用戶定位授權(quán):用戶同意App獲取定位信息诱贿,當(dāng)前App就可以獲取到用戶的精確定位娃肿。
2> iOS14系統(tǒng)定位
iOS14新增了精確定位
和模糊定位
的概念,默認(rèn)精確定位
瘪松,用戶可以手動關(guān)閉精確定位
以開啟模糊定位
咸作,可以選擇允許一次
或使用App時允許
。
3> iOS14系統(tǒng)定位配置
倘若App需要精確定位:
首先在 info.plist 中配置權(quán)限:
NSLocationTemporaryUsageDescriptionDictionary
:
key
:preciseKey
value
:申請定位用于給您做精準(zhǔn)推薦
然后通過以下代碼單獨請求一次精確定位:
// TODO: ----------------- ViewController類 -----------------
#import <CoreLocation/CoreLocation.h>
- (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
}
}
- 最后啟動應(yīng)用彈出申請宵睦,經(jīng)過用戶同意授權(quán)之后记罚,才能最終獲取正確的精確定位。
(4) 麥克風(fēng)和相機(jī)
iOS14中App在使用麥克風(fēng)或相機(jī)時右上角會有提示:黃點(麥克風(fēng))壳嚎、綠點(相機(jī))桐智,無法隱藏。
(5) 剪切板
iOS14中App在讀取剪切板內(nèi)容時烟馅,會有toast提示说庭,從頂部彈出。例如:手機(jī)淘寶 - 粘貼自:微信
2. 控件適配
(1) UITableViewCell
iOS14推薦使用[cell.contentView addSubview:];
方式添加控件郑趁。
因為UITableViewCell
中使用 [cell addSubview:]
方式添加的控件刊驴,會顯示在contentView
的下層,控件會被contentView
遮擋并無法響應(yīng)交互事件。
(2) UIDatePicker
更新前后區(qū)別如下:
1> iOS13系統(tǒng)UIDatePicker
樣式
iOS13及以前舅柜,UIDatePicker
樣式只有輪播樣式。
2> iOS14系統(tǒng)UIDatePicker
樣式
iOS14中UIDatePicker
樣式有四種躲惰,可根據(jù)需求設(shè)置致份,默認(rèn)是UIDatePickerStyleAutomatic
,會自動選擇當(dāng)前平臺和模式可用的最佳樣式础拨。
需要使用輪播樣式氮块,設(shè)置為UIDatePickerStyleWheels
即可:
self.datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels;