簡體   English   中英

我的應用程序激活后如何處理推送通知?

[英]How to handle push notification when my app become active?

我是iOS的新手,正在研究推送通知。 我已經通過parse.com完成此操作,並且工作正常。

我的問題是:

我有兩個UIViewController 在第一個ViewController一個Web服務在viewDidLoad方法中調用,並從服務器獲取學生數據並顯示在tableview上。

然后,我選擇detailviewcontroller中的任何學生,以便它將在第二個detailviewcontroller上導航,在該detailviewcontroller上將顯示學生詳細信息。

現在,我按下主頁按鈕,我的應用程序進入后台模式,並且推送通知到達。

現在,我點擊應用程序圖標而不是通知視圖來顯示更新。

有人可以幫助我如何處理這種情況,因為當用戶點擊應用程序圖標時,它將直接在學生詳細信息視圖上導航。 如何處理此推送通知並更新學生表視圖?

好的,可以在應用打開時嘗試以下方法:

-(void)applicationDidBecomeActive:(UIApplication *)application
{
    int i=[UIApplication sharedApplication].applicationIconBadgeNumber;
    //if i!=0 you got some notifications - fetch data from server and refresh array with data
}

content-available標志是您所需要的。 將其附加到您的有效負載中,處理application:didReceiveRemoteNotification:fetchCompletionHandler:您將能夠捕獲所有推送通知。 請查看對同一問題的答案以獲取更多詳細信息。

PS無法強制關閉您的應用程序。 如果您的應用正在運行-您可以處理所有通知

雖然我喜歡讀取證卡號碼的解決方法,但我會盡量明確地說明問題,如果您無法實現自上次請求以來將帶來增量更改的同步API調用,則可以使用推送通知來解決問題。

  1. 當您的應用僅在后台運行時,您的AppDelegate將通過- application:didReceiveRemoteNotification: AppDelegate進行調用- application:didReceiveRemoteNotification:
  2. 如果您的應用未運行,則可以發送觸發通知以觸發您的應用進行處理,您將獲得的委托是- application:didReceiveRemoteNotification:fetchCompletionHandler:

在這兩種情況下,如果尚未運行,您都需要調整JSON有效負載以在后台啟動應用程序。

在兩種情況下,您都希望保留“未處理”通知。 如果您只想保留標識符或任何其他信息小塊,我可能會看看NSUserDefaults

如果數據量很大,或者您想從網絡中獲取對象,則數據庫或CoreData(甚至Parse.com本地存儲解決方案)應該是更合適的方法。

重要的是,切記,一旦應用真正啟動,就清除本地隊列中創建的未處理通知。

希望能幫助到你

更新 @ Sega-Zero提到了應該包含在有效負載中的JSON字段的名稱

暫無
暫無

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

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