나는 어떤 종류의 UIUserNotificationType
을 수신해야하는지에 관해서 iOS 8의 푸시 알림에 예상되는 동작을 얻고 있습니다. registerUserNotificationSettings : 및 registerForRemoteNotifications에서 예기치 않은 동작이 발생했습니다.
내가 실행 한 테스트
은 다음과 같다 :UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
UIApplication *sharedApplication = [UIApplication sharedApplication];
[sharedApplication registerUserNotificationSettings:mySettings];
[sharedApplication registerForRemoteNotifications];
I 예상 UIApplicationDelegate 통화를 얻고 나는 푸시 알림을 보낼 때 예상대로, 내가 경고를받을 수 있습니다. 여기까지 괜찮아.
그럼, 원격 알림의 등록을 취소 :
[[UIApplication sharedApplication] unregisterForRemoteNotifications];
그리고 위와 같은 코드를 실행하지만,이 경우에, 나는 다시 모든 예상 얻을 registerUserNotificationSettings:
UIApplication *sharedApplication = [UIApplication sharedApplication];
[sharedApplication registerForRemoteNotifications];
호출하지 않습니다 UIApplicationDelegate가 호출하지만 동일한 푸시 알림을 보낼 때 장치에 경고가 표시되고 올바르지 않다고 생각합니다. 앱의 원격 알림, 경고를 표시 사운드를 재생하거나 다른 사용자가 직면하고 작업을 수행하려는 경우, 당신은을 호출해야합니다
: 나는하여 documentation 말한대로 내가 어떤 경고, 사운드 또는 배지를하지한다고 생각합니다 registerUserNotificationSettings : 사용하려는 알림 유형을 요청하는 메소드입니다. 이 메서드를 호출하지 않으면 시스템은 모든 원격 알림을 앱에 자동으로 전달합니다.
UIApplication *sharedApplication = [UIApplication sharedApplication]; [sharedApplication registerForRemoteNotifications];
을 그리고 예상대로 그 경우에 나는 어떤 경고를하지 않았다 : 그 한 번 확인
, 나는 다른 장치에 바로 두 번째 조각을 실행했다.
정상적인 동작입니까? 등록을 취소하면 다음 등록 (이 경우 환경 설정 없음)에서 표시되는 환경 설정이 우선 적용되지만 registerUserNotificationSettings:
이 호출되지 않으면 이전 설정이 어딘가에 캐시되고 어떤 종류의 알림이 전달되는지 결정하는 것으로 보입니다. 앱에
예, 실제로 푸시 알림 설정이 기기에 캐시됩니다 (예 : 24 시간 내에 푸시 알림을 수락하도록 팝업 알림을받을 수없는 이유). 그러나 등록을 취소해야하는 이유가 확실하지 않습니다. 나는 그럴 필요가있는 좋은 사례를 찾지 못했습니다. –
앱을 제거하고 두 번째 코드 단편 (registerUserNotificationSettings를 호출하지 않은 코드)을 실행 한 후에도 푸시 알림을 받고 있었기 때문에 등록 취소를 시도했습니다. PN 설정이 장치에 캐시 된 경우 해당 캐시를 지우려면 응용 프로그램을 제거 할 것으로 예상되지만 그럴 것 같지 않습니다. – jjramos