2012-12-03 2 views
4

objective c - Detect when user change the app's notifications settings에 설명 된대로 사용자가 푸시 설정을 사용 중지했는지 여부를 확인할 수 있습니다.사용자가 푸시를 사용할 수 없게되면 iOS 응용 프로그램은 어떻게해야합니까?

위의 문서에 따르면 사용자가 응용 프로그램에 대한 푸시 알림을 해제 한 경우에도 푸시 알림이 전송됩니다. 내가 알기에 푸시 알림을 항상 applicationDidFinishLaunching:에 등록해야합니다.

대부분의 예는 다음과 유사합니다. 즉, 사용자 설정이 무시됩니다.

- (void)applicationDidFinishLaunching:(UIApplication *)app { 
    // other setup tasks here.... 

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)]; 

} 

응용 프로그램에서 이러한 설정을 고려해야하는 경우 올바른 구현은 어떻게됩니까?

내가이 질문을하는 이유는 푸시 알림을 사용하지 않더라도 푸시 알림을 받고 있다고 불평하는 고객이 많기 때문입니다. 이것은 iOS 6에 적용되는 것으로 보입니다.

사용자가 푸시 알림을 사용 중지 한 경우 개발자가 대처해야합니까? 설명서를 반복해서 읽었습니다. 특히 application:didReceiveRemoteNotification:에 대한 설명서. 사용자가 푸시 알림을 사용할 수 없을 때 호출되는지 여부는 명시하지 않습니다.

+1

iOS 변경 사항의 성격에 대해보다 정확하게 설명하거나 불만 사항에 대해 답변 할 수 있습니까? 나의 이해는 앱이 알림을 위해 등록한다는 것이다 (사용자의 설정에 관계없이 후속 알림이있을 때 사용자가 설정을 변경했을 수 있기 때문에), 알림은 미래에 생성되며 사용자는 알림을보고 행동을 취하거나 행동을 취하지 않거나 사용자가 통보를하지 않습니다. 그 질문이 실제로 여기에 있는지 나는 명확하지 않다. 그러나 아니요, 사용자가 현재 알림을 해제했기 때문에 등록이 실패하지 않습니다. – Rob

+0

iOS에서 사용 중지 된 푸시 알림도 표시되지 않습니다. 그러나 응용 프로그램이 등록되고 사용자가 푸시 알림을 비활성화했을 때 알림을 받으면 언급하지 않습니다. 사용자가 푸시 알림을 사용 중지 한 경우에도 항상 등록하는 것이 안전합니까? 그에 따라 질문을 명확히하려고 노력했습니다. –

+0

나는이 기사를보고 다른 iOS 버전의 차이점에 대해 혼란스러워했다. [objective c - 사용자가 앱의 알림 설정을 변경할 때 감지] (http://stackoverflow.com/questions/1535403/determine-on-iphone- 사용자가 푸시 알림을 사용하는 경우). 답변 중 하나에 대한 의견에 따르면, iOS 5에서 변경되었습니다. –

답변

3

당신이 그것을 매번 앱이 시작됩니다 푸시 알림을 등록 괜찮

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)_deviceToken { 
     if ([application enabledRemoteNotificationTypes] < 4) { 
     NSLog(@"Notifications are disabled for this application"); 
    return; 
     } 
     // The device is registered for notifications 
} 
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{ 
    NSLog(@"FAILED TO REGISTER FOR PUSH NOTIFICATIONS"); 
    NSLog(@"%@", error.userInfo); 
} 

를 장치가 등록 여부를 알 이러한 메소드를 구현 여부를 확인합니다. 하지만 사용자가 앱에 대한 알림을 사용 또는 사용 중지했는지 여부를 확인하려면 위 메소드를 구현해야합니다.

+0

이 대답은 내가 찾고있는 대답처럼 들립니다. if 문에서 '4'라는 마법을 설명하면 더 좋습니다. 나는 이것을 내 코드에 추가 할 것이다. –

+0

여기에 UIApplication의 enabledRemoteNotificationTypes에 대한 자세한 정보가 있습니다. http://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIApplication_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006728-CH3-SW65 값> = 4로 설정 한 다음 사용하도록 설정합니다. –

+0

자세한 설명 : enabledRemoteNotificationTypes 반환 값이 bitwise typedef 열거 형이므로 UIRemoteNotificationTypeAlert가 활성화되어 있습니다. 그래서 4를 확인하고 있습니다. 배지와 사운드 같은 다른 경고에 관심이 있다면 별도로 확인하십시오 –

관련 문제