2016-11-14 19 views
2

我一直在研究包含信標功能的iOS框架(在Swift中)。除了我不知道如何處理我處於前景的場景以及我在短時間內遇到多個信標的情況之外,我做到了這一點。管理帶有信標的iOS框架的本地通知

如果我想didReceive委託方法在前臺顯示信標警報,並且如果我遇到很多信標它不會很好地工作(警報將顯示一個在另一個)。有什麼解決方案來排隊通知嗎?

另外我想知道,如果有一種方法可以讓我的框架內接收本地通知的所有邏輯? 我必須能夠支持的iOS 8.0,所以我不能使用的通知中心,該中心可從IOS的10.0

我可以創造一些類,它會像appdelegate(可能是一些類將實施內部框架UIApplicationDelegate ),是這樣的可能嗎?

我想盡可能多的代碼,因爲我可以在框架本身內部,以便它不會太雜亂的工作,以包括具有所有功能的框架。

回答

1

過了一段時間我想出了一個辦法來做到這一點。我是iOS的初學者,有幾個月的經驗,所以我不能說這個解決方案是最好的,但它對我有用。

我找到了一種方法來實現框架中的所有推送和本地通知相關的委託方法。基本上,如果主應用程序想要框架來處理通知而不必自己實現任何東西,那麼在運行時框架會動態地爲AppDelegate.swift類(或者稱爲AppDelegate類的任何類)實現某些UIApplicationDelegate方法。

我使用object_getClass(UIApplication.shared.delegate!)來獲取主類。

然後我使用func class_addMethod(_ cls:AnyClass!,_ name:Selector !, _ imp:IMP !, _ types:UnsafePointer!) - > Bool 實現從框架內推送和本地通知的委託方法所以現在歸結爲寫一兩條線來完全使用工作通知和信標定位服務的框架,而不必在框架之外編寫大量的代碼。

至於在前臺模式下處理通知,我通過將它們添加到隊列中來完成該工作,以便如果有多個通知來到,並且希望在前臺狀態中顯示,則只有一個將由UIAlertController顯示,其餘將爲在用戶對第一條通知進行了處理後,再次發送,但有一些小的延遲(我設置了發送日期是我認爲適合的一些值)。

這些只是我對我遇到的問題的想法,如果有人對這些解決方案表現出興趣,我會在需要時寫出更多細節。我也樂意接受任何批評。