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


104

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

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

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

답변:


245

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

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

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


3
이미 해당 필드를 확인했지만 여전히 동일한 오류가 발생합니다.
Anuj

아누 즈는 내 대답은 아래를 참조
여호수아 Cleetus

1
이 답변에 동의하지 않습니다. 백그라운드 업데이트를 수행하기 위해 원격 알림을 사용하는 경우 백그라운드 모드-> 원격 알림 만 활성화해야합니다. 여기에 문서를 참조하십시오 배경 업데이트 알림 구성
jzeferino

1
@jzeferino 통지 해 주셔서 감사합니다. 제 답변에 대한 설명을 추가했습니다. 원래 질문은 application(_:didReceiveRemoteNotification:fetchCompletionHandler:)데이터 가져 오기를 처리하는 데 사용되는 함수 에 관한 것이 었습니다 .
Tamás Sengel 19-07-24

이것은 훌륭하지만 백그라운드 업데이트 기능이 필요한지 여부에 대한 질문에 대답합니다. 푸시 알림을 위해 단순히 백그라운드 모드 기능을 설정해야하는지 여부에 대한 답변을 게시했습니다 (스포일러, 필요 없음).
mobob

30

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

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

7
배경 모드에서 원격 알림을 검사 할 때 그것은 자동으로 엑스 코드가 추가됩니다
Vinoth 비노을

1
나에게 적합하지 않음 : 버전 11.4.1 (11E503a)
paiego

4

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

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


3

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.