2017-10-13 9 views
1

私は自分のアプリにAPNSを接続しています。スウィフトプッシュ通知は、デバッグモードの動作を委任します

問題は、システム代理人didReceiveRemoteNotificationの動作が異なります。デバッガがアプリケーションにアタッチされている場合にのみ正常に動作します。そうでない場合は、アプリケーションがバックグラウンド状態のときに呼び出されません。たとえば、テスト電話がUSBケーブルを介してMacに接続され、アプリケーションがデバッグされている場合、デリゲートが呼び出されます。ケーブル切断直後の代行者はもはや呼び出されません。

アプリ状態(デバッグされているかどうか)がdidReceiveRemoteNotificationの動作にどのように影響するのですか? (IOS 10と11の両方)

デリゲートコールを検出するには、バックエンドリクエストを行い、コール検出に問題はないと確信しています。

+0

を実装扱うクラスを作りますか? 'アプリケーション(_:didReceiveRemoteNotification:)'または 'アプリケーション(_:didReceiveRemoteNotification:fetchCompletionHandler:)'? – McNight

+0

私はそれらの両方を実装し、両方からの呼び出しを検出しようとしています。どちらもうまくいきません。 – Seaquel

答えて

0

私は同じ問題を抱えており、解決策を探すのに多くの時間を費やしました。私はworkaround mentioned in the Apple forumsを見つけました。

あなたはプッシュUNUserNotificationCenter

if #available(iOS 10.0, *) { 
    UNUserNotificationCenter.current().delegate = self 
} 

のデリゲートを通知と、あなたはどのような方法を実装したwillPresent notification: UNNotification方法

@available(iOS 10.0, *) 
extension APNSService: UNUserNotificationCenterDelegate { 
    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { 
     Log.debug?.message("Received push in foreground through UserNotificationCenter, calling Inbox.incrementalSync") 
     ...   
     completionHandler([]) 
    } 
}