iOS14适配方案

1. 隐私适配

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

(1) 广告标识符IDFA

广告标识符IDFA全称Identity for Advertisers,用来标记用户以便于投放广告、个性化推荐等。

更新前后区别如下:

IDFA权限提示:iOS13左、iOS14右

1> iOS13系统IDFA

iOS13及以前,系统会默认为用户 开启 广告追踪权限。

通过以下代码即可获得IDFA标识符:

// TODO: -----------------  ViewController类  -----------------
#import <AdSupport/AdSupport.h>

- (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 中配置权限:
    keyNSUserTrackingUsageDescription
    value获取设备信息用以精准推送您喜欢的内容

  • 然后通过以下代码获得IDFA标识符:

 

// 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);
        }
    }
}
  • 最后启动应用弹出申请,经过用户同意授权之后,才能最终获取正确的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申请定位用于给您做精准推荐

  • 然后通过以下代码单独请求一次精确定位:

 

// 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
    }
}
  • 最后启动应用弹出申请,经过用户同意授权之后,才能最终获取正确的精确定位。

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



作者:阡陌紫
链接:https://www.jianshu.com/p/d27fd6c2b510
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值