2017-08-19 14 views
0

私はFCMを使用してプッシュ通知を送信していますが、私はAppDelegateで次のメソッドを使用して、通知とともに送信されたデータを受信して​​います。iOS Firebase通知(データ付き)

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




     if let firstMessage = userInfo["url"] as? String, let secondMessage = userInfo["category"] as? String { 
      print("message1: \(firstMessage)") 
      print("message2: \(secondMessage)") 

      let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
      let mainVC = mainStoryBoard.instantiateViewController(withIdentifier: "MainViewController") as! MainViewController 

      mainVC.url = firstMessage 
      mainVC.category = secondMessage 
      self.window?.rootViewController = mainVC 



     }else { 

      print("no data received!") 
     } 



     completionHandler(UIBackgroundFetchResult.newData) 
    } 

私は「didReceiveRemoteNotification」を理解したときに呼び出されていない、ときアプリフォアグラウンドまたはバックグラウンドでデータが正常に受信されていますが、アプリが(殺害)が終了したとき、その通知が受信されますが、データのありませんアプリは終了し、代わりにプッシュ通知で受信したデータを表示するために "didFinishLaunchingWithOptions"にコードを記述する必要があります。どのようにそうするのか? ありがとう

答えて

0

iOSのアプリが終了するとデータペイロードは受信できませんが、これはiOSの制限です。代わりに、通知とデータペイロードの両方をFCMとFCMに設定することができます。したがって、アプリが終了しても通知が表示され、通知をタップすると、アプリケーションがフォアグラウンドになったときと同じように、didInceiveRemoteNotification関数のデータペイロードをuserInfoとして受け取ることができます。

+0

こんにちは、あなたの答えをありがとう、私はすでにリモート通知からデータを取得するためにdidReceiveRemoteNotification関数を使用しました、データを受信した後、受信したURLを表示する特定のViewControllerにデータが送られます。しかし、アプリケーションが終了してもデータは受信されません。私がdidReceiveRemoteNotification関数を使用した私の質問のコードを確認してください。ありがとう –

+0

通知がタップされるとデータが受信されます。ファイヤーベースクラウドのメッセージペイロードに通知キーとデータキーの両方を持っています – drulabs

+0

ファイアベースファンクションを使用してFirebaseデータベースに値が追加されたときに通知をトリガーします。通知:{ \t \tタイトル: 'タイトル'、 \t \t体: '本体'、 \t \tバッジ: '1'、 \t \t音: 'デフォルト' \t \t \t \tデータ:{ \t \t \t \t \t \t URL: 'https://www.google.com'、 \t \t \tカテゴリ: '私のカテゴリ' \t \t} \t} \t }; –

関連する問題