2017-08-11 73 views
1

我有4個場景iOS版 - 閱讀,一旦收到推送通知

當應用程序沒有啓動

給出的應用程序不啓動或殺死
當推送通知接收
並開通該應用程序不需要點擊通知
然後應用程序應該捕獲通知。

當應用程序在前臺

鑑於前景
運行時,推送通知接收
然後應用程序應該捕獲通知的應用程序運行。

當應用程序在後臺

由於應用程序在後臺
運行時,推送通知接收
,打開應用程序,而不攻通知
然後應用程序應該捕獲通知運行。

當應用程序未啓動,清除通知

給出的應用程序沒有啓動或殺死
當推送通知接收
而用戶清除通知
,打開應用程序
然後應用程序應該捕獲通知。

第3方案正常工作與下面的代碼

的最後一個場景是沒有工作當應用程序未啓動,清除通知

的AppDelegate

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    if #available(iOS 10.0, *) { 
     UNUserNotificationCenter.current().getDeliveredNotifications(completionHandler: { requests in 
      for request in requests { 
       self.setNotification(userInfo: request.request.content.userInfo as NSDictionary) 
      } 
     }) 
    } 
    return true 
} 

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) { 
    setNotification(userInfo: userInfo as NSDictionary) 
} 

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { 
    setNotification(userInfo: userInfo as NSDictionary) 
} 
+1

**你不能** 想象一下,你有5個通知在屏幕上。你解僱所有5人,然後你啓動應用程序。 應用程序應該如何知道應該考慮哪個通知? – Honey

+0

謝謝@Paras Gorasiya – Vignesh

+0

@Honey這是我的問題?有什麼方法可以在沒有restAPI的情況下獲得這些通知。 – Vignesh

回答

1

根據您的查詢

當應用程序未啓動,清除通知

由於應用程序沒有啓動或殺害,當後通知 接收和用戶清除了通知,打開應用程序,然後在 應用程序應該捕獲通知。

,這是不可能的普通推送通知,除非用戶與通知交互。您可能想嘗試無聲通知,這些未在用戶界面中顯示,但控件到達應用程序,您可以使用代碼中的數據/有效內容。

當用戶從欄中清除通知時,無法獲取該信息。 您也可以嘗試添加API中推送中發送的相同信息,並在用戶打開該應用程序後調用該信息。

This link涉及所有涉及的細節。根據你的實現,你可以嘗試兩者的結合。

+1

謝謝@Umar。我正在使用無聲通知。唯一關心的是通知被清除。如果沒有辦法必須從API獲取。 – Vignesh

+0

@Vignesh如果您使用API​​以及獲取數據,會發生什麼是無論用戶何時清除通知,只要應用程序打開,用戶就能夠通過API調用來查看最新數據......接受答案是否有幫助 –