iOS14適配方案


https://blog.csdn.net/a18339063397/article/details/108799233

 

1. 隱私適配

iOS14最重要的更新之一:用戶隱私和安全。

(1) 廣告標識符IDFA

廣告標識符IDFA全稱Identity for Advertisers,用來標記用戶以便於投放廣告、個性化推薦等。

更新前后區別如下:

IDFA權限提示:iOS13左、iOS14右

1> iOS13系統IDFA

iOS13及以前,系統會默認為用戶 開啟 廣告追蹤權限。

通過以下代碼即可獲得IDFA標識符:

  1.  
    // TODO: ----------------- ViewController類 -----------------
  2.  
    #import <AdSupport/AdSupport.h>
  3.  
     
  4.  
    - ( void)obtainIDFA {
  5.  
    // 使用原方式訪問 IDFA
  6.  
    if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
  7.  
    NSString *idfaStr = [[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString;
  8.  
    NSLog(@"idfaStr - %@", idfaStr);
  9.  
    }
  10.  
    }

2> iOS14系統IDFA

iOS14中,系統會默認為用戶 關閉 廣告追蹤權限。

且以上判斷用戶是否允許被追蹤的方法被廢棄:

ASIdentifierManager

3> iOS14系統IDFA配置

  • 首先在 info.plist 中配置權限:
    keyNSUserTrackingUsageDescription
    value獲取設備信息用以精准推送您喜歡的內容

  • 然后通過以下代碼獲得IDFA標識符:

 

  1.  
    // TODO: ----------------- ViewController類 -----------------
  2.  
    #import <AdSupport/AdSupport.h>
  3.  
    #import <AppTrackingTransparency/AppTrackingTransparency.h>
  4.  
     
  5.  
    - ( void)obtainIDFA {
  6.  
    // iOS14方式訪問 IDFA
  7.  
    if (@available(iOS 14, *)) {
  8.  
    [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
  9.  
    if (status == ATTrackingManagerAuthorizationStatusAuthorized) {
  10.  
    NSString *idfaStr = [[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString;
  11.  
    NSLog(@"idfaStr - %@", idfaStr);
  12.  
    }
  13.  
    }];
  14.  
    } else {
  15.  
    // 使用原方式訪問 IDFA
  16.  
    if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
  17.  
    NSString *idfaStr = [[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString;
  18.  
    NSLog(@"idfaStr - %@", idfaStr);
  19.  
    }
  20.  
    }
  21.  
    }
  • 最后啟動應用彈出申請,經過用戶同意授權之后,才能最終獲取正確的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
    keypreciseKey
    value申請定位用於給您做精准推薦

  • 然后通過以下代碼單獨請求一次精確定位:

 

  1.  
    // TODO: ----------------- ViewController類 -----------------
  2.  
    #import <CoreLocation/CoreLocation.h>
  3.  
     
  4.  
    - ( void)obtainLocation {
  5.  
    // iOS14方式請求 精確定位
  6.  
    if (@available(iOS 14.0, *)) {
  7.  
    CLLocationManager *locationManager = [[CLLocationManager alloc] init];
  8.  
    [locationManager requestTemporaryFullAccuracyAuthorizationWithPurposeKey: @"preciseKey" completion:^(NSError * _Nullable error) {
  9.  
     
  10.  
    }];
  11.  
    } else {
  12.  
    // Fallback on earlier versions
  13.  
    }
  14.  
    }
  • 最后啟動應用彈出申請,經過用戶同意授權之后,才能最終獲取正確的精確定位。

(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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM