iOS 摸鱼周报 #58 | 极客风听歌网站,纯文字音乐播放器
本期概要
- 本期话题:在您的 App 中提供帐户删除选项
- 本周学习:如何配置合适的 ATS
- 内容推荐:WWDC22 推出的新技术和新内容(二番)
- 摸一下鱼:开启真·摸鱼模式,在线养金鱼;极客风的听歌网站,纯文字的音乐播放器。
本期话题
在您的 App 中提供帐户删除选项
@远恒之义:苹果要求,自 2022 年 6 月 30 日起,如果您的 App 支持帐户创建,提交到 App Store 审核,必须支持用户在 App 中发起帐户删除,以避免审核延迟。
⚠️ 注意事项: * 支持“通过 Apple 登录”的 App 应使用 Sign in with Apple REST API 来撤销用户令牌。 * 如果 App 帐户删除流程是手动的(如在应用内申请删除账号,需要管理员后台审核),请告知用户删除帐户需要多长时间,并在删除完成时提供一条确认信息。 * 如何避免拥有自动续期订阅的用户在删除帐户后意外被 Apple 继续扣款?可提供链接来让用户管理取消自己的订阅。
本周学习
整理编辑:夏天
如何配置合适的 ATS(App Transport Security)配置
为了增强应用与网络交互的安全,从 iOS 9 开始,苹果开启了称为应用传输安全 (ATS) 的网络功能用于提高所有应用和应用扩展的隐私和数据完整性。
ATS 会阻止不符合最低安全规范的连接
为什么需要进行 ATS 配置
ATS 为我们的应用安全增加了保护,但是由于某些原因,我们不得不需要某些手段来规避 ATS 规则
在 info.plist
中提供了 ATS 配置信息允许用户自定义规则
最新完整的 ATS 配置键值如下:
objectivec
NSAppTransportSecurity : Dictionary {
NSAllowsArbitraryLoads : Boolean
NSAllowsArbitraryLoadsForMedia : Boolean
NSAllowsArbitraryLoadsInWebContent : Boolean
NSAllowsLocalNetworking : Boolean
NSExceptionDomains : Dictionary {
<domain-name-string> : Dictionary {
NSIncludesSubdomains : Boolean
NSExceptionAllowsInsecureHTTPLoads : Boolean
NSExceptionMinimumTLSVersion : String
NSExceptionRequiresForwardSecrecy : Boolean
}
}
}
如果你现有的ATS 配置存在冗余的键值,证明其已被摒弃。你可以查看Document Revision History 明确相关键值的信息
如何挑选合适的 ATS 配置
但是由于各种键值的组合分类繁杂,为了确保连通性,我们需要一个简单的方法,来寻找到我们最适合的 ATS 配置
nscurl --ats-diagnostics --verbose http://developer.apple.com
上述命令会模拟我们 ATS 中配置规则对项目中使用URLSession:task:didCompleteWithError:
是否能够请求成功,也就是我们发起网络请求的结果。
受限于篇幅,我们就不展示命令运行的结果
从 ATS 默认的空字典开始,共计 16 种组合
-
Result : PASS
说明该配置可以连接到域名服务器成功 -
Result : FAIL
说明请求域名服务器失败,当前配置无法组合成功
注:虽然其列举的结果不包括
NSAllowsArbitraryLoadsForMedia
,NSAllowsArbitraryLoadsInWebContent
,NSAllowsLocalNetworking
,但是这三个是针对特定的文件的,所以不会影响配置
基于最小最适用原则选择对应的 ATS 配置。
参考资料
Preventing Insecure Network Connections
内容推荐
每年一度的苹果开发者盛会在不久前落幕了。今年的 WWDC 一如既往地精彩。我们将分几期将一些有关 WWDC 2022 上推出的新内容、新技术介绍给大家。
1、WWDC22: Wrap up and recommended talks -- 来自:hackingwithswift
@远恒之义:WWDC22 精彩纷呈,本文作者回顾了他参与本次活动的过程,一些现场有趣的故事,10 个最喜欢的演讲主题,6 个推荐视频来了解刚推出的新内容,还有几个丰富的 WWDC22 周边社区活动。
2、在 SwiftUI 利用 Live Text API 從圖片中擷取文本 -- 来自:appcoda
@远恒之义:在新的 iOS 16,Apple 发布了 Live Text API,可以将图像转换为机器可读的文本格式。我们只需使用 VisionKit 中的一个新类别 DataScannerViewController,来启用有 Live Text 功能的相机,就能提取出图像中的文本。本文同时为你提供了一个 demo 来快速上手体验。
3、iOS CarPlay|WWDC22 - 通过 CarPlay 让你的 App 发挥更大的作用 -- 来自:师大小海腾
@远恒之义:时隔 2 年,CarPlay 迎来了大更新。在 iOS16 中新增的两种支持 CarPlay 的 App 类型:Fueling App 和 Driving Task App。感兴趣的话,和作者一起来探索 Navigation App 如何在受支持车辆中的数字仪表盘上实时绘制地图。
此外,Apple 今年给我们带来了 CarPlay Simulator,它是一个 Mac App,可以帮助你在不离开办公桌的情况下连接 iPhone Device 来开发和测试 CarPlay App,模拟真实环境,而无需经常来回跑到你的车上或购买售后市场主机进行测试。这大幅度提升了开发者的开发测试体验。
4、用 Table 在 SwiftUI 下创建表格 -- 来自:东坡肘子
@远恒之义:Table 是 SwiftUI 3.0 中为 macOS 平台提供的表格控件,开发者通过它可以快捷地创建可交互的多列表格。在 WWDC 2022 中,Table 被拓展到 iPadOS 平台,让其拥有了更大的施展空间。本文将介绍 Table 的用法、分析 Table 的特点以及如何在其他的平台上实现类似的功能。
5、What’s the difference between any and some in Swift 5.7? -- 来自:Donny Wals
@Mimosa:作者通过举例来说明了在 Swift 5.7 中你该如何选择 some 还是 any 关键词,阐述了他们之间的不同,同时谈了一下该如何正确的使用它们,以及未来可能在 Swift 6 中的表现。在作者的另一篇文章 What are primary associated types in Swift 5.7? 中它也谈到了,在实际使用场景,例如关联类型的使用中,some 和 any 关键词对程序的影响。
6、深入理解 Git 底层实现原理 -- 来自:楚权
@Mimosa:大家平时都在使用 Git,但是其中的底层实现原理大家了解么?该文章作者从 Git 整体的架构出发,分层讲解了各层作用,主要谈了对象数据库的设计等。同时也给出了基于其原理的一个设计案例 —— CocoaPods Source 管理机制。文章整体写的通俗易懂,配图也简洁大方。
摸一下鱼
1、Goldfishies:开启真·摸鱼模式,在线养金鱼,有 5 种皮肤的鱼可选。对程序员来说刚刚好,不幼稚。
2、MusicForProgramming:极客风的听歌网站,纯文字的音乐播放器,作者说里面都是适合编程的音乐。
3、网页设计博物馆:该网站收录了从 1996 开始至今的一些主流网站的页面样式,从这里能清晰的感受网站设计这几十年的变化趋势。看一下 Apple 在 1999 年发布 Power Mac G4 的页面,突出重点,结构清晰。再说 Power Mac G4,用现在的眼光来看,它依然像是一款未来项的产品,Apple 的设计真的很超强。
4、Stackoverflow 的年度调查:调查结果来源于 70000 多个开发者的问卷分析,看两个比较有意思的结果吧。
参与调查的开发者的身份,全栈和后端所占比例非常高,移动开发相比就少很多了。
薪水和使用开发语言、工作年限之间的关系,这一批调查者占总人数的一半以上,工作年限从 9 年到 22 年,所以至少在国外大龄程序员是一个很常见的现象。
关于我们
iOS 摸鱼周报,主要分享开发过程中遇到的经验教训、优质的博客、高质量的学习资料、实用的开发工具等。周报仓库在这里:http://github.com/zhangferry/iOSWeeklyLearning ,如果你有好的的内容推荐可以通过 issue 的方式进行提交。另外也可以申请成为我们的常驻编辑,一起维护这份周报。另可关注公众号:iOS成长之路,后台点击进群交流,联系我们,获取更多内容。
往期推荐
- iOS 摸鱼周报 #87 | Planning for AGI
- iOS 摸鱼周报 #82 | 去中心化社交软件 Damus
- iOS 摸鱼周报 #83 | ChatGPT 的风又起来了
- iOS 求职寒冬?听听他们怎么说
- macOS 进化史
- 《软件研发效能提升之美》书评
- iOS 摸鱼周报 #61 | Developer 设计开发加速器
- 利用 Github Action 实现博客自动发版
- iOS 摸鱼周报 #58 | 极客风听歌网站,纯文字音乐播放器
- 摸鱼周报年终总结
- iOS 摸鱼周报 #55 | WWDC 码上就位
- iOS 摸鱼周报 #54 | Apple 辅助功能持续创新
- iOS摸鱼周报 第五十期
- iOS 摸鱼周报 第四十八期
- iOS摸鱼周报 第四十九期
- iOS摸鱼周报 第四十七期
- iOS 摸鱼周报 第四十六期
- iOS摸鱼周报 第四十三期
- iOS摸鱼周报 第四十四期
- 人物访谈 | 东坡肘子:健康&开发