13 的話
本期根據讀者回饋做了調整。之前幾期比較像是嚴肅的剪報資料,現在每期會有標題。每則連結會多一些我的評語,讓你更好判斷要不要點下去看。喜歡這樣的風格或有什麼建議,請回信讓我知道🙏
如果你有社群活動、寫了開源專案或技術文章,想要我幫忙轉貼的,都可以來信或填寫表單。也可以推薦別人的東西,只要你是真心的❤️
官方消息
HomePod 將於 8/23 在台灣發售
想買的人久等了,這次是官方新聞稿。
我個人超過一年的使用經驗來說,HomePod 的耳朵非常好,但腦子就是 Siri 那個樣子。
Beta 7 更新
暨前一週的 beta 6 之後,Apple 在 8/15 推出 iOS、tvOS、watchOS 的 beta 7。但是 macOS 與 Xcode 依然沒有更新。
Xcode 遲到造成的大麻煩:在 SwiftUI 使用 Combine 的 ObservableObject,app 在 beta 7 的裝置會打不開。目前的 workaround 是用 EnvironmentObject,或者只能用模擬器。
坦白說因為這原因我已經超過兩週沒有碰 SwiftUI 了。
Release Notes 連結如下:
小技巧:想知道每個版本改了什麼 API,可以參考
這個網站
。資料是分析 Objective-C header 自動產生的。
WWDC19 影片增加了日文與簡體中文字幕
英文字幕還是比較準確,不過至少多了一個選擇。
tvOS 現已支援 App Store 階段性發布
這個功能 iOS 已經有很久了,Mac App Store 在年初時也開通。現在終於輪到 tvOS。也許下一個就會是 watchOS 吧🤔
WebKit 保護追蹤政策
瀏覽器的防止追蹤功能為了保護使用者隱私。WebKit team 也參考了 Mozilla 的政策。
Covert tracking includes covert stateful tracking, fingerprinting, and any other methods that are similarly hidden from user visibility and control.
…
WebKit will do its best to prevent all covert tracking, and all cross-site tracking (even when it’s not covert). These goals apply to all types of tracking listed above, as well as tracking techniques currently unknown to us.
這當然會對於現行的網頁機制造成影響,網頁上也列出哪些功能沒有想要防止,但可能會受到影響。比如說廣告成效分析、單一網站的行為追蹤、SSO。
Apple 可能會在 9/10 開秋季發表會
我通常不轉貼謠言,不過截圖上行事曆 app 的準確度頗高。這也表示我們離 GM 版不遠了。
如果想看 iOS 歷史上 beta 版存在的時間,可以參考這個網站。
社群活動
iOS @ Taipei
本週二的題目是:「擅變的 SOLID - 面對變化的軟體設計原則」
郭亭巖:SOLID 是五個關於面對變化的軟體設計原則,讓我們在改變原有程式碼或邏輯時,不會影響到其他部分和原有功能的實現,讓處理變化這件事變得容易。
當天會以串接開放 API 為例,簡述 SOLID 的 SRP 和 OCP 並實際使用在 Demo 上並做 Before / After 比較。
iPlayground
台灣目前唯一 iOS 開發者辦給開發者的技術研討會。9/21-22 在台大博雅館。
主辦單位已經完成審稿,從今天(週一)開始會馬拉松式地公布議程在 Twitter 與 Facebook。購票請到 KKTIX。
技術資源
Google Cast SDK for iOS 13
先前,有整合 Google Cast 的 apps 在 iOS 13 beta 版無法使用,主要與權限有關。現在 Google 推出了新版 SDK v4.4.3,而且有支援訪客模式與不支援的兩個版本。選擇不支援訪客模式的版本,就不會用到藍牙,app 也不會跳出權限對話框。
Dropbox 放棄用 C++ 跨平台開發
本週的熱門話題。有多少次我們看到「行動應用跨平台開發,從入門到放棄」的故事?這次是 Dropbox 放棄自 2013 年以來共用 C++ 程式碼在 iOS 與 Android 專案的方式,改用 Swift 與 Kotlin。
我讀到的第一個反應是「千金難買早知道」(因為我是「預設 native 派」)。不過細細讀完再想想, 2013 年距今很久了,那時他們的團隊小,也沒有 Swift 跟 Kotlin,共用程式碼可能是最佳的方式。不像現在有許多方案可以選擇。
Dropbox 表示共用 C++ 程式碼的 overhead(間接成本,這個詞在程式語言上我不確定怎麼翻譯更好)大致分成幾個類型:
必須自訂 libraries,而不能借助原生語言的解決方案
使用自訂的開發環境
在不同平台仍要整合原生的部分(這個是所有跨平台方案的痛)
人才訓練與招募的困難。這點可想而知
當然這篇文章引起了不少討論,許多人的看法是,「就算要跨平台也不該選擇 C++」、「問題不在跨平台而是選錯了方式」。更多的討論是假設用 Xamarin 會怎麼樣。
好,自己讀原文吧,再寫下去要變成部落格了。
podcast
weak self podcast
weak self 是兩位 iOS 開發圈的朋友跟我一起製作的 podcast。出於興趣我們會聊聊開發技術、社群活動、團隊經驗,也會邀請業界的朋友一起來討論這些話題。聽眾非常支持,使得我們已經是 Apple Podcasts 科技類排行榜上的常客(也因為同類型的中文節目太少了😂)。以下是本週的節目內容:
4: 或許我可以把 title 改成資深文件工程師
啊哈,又是一集採訪節目。這次我們找了資深工程師 Nelson 來跟我們聊聊帶團隊的經驗。在開發團隊中,若有建立共用文件的習慣,會逐漸累積成事半功倍的效果,Nelson 他們是怎麼做到累積出 2、30 篇文件,後來又達成什麼效果呢?跟著 weak self 一探究竟吧。
遺珠之憾
這些不是上週的新聞,但總覺得錯過有點可惜。
NSObject 還不支援 ObservableObject (7/30)
之前我忘了貼 zonble 的推文,相信還會有人踩坑。
App Store Submissions Update (7/31)
iOS 13 beta 已經可以上傳 App Store 做 TestFlight 了。
You can now submit apps built with Xcode 11 beta 5 using the SDK for iOS 13 beta 5, tvOS 13 beta 5, and watchOS 6 beta 5 for internal and external testing.
推特上的大小事
這個區塊會放一些台灣的 iOS 開發者在 Twitter 上的討論,或者有些新知的發表不會寫文章而直接發推。討論串我沒有辦法全部都貼,所以有興趣請自己點開看。
上一集的 weak self podcast 提到早期的 CocoaHeads Taipei,於是引起了一陣推特考古學。
cocoapods-binary 是一個在 pod install 時就把 pods 編譯成 binary 的 CocoaPods 套件,可以節省之後編譯的時間,有點類似 CocoaPods + Carthage 的效果。
如果有人要支援 iPadOS 13 的多重視窗,可以讓我知道一下嗎?
常有工程師朋友跟我說不知道怎麼做 side project。我覺得這個推文說得很好。
研討會講者的心情進度。我現在正介於 I 跟 E 之間⋯
來看一下開發者們秋季就採用 SwiftUI 或 Catalyst 的意向。我自己的話,公司的 app 肯定不會用這兩個新技術來做正式開發(不過我們內部實驗轉成 Mac app 已經成功,可作為輔助計畫)。Side projects 的話就來做呀,等我弄出來再跟大家分享。
常聽 tvOS 一哥在講這平台特有的 bugs。有在開發 tvOS app 的朋友歡迎跟我們交流。
系統在跟你鬧著玩哪🤦♂️
會心一笑
沒有人規定笑話只能放一個,所以我就盡量放~~~
Xcode 使用者很能體會。
「去讀文件!」「文件:」
現在的面試者都這麼性格嗎🤔
上上週這位同學的手機被媽媽收走之後,先是用 3DS 上推特求救。上週進化到用冰箱了⋯
為 Tumblr 哭哭。
這個推特帳號的 meme 真的很不錯,這已經是我第二次收錄了。
本週推特上出現的虛擬偶像團體《Syntax Sugar》。如果看完覺得想成立團體請跟我講一聲,我可以幫忙宣傳(誤)
泡麵有版號是怎樣?整排留言都好笑。我個人比較在意的是沒遵守語意化版本啦。
最後的最後,工程師幹話更新啦!
以上就是本期的內容。歡迎轉寄或推薦給同事或開發者朋友。有問題或回饋請直接回覆電子報即可。