2

我來自Android開發背景。在Android中,您發送推送通知,然後使用服務處理剩餘的通知(創建實際系統通知,修改應用內容等)。iOS - 在接收到推送通知時更改視圖的內容

據我所知,在發送iOS推送通知時,它會根據您的消息有效負載自動在通知中心爲您創建系統通知。在這裏和谷歌搜索後,我想我必須使用application:didReceiveRemoteNotification事件添加/刪除視圖的內容。如何訪問推送通知的內容,以便我可以將其放入應用程序(即使用戶已在通知中心解除通知,我也想在應用程序中顯示消息)?稍後會有另一條消息(通常是同一天)從應用程序中刪除消息。

我知道應用程序:didReceiveRemoteNotification方法不會在應用程序關閉時調用,所以我將不得不使用其他事件(如didfinishlaunching)來獲取消息。但是,如何訪問推送通知的消息本身?

+0

請參閱「處理本地和刪除通知」https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103 -SW4 – Jeff

+0

和「The Notification Payload」https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html#//apple_ref/doc/uid/TP40008194-CH100-SW1 – Jeff

+0

謝謝傑夫。我認爲我無法通過傳遞給應用程序的userInfo NSDictionary對象來獲取推送通知的內容:didReceiveRemoteNotification – yash

回答

1

我想在應用程序中顯示的消息,即使用戶已經駁回通知中心

這不能完成的通知。只有當用戶從通知中心打開應用程序時,iOS纔會將通知數據傳遞給您的應用程序。如果用戶駁回通知並稍後啓動應用程序,則應用程序獲取此數據的唯一方法是從您的服務器中檢索。

至於從通知中心啓動應用程序時獲取通知數據,請參閱this question

+0

如果將數據保存到設備上的文件並在打開時檢索它,該怎麼辦?我想它會起作用?我只是不想一直在檢查服務器以最小化帶寬使用。 – yash

+0

或將其保存到sql數據庫? – yash

+0

@yash從iOS6開始,如果您拒絕通知,則無法獲取通知數據。您編寫的任何代碼(用於保存數據)只會在用戶打開應用程序後執行 - 無論是從通知中心還是主屏幕中的啓動圖標。只有在前一種情況下,通知數據纔會傳遞給您的代碼。 – Eran