実際、単にリモート通知を使用するために.plistにUIBackgroundModesを追加する必要はありません。
私は相続人を少し分けていることを知っています(他の答えはほとんど素晴らしいです、そしておそらくiOS 11のように何かが新しいです)質問はバックグラウンド更新を必要とするプッシュ通知に言及し、そうではありません。
ここでの違いは、AppDelegateで通知を受け取る2つの異なるメソッドがあることです。
これは、UIBackgroundModesを使用する必要がありません。
optional func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
上記は、iOS 11で非推奨になったものに代わるものです。
optional func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable : Any])
そして、これにはバックグラウンドモード機能が必要です。
optional func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable : Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
ここで重要なのは、前者(および廃止されたもの)がアプリがフォアグラウンドにあるときにのみ実行されることです。後者は、アプリがフォアグラウンドまたはバックグラウンドにある場合に実行されます。この特定のナゲットの仕様を参照してください。
このメソッドを使用して、アプリの着信リモート通知を処理します。アプリがフォアグラウンドで実行されている場合にのみ呼び出されるapplication(_:didReceiveRemoteNotification :)メソッドとは異なり、アプリがフォアグラウンドまたはバックグラウンドで実行されている場合、システムはこのメソッドを呼び出します。
したがって、プッシュ通知が必要な場合は、バックグラウンドで実行する必要があるかどうかを決定します。両方が必要な場合にのみ、警告で提案されたメソッドを実装する必要があります。