2012-01-30 4 views
2

내 앱에서 처음으로 푸시 알림 등록을하려면 didRegisterForRemoteNotificationsWithDeviceToken으로 전화를 걸어 기기 토큰을 저장하고 내 서버 목록을 기기 토큰으로 업데이트하십시오. 나중에 누군가가 iPhone 설정에서 푸시 알림 설정을 해제하면 내 앱에서이를 어떻게 확인할 수 있으므로 서버에서도 장치 토큰을 제거 할 수 있습니다. 나는 APNS가 피드백리스트를 제공한다는 것을 알고 있지만, 그것 이외에는 프로그래밍 방식으로 App에서 그것을 결정하는 방법이 있습니까? 어떤 도움을 주셔서 감사합니다!푸시 알림 상태를 프로그래밍 방식으로 결정하는 방법?

답변

7

저는이 방법으로 토큰을 관리하고 싶지 않다고 생각합니다.

귀하의 앱은 항상 Apple에 APN 토큰을 요청해야합니다. 그런 다음 토큰을 항상 자신의 서버에 보내야합니다 (토큰이있는 경우). 토큰 으로 변경 될 수 있으므로 항상 최신 토큰을 유지해야합니다.

피드백 서비스는 어떤 토큰이 유효하지 않게되었는지 (실제로는 사용자가 선택한 일정 간격으로 폴링) 알려줍니다. 이 시점에서 서버 측 데이터베이스에서 토큰을 제거합니다. 분명한 것은 Apple 피드백 서비스를 폴링 한 다음 서버 측 데이터베이스를 업데이트하는 서버 측 프로세스가 필요하다는 것입니다.

토큰을 사용하여 알림을 보내려고 시도 할 때까지 유효하지 않은 토큰에 대한 피드백을받지 못합니다. Apple은 귀하가 통지서를 보낼 때이를 통보 할 것이지만, Apple이 잘못된 토큰을 발견하면 메시지가 삭제되고 귀하의 의견에 토큰이 추가됩니다.

이제 앱에서 처음으로 앱에 대해 질문했지만 나중에 앱의 설정 앱을 통해 알림을 사용 중지 한 경우 앱 사용자가 푸시 알림을 수락하면 이에 대한 피드백이 제공되지 않습니다. 내가 알 수 있듯이, 그 장치로 보내는 모든 알림은 장치로 보내지지만 OS는 앱 및 알림에 대한 설정 응용 프로그램에서 사용자의 궁극적 인 선택을 존중하여이를 버립니다.

마지막으로 앱에서 호출 할 수있는 API가있어 기기에서 앱에 대해 어떤 종류의 알림을 사용하도록 설정할 수 있습니다. 여기에이 목적을 위해 작성한 방법이 있습니다. 필요에 따라 조정합니다

+(BOOL)acceptsPushNotifications 
{ 
    UIRemoteNotificationType mask = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 

    return (mask & UIRemoteNotificationTypeAlert) == UIRemoteNotificationTypeAlert; 
} 

하지만 난 당신이 응용 프로그램 데이터베이스에서 토큰을 삭제하도록 서버를 말해야 여부를 결정하기 위해이를 사용하지 않는 것이 좋습니다 것이다. 그것이 전체 APN 시스템이 작동하는 방법이 아닙니다 ... 저는 믿습니다.

관련 문제