电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

iOS适配及部分解决

8页
  • 卖家[上传人]:Baige****0346
  • 文档编号:265413432
  • 上传时间:2022-03-13
  • 文档格式:DOCX
  • 文档大小:855.90KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、 iOS14适配及部分解决方案 本文是从简书网上复制而来,因本人参考的简书上一个不错的iOS 14适配博文打不开了,所以防止内容找不到在此复制一份。在6月份刚结束的首次线上 WWDC 2020 发布会上苹果向我们展示了新的 iOS14 系统。iOS14 的适配,很重要的一环就集中在用户隐私和安全方面。在 iOS13 及以前,当用户首次访问应用程序时,会被要求开放大量权限,比如相册、定位、联系人,实际上该应用可能仅仅需要一个选择图片功能,却被要求开放整个照片库的权限,这确实是不合理的。对于相册,在 iOS14 中引入了 “LimitedPhotos Library” 的概念,用户可以授予应用访问其一部分的照片,对于应用来说,仅能读取到用户选择让应用来读取的照片,让我们看到了 Apple 对于用户隐私的尊重。这仅仅是一部分,在iOS14 中,可以看到诸多类似的保护用户隐私的措施,也需要我们升级适配。本文主要分享一下 iOS14 上对于隐私授权的变更和部分适配方案,欢迎补充指正。适配点 相册 iOS14 新增了“Limited Photo Library Access” 模式,在授权弹窗中增

      2、加了 Select Photo 选项。用户可以在 App 请求调用相册时选择部分照片让 App 读取。从 App 的视来看,你的相册里就只有这几张照片,App 无法得知其它照片的存在。 iOS14 中当用户选择“PHAuthorizationStatusLimited” 时,如果未进行适配,有可能会在每次触发相册功能时都进行弹窗询问用户是否需要修改照片权限。 对于这种情况可通过在 Info.plist 中设置“PHPhotoLibraryPreventAutomaticLimitedAccessAlert”的值为 YES 来阻止该弹窗反复弹出,并且可通过下面这个 API 来主动控制何时弹出PHPickerViewController 进行照片选择PHPhotoLibrary sharedPhotoLibrary presentLimitedLibraryPickerFromViewController:self; 在 iOS14 中官方推荐使用 PHPicker 来替代原 API 进行图片选择。PHPicker 为独立进程,会在视图最顶层进行展示,应用内无法对其进行截图也无法直接访问到

      3、其内的数据。 UIImagePickerController - PHPickerViewController, UIImagePickerViewController 功能受限,每次只能选择一张图片,将逐渐被废弃。 PHPicker 支持多选,支持搜索,支持按 image,video,livePhotos 等进行选择。 新API及迁移demo:interface ViewController () property (weak, nonatomic) IBOutlet UIImageView *imageView; property (nonatomic, strong) NSArray *itemProviders; end implementation ViewController - (void)viewDidLoad super viewDidLoad; / Do any additional setup after loading the view. - (IBAction)button:(id)sender / 以下 API 仅为 iOS14 only PHPickerC

      4、onfiguration *configuration = PHPickerConfiguration alloc init; configuration.filter = PHPickerFilter videosFilter; / 可配置查询用户相册中文件的类型,支持三种 configuration.selectionLimit = 0; / 默认为1,为0时表示可多选。 PHPickerViewController *picker = PHPickerViewController alloc initWithConfiguration:configuration; picker.delegate = self; / picker vc,在选完图片后需要在回调中手动 dismiss self presentViewController:picker animated:YES completion: ; #pragma mark - Delegate - (void)picker:(PHPickerViewController *)picker didFinishPicking:(N

      5、SArray *)results picker dismissViewControllerAnimated:YES completion:nil; if (!results | !results.count) return; NSItemProvider *itemProvider = results.firstObject.itemProvider; if (itemProvider canLoadObjectOfClass:UIImage.class) _weak typeof(self) weakSelf = self; itemProvider loadObjectOfClass:UIImage.class completionHandler:(_kindof id _Nullable object, NSError * _Nullable error) if (object isKindOfClass:UIImage.class) _strong typeof(self) strongSelf = weakSelf; dispatch_async(dispatch_get_m

      6、ain_queue(), strongSelf.imageView.image = (UIImage *)object; ); ; 需要注意的是,在 limit Photo 模式下,AssetsLibrary 访问相册会失败;在 writeOnly 模式下,AssetLibrary 也会有显示问题。建议还在使用 AssetsLibrary 的同学尽快迁移到新 API。 授权相关:旧 API 废弃,增加 PHAccessLevel 参数。如果再使用以前的API来获取权限状态,PHAuthorizationStatusLimited 状态下也会返回PHAuthorizationStatusAuthorizedtypedef NS_ENUM(NSInteger, PHAccessLevel) PHAccessLevelAddOnly = 1, / 仅允许添加照片 PHAccessLevelReadWrite = 2, / 允许访问照片,limitedLevel 必须为 readWrite API_AVAILABLE(macos(10.16), ios(14), tvos(14); / 查询权

      7、限 PHAccessLevel level = PHAccessLevelReadWrite; PHAuthorizationStatus status = PHPhotoLibrary authorizationStatusForAccessLevel:level; switch (status) case PHAuthorizationStatusLimited: NSLog(limited); break; case PHAuthorizationStatusDenied: NSLog(denied); break; case PHAuthorizationStatusAuthorized: NSLog(authorized); break; default: break; / 请求权限,需注意 limited 权限尽在 accessLevel 为 readAndWrite 时生效 PHPhotoLibrary requestAuthorizationForAccessLevel:level handler:(PHAuthorizationStatus status) switc

      8、h (status) case PHAuthorizationStatusLimited: NSLog(limited); break; case PHAuthorizationStatusDenied: NSLog(denied); break; case PHAuthorizationStatusAuthorized: NSLog(authorized); break; default: break; ; 定位 在 iOS13 及以前,App 请求用户定位授权时为如下形态:一旦用户同意应用获取定位信息,当前应用就可以获取到用户的精确定位。 iOS14 新增用户大致位置选项可供用户选择,原因是大多数 App 实际上并不需要获取用户到用户最准确的定位信息。iOS14 授权弹窗新增的 Precise的开关默认会选中精确位置。用户通过这个开关可以进行更改,当把这个值设为 On 时,地图上会显示精确位置;切换为Off时,将显示用户的大致位置。 对于对用户位置敏感度不高的 App 来说,这个似乎无影响,但是对于强依赖精确位置的 App 适配工作就显得非常重要了。可以通过用户在 “隐私设置” 中

      9、设置来开启精确定位,但是可能用户宁可放弃使用这个应用也不愿意开启。这个时候,iOS14 在 CLLocationManager 新增两个方法可用于向用户申请临时开启一次精确位置权限。使用方式也很简单,需要首先在 Info.plist 中配置“NSLocationTemporaryUsageDescriptionDictionary”字典中需要配置 key 和 value 表明使用位置的原因,以及具体的描述。在本例中,key 即为获取用户权限时传的 purposeKey,最终呈现给用户的就是左图,右图为当App主动关闭精确定位权限申请。 对于地理位置不敏感的App 来说,iOS14 也可以通过直接在 info.plist 中添加 NSLocationDefaultAccuracyReduced 为 true 默认请求大概位置。 这样设置之后,即使用户想要为该 App 开启精确定位权限,也无法开启。 也可以直接通过API来根据不同的需求设置不同的定位精确度。 需要注意的是,当 App 在 Background 模式下,如果并未获得精确位置授权,那么 Beacon 及其他位置敏感功能都将受到限制。 IDFA IDFA 全称为 Identity for Advertisers ,即广告标识符。用来标记用户,目前最广泛的用途是用于投放广告、个性化推荐等。 在 iOS13 及以前,系统会默认为用户开启允许追踪设置,我们可以简单的通过代码来获取

      《iOS适配及部分解决》由会员Baige****0346分享,可在线阅读,更多相关《iOS适配及部分解决》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.