1

我有一個應用程序接收遠程推送通知。 我已經以這種方式實現的didReceiveRemoteNotification遠程推送當應用程序在後臺快速通知3

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { 


     print("PUSH NOTIFICATION is coming") 

     let state: UIApplicationState = UIApplication.shared.applicationState 
     let inBackground = state == .background 
     let dizionario = userInfo["aps"]! as! NSDictionary 
     let alert = dizionario["alert"]! as! String 
     print(alert) 


     if(!inBackground){ 

       print("APP IN FOREGROUND") 
       //show alert view and the if user tap 'ok' show webview 

      } 
      else{ 

       print("APP IS BACKGROUND") 
       //SHOW WEBVIEW 

       } 
      } 

在這兩種情況下(當應用程序在前臺和後臺),我必須表明的WebView是添加像孩子根視圖(的TabBar控制器),但如果應用程序是在前臺那麼我必須在之前顯示一個警報視圖。 我的問題是,如果應用程序在前臺我沒有問題,但如果應用程序在後臺didReceiveRemoteNotification不會調用(我沒有看到打印「推送通知即將到來」),我不明白爲什麼。

你能幫我嗎?

N.B用於測試我使用APN測試儀(https://itunes.apple.com/it/app/apn-tester-free/id626590577?mt=12),用於發送推送通知

+0

您是否在應用程序的後臺模式功能中指定了「遠程通知」?此外,當您的應用在後臺時,您無法顯示網絡視圖或以其他方式強制您的應用到達前臺。 – Paulw11

+0

推送有兩種類型,一種是始終提供給用戶,另一種是在用戶看不到的情況下發送到應用程序。如果你的應用程序在後臺,你可以使用這種第二種類型的推送。然而,正如Paulw11所指出的,鑑於你爲什麼要使用它的解釋,這是毫無意義的,因爲你無法強制後臺應用程序進入前臺,即後臺應用程序無法顯示任何GUI(除了例外發布本地通知)。 – Gruntcakes

回答

0

didReceiveRemoteNotification旨在被使用時,應用程序是活性

當應用程序在背景或不活動時,可以通過按下遠程通知上的操作按鈕來激活它。在您的應用程序委託中實施userNotificationCenter(_:didReceive:withCompletionHandler:)

+0

這是新的iOS 10方法,但OP顯示的方法雖然在iOS 10上不推薦使用,但對於早期版本的iOS仍然需要,並且仍然可以在iOS 10上使用。 – Paulw11

相關問題