簡體   English   中英

如何在iOS中處理未讀推送通知?

[英]How can I handle unread push notifications in iOS?

我有一個iOS 5.1應用程序,它注冊到APNS服務以接收通知。 注冊成功,我正確收到通知。 當我嘗試處理通知時出現問題。

應用程序運行后,AppDelegate中的方法didReceiveRemoteNotification被正確調用,因此通知按預期處理。 但是,這僅在應用程序在前台運行時才會發生。

但是,當應用程序在后台運行或只是停止時,不會調用該方法。 我已經讀過你應該在方法didFinishLaunchingWithOptions方法中添加一些行來從userInfo字典中獲取通知並處理它。 這很好用,但只有在通過Notification Center點擊通知打開應用程序時才可以。 這意味着如果您通過單擊其徽章打開應用程序,或者只是通過更改上下文(如果您在后台運行它),該應用程序永遠不會意識到已收到通知。此外,如果收到多個通知,我們可以只需點擊通知中心即可立即處理其中一個,這很痛苦:-)

有沒有辦法在通知中心閱讀待處理的通知? 我知道有一種方法可以使用cancelAllLocalNotifications方法來清除它們,但我還沒有找到一種只讀它們的方法。 我真的需要處理所有這些問題。 我想到與第三方通知服務器實現通信協議,以便在應用程序到達前台時再次檢索信息,但由於信息已經在操作系統中,如果不可能以某種方式訪問​​它,我會覺得很奇怪。

那么,有人知道這樣做的方法嗎? 提前致謝。

當推送通知到達且用戶點擊“取消”時,您的應用無法再次閱讀該推送通知。 您必須實現單獨的功能(很可能在服務器端)以獲取發送到此設備的通知列表。

例如,如果您的應用中提供了聊天功能,並且您通過推送通知發送聊天消息,那么您還應該在服務器上保留聊天消息。 如果用戶在任何推送通知上單擊“取消”,則該聊天消息將不會顯示在iOS設備上。 在這種情況下,當應用程序稍后進入前台時,您會調用服務器並獲取所有過去的聊天消息(通過推送通知發送)。

好的,那么一個可能的解決方案是使用另一個帶有'read'標志和messageID字段的消息的數據庫表? 默認情況下,讀取標志為NO,然后當應用程序成功讀取並顯示時,它會將標志更新為YES?

並且只需要256個字節,需要什么樣的ID字段長度?

編輯,

執行此計划並成功運作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM