실제로 원격 알림을 사용하기 위해 .plist에 UIBackgroundModes를 추가 할 필요가 없습니다.
나는 상속인을 조금 나누고 있다는 것을 알고 있지만 (다른 답변은 대부분 훌륭하고 아마도 iOS 11의 새로운 것임) 질문은 백그라운드 업데이트가 필요한 푸시 알림과 관련이 있으며 그렇지 않습니다.
여기서 차이점은 AppDelegate에서 알림을 수락하는 두 가지 다른 메서드가 있다는 것입니다.
이것은 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 :) 메소드와 달리, 시스템은 앱이 포 그라운드 또는 백그라운드에서 실행될 때이 메소드를 호출합니다.
따라서 푸시 알림이 필요한 경우 백그라운드에서 실행해야하는지 여부를 결정합니다. 두 가지 모두 필요한 경우에만 경고에서 제안한 방법을 구현해야합니다.