iOS 摸魚週報 #58 | 極客風聽歌網站,純文字音樂播放器

語言: CN / TW / HK

本期概要

  • 本期話題:在您的 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 會阻止不符合最低安全規範的連線

Apps-Transport-Security~dark@2x

圖片來源於開發者官網

為什麼需要進行 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 配置。

參考資料

NSAppTransportSecurity

NSExceptionDomains

Preventing Insecure Network Connections

內容推薦

每年一度的蘋果開發者盛會在不久前落幕了。今年的 WWDC 一如既往地精彩。我們將分幾期將一些有關 WWDC 2022 上推出的新內容、新技術介紹給大家。

整理編輯:遠恆之義Mimosa

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 摸魚週報 #57 | 週報改版,WWDC22 講座集錦

iOS 摸魚週報 #56 | WWDC 進行時

iOS 摸魚週報 #55 | WWDC 碼上就位

iOS 摸魚週報 #54 | Apple 輔助功能持續創新