[英]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.