iOS 14 适配要点总结

1. 读取剪切板自动提示用户

剪切板可能被淘宝玩坏了,大量使用导致苹果爸爸重视起来了,默认会弹窗提示用户,应用读取了剪切板,比如:“手机淘宝 - 黏贴自:微信”

image.png

2. 使用相机和麦克风自动提示用户

iOS14 中 App 在使用相机和麦克风时右上角会有绿点(相机)和黄点(麦克风)提示,无法隐藏

3. 定位精度

  1. iOS 14可以授权模糊定位(Precise Location),默认给出精准定位。APP可以申请单次的精准定位
  2. 除了Privacy - Location Always and When In Use Usage DescriptionPrivacy - Location When In Use Usage Description权限描述需要添加,Privacy - Location Temporary Usage Description Dictionary可以添加为什么需要获取精准定位的描述
默认第一次请求定位.png
临时申请需要精准定位.png
private lazy var locationManager: CLLocationManager = {
        let manager = CLLocationManager()
        manager.delegate = self
        return manager
 }()
    
    
private func start() {
        
        if #available(iOS 14.0, *) {
            if locationManager.accuracyAuthorization == .reducedAccuracy {
                // 如果没有精准定位,可以向用户临时申请给一次精准定位的机会
                // 这个key其实是想获取定义在info.plist的键Privacy - Location Temporary Usage Description Dictionary中
                // 设置的提示,为什么需要获取精准定位?
                locationManager.requestTemporaryFullAccuracyAuthorization(withPurposeKey: "deliver")
            }
        }
        locationManager.requestAlwaysAuthorization()
        locationManager.startUpdatingLocation()
}

3.1 强制只获取默认地址

对于地理位置不敏感的App 来说,iOS14 也可以通过直接在 info.plist 中添加 NSLocationDefaultAccuracyReduced 为 true 默认请求大概位置

4. Limited Photo

苹果认为大部分应用是没有必要一次授权,就拥有所有相册访问权限得,所以推出了更细分的概念,允许用户只授权指定的图片,就是所谓的Limited Photo

4.1 默认选择图片方式

使用iOS默认提供的方式,并不需要授权,如果需要自定义图片选择器,就需要授权

访问相册授权界面.png

iOS13以下选取图片

let picker = UIImagePickerController()
picker.delegate = self
present(picker, animated: true, completion: nil)

iOS13及以上选取图片

引用库import Photos、import PhotosUI,支持多选图片

/// 使用
private func picker() {

        if #available(iOS 14, *) {
            var configuration = PHPickerConfiguration()
            configuration.selectionLimit = 9
            let picker = PHPickerViewController(configuration: configuration)
            picker.modalPresentationStyle = .fullScreen
            picker.delegate = self
            present(picker, animated: true, completion: nil)
        } else {
            // Fallback on earlier versions
        }
    }
    
    @available(iOS 14, *)
    func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
        print(results.count)
        print(results)
    }

4.2 写入图片至相册

private func write() {
    UIImageWriteToSavedPhotosAlbum(imageView.image!, nil, nil, nil)
}

4.3 可以参考微信

image.png

更多请参考:相册详细适配指南

5. Mac地址变动

  1. iOS8 - iOS13 ,用户在不同的网络间切换和接入时,mac 地址都不会改变,这也就使得网络运营商还是可以通过 mac 地址对用户进行匹配和用户信息收集,生成完整的用户信息。
  2. iOS14 提供 Wifi 加密服务,每次接入不同的 WiFi 使用的 mac 地址都不同。每过 24 小时,mac 地址还会更新一次。需要关注是否有使用用户网络 mac 地址的服务

用户也可以自行选择是否开启 private Wi-Fi address,进入WiFi设置中,关闭“私有地址”选项