為更好的處理遠程推送提供一種可能:SGPush

jopen 10年前發布 | 12K 次閱讀 SGPush iOS開發 移動開發

SGPush

為更好的處理遠程推送提供一種可能

介紹

SGPush 將處理遠程推送時所需的頭文件引用、邏輯代碼封裝到 SGPushHandler 的子類中,當點擊遠程推送消息打開應用或應用開啟狀態下接收到遠程推送消息時自動執行相應的處理邏輯。

結構

描述
SGPush 核心類,管理注冊的SGPushHandler子類,接管系統接收到的遠程推送消息
SGPushHandler 推送數據以及相應處理邏輯的封裝類,請根據具體業務需求創建不同的子類并在executeFromViewController: 方法中實現推送處理邏輯,該類本身不可直接使用。
UIViewController+SGPush 提供canHandleRemotePush:方法,不同的視圖控制器可根據需求選擇是否處理推送消息

使用

1. 創建 SGPushHandler 子類

每一個子類實現一種遠程推送類型的處理邏輯,在子類中重載 executeFromViewController: 方法實現推送處理邏輯。

這里我們假定實現了 MessagePushHandler 子類來處理用戶的消息提醒,DefaultPushHandler 子類來為所有其他類型的推送提供默認處理。

2. 將子類注冊到 SGPush 中

想要實現的子類發揮作用需要將它注冊到 SGPush 中并與接收到的推送字典 userInfo 中的特定字段和值做綁定。這樣當接收到的推送消息含有特定的字段或值時,SGPush 會調用執行相應的 SGPushHandler 子類處理邏輯。

application:didFinishLaunchingWithOptions: 方法中進行子類注冊:

[SGPush registerPushHandlerClass:[MessagePushHandler class] forKeyPath:@"aps.messageId"];
[SGPush registerPushHandlerClass:[DefaultPushHandler class] forKeyPath:@"aps"];

3. 接管系統接收到的遠程推送

application:didFinishLaunchingWithOptions: 中加入代碼:

[SGPush handleRemotePush:launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]]; 

application:didReceiveRemoteNotification: 中加入代碼:

[SGPush handleRemotePush:userInfo]; 

4. 測試

通過以上幾部,當服務器向設備發送的推送內容 {"aps":{"alert":"This is a test message.","messageId":100}} 時,SGPush 會創建 MessagePushHandler 對象并執行。若推送內容中沒有 messageId 字段時,SGPush 會創建 DefaultPushHandler 對象執行推送處理邏輯。

更多

通過 SGPush 還可以實現更多靈活的推送處理方式,請參考 Demo 中的注釋和 SGPush 源碼注釋。

項目主頁:http://www.baiduhome.net/lib/view/home/1414766822637

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!