公車何時來
又完成了一個上架app,台灣公車的app其實就是那幾個,我覺得弄的最完整應該就是Bus+,整體的設計給人非常的舒服,也提供一些其他公車app沒有的功能,例如無需解鎖,就可查到站時間的即時查。其實我這個app就是用Siri也做到類似這樣的功能。沒錯,又是Siri,跟上個app是相類似的概念。因為,用的技術類似,所以開發和審查的速度也比上次順利很多。

這個APP大致的組成跟上次差不多,所以相同的部分就不提了(In-App Purchase & Google-Mobile-Ads-SDK, Siri Shortcut),來講講這次比較有趣的部分。
API串接
撰寫串接API的service算是寫app的基本功,各家門派也都有自己一套串接的方式,雖然是基本功,但隨著串接API越來越多,Service也會越來越龐大,越來越多重複的程式碼。
自己也看過網路上不少各門派的撰寫方式,從早期的OC到現在Swift,分享兩篇自己看到,也嘗試實作過的串接方式,我自己是覺得還蠻不錯的。
Write a Networking Layer in Swift 4 using Alamofire 5 and Codable Part 1: API Router
這一篇也是這個app串接service的主要架構。
最主要的特色就是利用Swift非常強而有力的Enum來實做API Router,這個router在架構中扮演相當重要的角色。
利用router來擴充service的能力,而擴充的方式是利用enum。
enum讓整個router寫法變得非常的清楚。
最後再透過Alamofire定義好的protocol-URLRequestConvertible產生畫龍點睛之妙,將router內的所有變數串接起來成一個url request。
另外Alamofire也利用Swift5中新增的Result - 透過Swtich case語法來處理API的Response, 在API使用上加優美。
Writing a Scalable API Client in Swift 5
這門派的寫法,定義了一個很清楚protocol - APIRequest, APIResponse的protocol。不同的API都實作APIRequest,讓request跟service脫鉤。Service只是單純負責send的動作。
也用到Rsult來處理response。
用串接多知API, 避免產生的callback hell。
其實比較有名應該是這個PromiseKit, 這個版本用法比較簡單但功能也相對單純。
在iOS13之後, apple就會提供類似這樣功能的 native framewrok可以使用 - Combine, 目前還在beta版本。
送審過程
這次送審過程到沒遇到什麼太大問題,畢竟跟上次是同類型的app, 不過還是被打槍了一次。原因是我的IAP裡面沒有做restore button,上次的app,我是有放這個,但我覺得好像沒必須,反正當你購買過,你再按購買按鈕,IAP就會跳提示視窗說“此app已購買過了”,想說都有這個提示了,就把restore button移掉。
結果就是被打槍,IAP一定要有restore的功能。
補上後,卻被回我說功能不正常,又打槍我,但我測試是正常的,所以我把我詳細的測試步驟提供給apple。然後就過關了 @@
心得: apple測試人員真知道restore button是怎麼樣使用嗎?
Last updated
Was this helpful?