現代移動應用程序可以接收來自應用程序外部的真正異步事件,例如推送通知。處理這些事件有點麻煩,因爲事件到達時,應用程序可能無法立即處理。作爲一個例子,如果已經顯示一些彈出窗口或者如果UI正好在其他東西的中間,則顯示彈出警報以響應推送通知可能是不可能的。你如何處理這些事件?在UI中處理異步事件
具體而言,用於處理異步事件的代碼不能簡單地放置在普通的UIViewController
中,可以嗎?屏幕上總是有不同的控制器,具體取決於用戶在UI中的位置。雖然我可以在每個視圖控制器中重複代碼(或將其重構爲共同的祖先),但感覺像是一種黑客。
如果我處理了某些後臺服務對象中的事件(感覺不錯),我仍然需要聯繫「當前主動控制器」並中繼事件信息。但是在iOS中並沒有像「當前主動控制器」那樣的東西,即使存在,控制器仍然必須指出它是否可以自由顯示事件。再一次,它看起來有很多錯綜複雜的角落案件需要處理。
總之,有沒有一種模式或庫來處理這樣的事件,而不是邏輯傳播到整個應用程序?
我知道這是一種主觀的,但我認爲這是一個簡單而有建設性的答案。