zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    App提交Appstore审核流程【转】
    程序员必须软件
    Linux的cron和crontab
    Git操作基本命令
    Python编码问题整理【转】
    Python读取ini配置文件
    RF+Jenkins构建持续集成
    RF接口测试本地环境部署
    Python建立SSH连接与使用方法
    永久修改python默认的字符编码为utf-8
  • 原文地址:https://www.cnblogs.com/itlover2013/p/13770925.html
Copyright © 2011-2022 走看看