2016-10-06 16 views
4

IOS 9でリモートプッシュ通知を受信するときにペイロードからデータをキャプチャする必要がありますfuncを使用してこれを行いました: didReceiveRemoteNotification IOS 10私はこの2つの機能を実装しました。私のアプリがバックグラウンドまたは閉鎖中にリモートプッシュ通知が到着したときにデータを取得

@available(iOS 10.0, *) 
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) 
{ 
print("\(notification.request.content.userInfo)") 

completionHandler([.alert, .badge, .sound]) 
} 

@available(iOS 10.0, *) 
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) 
{ 
print("User Info = ",response.notification.request.content.userInfo) 

completionHandler() 
} 

ユーザーが、私は私のアプリがバックグラウンドで、あるいは閉じた状態でプッシュ通知が届いたときにデータを取り込む必要があるプッシュ

に触れるときに、第2のfuctionにのみ実行されます。

よろしくお願いいたします。 iOS10でdidReceiveRemoteNotification機能付き 挨拶

答えて

0

試し:プッシュ通知を受信すると、アプリケーションが実行されていない

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) { 

        print(userInfo) 

      } 
+0

こんにちは、私はそれをしました、そして、私はバックグラウンドsendindでプッシュ通知からデータをキャプチャすることができました。しかし、アプリケーションが閉じられると、決して実行されないようです。 –

+0

こんにちは@Christian Gonzalezユーザーが自分でアプリを終了したり終了したりすると、このようなことはできません。 –

1

、あなたはdidFinishLaunchingWithOptionsであなたの通知ロジックを実装する必要があります。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Called when a notification is tapped and the app wasn't running, not in foreground neither in background. 
    if let userInfo = launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] as? [String: AnyObject]{ 
     // your logic here! 
    } 
} 
1
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { 

    // Capture payload here something like: 
    let appState = userInfo["appState"] as? String 
    print(appState!) 

    // Do something for every state 
    if (application.applicationState == UIApplicationState.active){ 
     print("Active") 

    }else if (application.applicationState == UIApplicationState.background){ 
     print("Background") 


    }else if (application.applicationState == UIApplicationState.inactive){ 
     print("Inactive") 

    } 

    completionHandler(.noData) 

} 
関連する問題