푸시 알림 수신 관련 문제

푸시 알림 등록

푸시 알림을 수신하려면 응용 프로그램이 먼저 Apple 푸시 알림 서비스 (APN 또는 "푸시 서비스")에 등록해야합니다. 등록은 4 단계로 이루어집니다.


iOS에서 응용 프로그램은 UIApplication의 registerUserNotificationSettings : 메서드를 호출하여 밀어 넣기 알림을 수신 할 수있는 권한을 사용자에게 요청합니다.

응용 프로그램은 UIApplication (iOS)의 registerForRemoteNotifications : 메소드 또는 NSApplication (OS X)의 registerForRemoteNotificationTypes : 메소드를 호출합니다.

응용 프로그램은 응용 프로그램을 구현합니다. didRegisterForRemoteNotificationsWithDeviceToken : 푸시 서비스에서 생성 된 고유 한 장치 토큰을 수신하는 UIApplicationDelegate (iOS) 또는 NSApplicationDelegate (OS X) 메소드입니다.

응용 프로그램은 응용 프로그램을 구현합니다. didFailToRegisterForRemoteNotificationsWithError : 등록이 실패한 경우 오류를 수신하는 UIApplicationDelegate (iOS) 또는 NSApplicationDelegate (OS X) 메소드입니다.

응용 프로그램은 장치 토큰을 비 객체 이진 값으로 공급자에게 전달합니다. 공급자는 동적 콘텐츠를 응용 프로그램에 제공하는 서버입니다.


푸시 알림을 등록하는 것은 간단하지만 중요한 몇 가지 사항을 알고 있어야합니다.


Delegate 콜백 없음

첫 번째 푸시 기능이 설치된 앱이 설치되면 iOS 또는 OS X은 시스템의 모든 푸시 기능이있는 앱에서 공유 할 푸시 서비스에 대한 지속적인 네트워크 연결을 설정하려고 시도합니다. 대리자 콜백 응용 프로그램 : didRegisterForRemoteNotificationsWithDeviceToken도 application : didFailToRegisterForRemoteNotificationsWithError :도 호출되지 않으면이 연결이 아직 설정되지 않았 음을 의미합니다.


이것은 반드시 오류 조건은 아닙니다. 시스템이 모든 셀 타워 또는 Wi-Fi 액세스 포인트의 범위를 벗어나거나 비행기 모드에있을 수 있기 때문에 시스템이 인터넷에 연결되어 있지 않을 수 있습니다. 이것을 오류로 처리하는 대신 푸시 알림에 의존하는 기능 만 사용 중지하여 앱을 정상적으로 계속 사용해야합니다.


네트워크 가용성은 자주 바뀔 수 있음을 명심하십시오. 푸시 서비스에 대한 지속적인 연결이 성공하면 앞서 언급 한 응용 프로그램 대리자 메서드 중 하나가 호출됩니다.


iOS에서 푸시 알림은 가능한 경우 휴대 기기의 데이터 네트워크를 사용합니다. 기기가 현재 웹 브라우징이나 이메일과 같은 다른 네트워크 활동에 Wi-Fi를 사용하고 있습니다. 그러나 셀룰러 데이터 서비스를 사용할 수없는 경우 푸시 서비스는 다시 Wi-Fi로 전환됩니다.


iOS 장치가 셀룰러 데이터 네트워크를 사용할 수 있으면 활성 셀룰러 데이터 계획이 있는지 확인하십시오. 설정에서 Wi-Fi를 끄고 Safari로 웹을 탐색 할 수 있는지 확인하십시오. 반면 푸시 서비스가 Wi-Fi를 사용하는 경우 장치 또는 컴퓨터와 인터넷 사이의 방화벽은 포트 5223과 TCP 트래픽을 허용해야합니다.


참고 : 각 환경에 대한 푸시 서비스에 대한 별도의 영구 연결이 있습니다. 운영 체제는 개발 빌드를 위해 샌드 박스 환경에 영구 연결을 설정하고 임시 및 배포 빌드는 프로덕션 환경에 연결합니다.


오류 대표단 콜백

푸시 기능이있는 응용 프로그램을 처음 실행하면이 응용 프로그램에 대한 푸시 알림을 수신할지 묻는 메시지가 표시됩니다. 앱이 푸시 알림을 수신하는 옵션을 제공하지 않는 경우 iOS의 aps- 환경 또는 OS X의 com.apple.developer.aps-environment 코드 서명 자격이 없음을 알 수 있습니다. Xcode는 앱 구축시 사용 된 프로비저닝 프로파일에서이 권한을 얻으며 원격 알림을 수신하기 위해 앱이 연결할 푸시 환경을 제어합니다.


iOS 앱이 기기에서 실행 중이거나 앱이 Mac 앱인 경우 오류 메소드 application : didFailToRegisterForRemoteNotificationsWithError : 푸시 서비스에 액세스하기위한 코드 서명 자격이 유효하지 않은 경우 호출됩니다. 애플리케이션에서이 메소드를 구현하지 않았다면 런타임에 aps-environment (iOS) 또는 com.apple.developer.aps-environment (OS X) 권한이 있는지 확인하는 방법으로 수행해야합니다.


Xcode를 사용하여 응용 프로그램을 제출할 때 Xcode는 배포 코드 서명 ID 및 관련 프로비저닝 프로파일을 사용하여 응용 프로그램을 다시 서명합니다. 따라서 제출 된 앱의 서명과 내용은 Xcode 보관소의 내용과 다를 수 있습니다.


앱 스토어에 제출되는 앱의 서명을 확인하려면 다음 단계를 따르세요.


Xcode Organizer에서는 App Store에 업로드 ... 대신 iOS 또는 Mac App Store 배포를 위해 저장 ... 내보내기를 수행합니다. 그러면 앱 스토어에 제출 될 앱의 로컬 복사본이 생성됩니다.

개발 팀을 선택하라는 메시지가 표시되면 App Store에 업로드 할 팀을 선택하십시오.

요약 시트가 나타나면 바이너리 및 인 타이틀먼트 아래에서 펼침 삼각형을 열어 인 타이틀먼트를 확인하십시오.

aps-environment (iOS) 또는 com.appl이 있는지 확인하십시오.


Xcode를 사용하여 응용 프로그램을 제출할 때 Xcode는 배포 코드 서명 ID 및 관련 프로비저닝 프로파일을 사용하여 응용 프로그램을 다시 서명합니다. 따라서 제출 된 앱의 서명과 내용은 Xcode 보관소의 내용과 다를 수 있습니다.


앱 스토어에 제출되는 앱의 서명을 확인하려면 다음 단계를 따르세요.