[ios] 원격 푸시 알림은 Info.plist에 UIBackgroundModes를 추가해야합니까?

원격 푸시 알림을 통합했지만 다음 경고가 표시됩니다.

didReceiveRemoteNotification:fetchCompletionHandler:],하지만 여전히 에서 remote-notification지원되는 UIBackgroundMode의 목록에 ” ”
을 추가해야 합니다 Info.plist.

내 Xcode 버전은 8.3.1입니다. 나는 이것을에 정말로 추가하고 싶다 Info.plist. 나는 몇 가지 튜토리얼을 따랐지만 이것도 언급하지 않았습니다. 나는 정말로 무엇을해야합니까?



답변

예, 백그라운드 업데이트에 원격 알림을 사용하려면 백그라운드 모드 / 원격 알림을 활성화해야합니다.

이를 수행하는 가장 쉬운 방법은 프로젝트 설정을 사용하는 것입니다. 대상-> 앱-> 기능-> 백그라운드 모드로 이동하여 원격 알림을 확인 합니다. 그러면 필요한 설정이 자동으로 활성화됩니다.

프로젝트 설정의 배경 모드 드롭 다운 목록


답변

필요한 info.plist (다른 이름으로 열기-> 소스 코드)를 편집하고 다음을 붙여 넣을 수도 있습니다.

<dict>
<key>UIBackgroundModes</key>
    <array>
        <string>remote-notification</string>
    </array>


답변

실제로 원격 알림을 사용하기 위해 .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 🙂 메소드와 달리, 시스템은 앱이 포 그라운드 또는 백그라운드에서 실행될 때이 메소드를 호출합니다.

따라서 푸시 알림이 필요한 경우 백그라운드에서 실행해야하는지 여부를 결정합니다. 두 가지 모두 필요한 경우에만 경고에서 제안한 방법을 구현해야합니다.


답변

기능에서 원격 알림 배경 모드를 설정 한 후에도 나에게 일어났습니다. 문제는 프로덕션 용, qa 용, 스테이징 용으로 3 개의 타겟이 있다는 것입니다. 세 대상 모두에 원격 알림을 설정해야했고 경고가 수정되었습니다.


답변