相册

  • 新增Limited Photo Library Access模式
  • 问题:iOS14用户选择PHAuthorizationStatusLimited时,调用相册功能时会反复提醒用户修改相册权限的情况。

    • 解决方案:在info.plist文件中设置PHPhotoLibraryPreventAutomaticLimitedAccessAlert为YES。通过代码中相册拉起
      1. [[PHPhotoLibrary sharedPhotoLibrary] presentLimitedLibraryPickerFromViewController:self];
  • 官方推荐使用PHPickerViewController,UIImagePickerViewController功能受限,每次只能获取一张图片。

  • PHPicker支持多选,支持搜索,支持按 image,video,livePhotos 等进行选择
  • 注意⚠️:
    • 在 limit Photo 模式下,AssetsLibrary 访问相册会失败
    • 在 writeOnly 模式下,AssetLibrary 也会有显示问题
    • 按旧版本获取相册授权时,PHAuthorizationStatusLimited 状态下也会返回PHAuthorizationStatusAuthorized

定位

  • iOS14 新增用户大致位置选项。iOS14 授权弹窗新增的 Precise的开关默认会选中精确位置。用户通过这个开关可以进行更改,当把这个值设为 On 时,地图上会显示精确位置;切换为Off时,将显示用户的大致位置。
  • iOS14用户可以在在 “隐私设置” 中设置来开启精确定位。
  • iOS14 在 CLLocationManager 新增两个方法可用于向用户申请临时开启一次精确位置权限。
    • 先配置info.plist,设置NSLocationTemporaryUsageDescriptionDictionary中的key和value
    • 使用以下两个API ```objectivec
  • (void)requestTemporaryFullAccuracyAuthorizationWithPurposeKey:(NSString *)purposeKey
    1. completion:(void (^)(NSError *))completion;
  • (void)requestTemporaryFullAccuracyAuthorizationWithPurposeKey:(NSString *)purposeKey; ```

  • 对位置不敏感的可以在info.plist文件设置NSLocationDefaultAccuracyReduced来获取大概的位置。但是这样设置之后用户想要为该 App 开启精确定位权限,也无法开启。

  • 注意
    • 当 App 在 Background 模式下,如果并未获得精确位置授权,那么 Beacon 及其他位置敏感功能都将受到限制

本地网络

  • iOS14 当 App 要使用 Bonjour 服务时或者访问本地局域网,使用 mDNS 服务等,都需要授权,开发者需要在 Info.plist 中详细描述使用的为哪种服务以及用途。下图为需要无需申请权限与需要授权的服务:

image.png

  • 如果应用中需要使用 LocalNetwork 需要在 Info.plist 中配置两个选项,详细描述为什么需要使用该权限,以及需要列出具体使用 LocalNetwork 的服务列表

image.png

WiFi Address

  • iOS14 提供 Wifi 加密服务,每次接入不同的 WiFi 使用的 mac 地址都不同。每过 24 小时,mac 地址还会更新一次。需要关注是否有使用用户网络 mac 地址的服务

iOS13及之前
image.png
iOS14之后
image.png

  • 用户也可以自行选择是否开启 private Wi-Fi address

剪切板

  • 在 iOS14 中,读取用户剪切板的数据会弹出提示。
  • 弹出提示的原因是使用 UIPasteboard 访问用户数据,访问以下数据都会弹出 toast 提示
    • NSString *string
    • NSArray strings
    • URL
    • NSArray URLs
    • image
    • NSArray<UIImage *>images
    • color
    • NSArray<UIColor *>colors
  • 直接获取剪切板的数据,无法避免提示语。如果仅是判断是否是URL,则可以使用iOS14提供的新API,

UIPasteboardDetectionPattern
image.png

相机和麦克风

  • iOS14 中 App 使用相机和麦克风时会有图标提示以及绿点和黄点提示,并且会显示当前是哪个 App 在使用此功能。我们无法控制是否显示该提示。

IDFA

  • 在 iOS13 及以前,系统会默认为用户开启允许追踪设置,我们可以简单的通过代码来获取到用户的 IDFA 标识符。

    1. if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
    2. NSString *idfaString = [[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString;
    3. NSLog(@"%@", idfaString);
    4. }
  • 但是在 iOS14 中,这个判断用户是否允许被追踪的方法已经废弃。

  • iOS14 中,系统会默认为用户关闭广告追踪权限。
  • 获取权限需要在info.plist中配置NSUserTrackingUsageDescription及描述文案。
    • 使用 AppTrackingTransparency 框架中的 ATTrackingManager 中的 requestTrackingAuthorizationWithCompletionHandler 请求用户权限,在用户授权后再去访问 IDFA 才能够获取到正确信息。

AppStore

更加严格的隐私审核,可以让用户在下载 App 之前就知道此 App 将会需要哪些权限。目前苹果商店要求所有应用在上架时都必须提供一份隐私政策。如果引入了第三方收集用户信息等SDK,都需要向苹果说明是这些信息的用途。
image.png
image.png