2013-04-19 2 views
1

새 앱에 푸시 알림을 설정했습니다.사용자가 거부 한 경우 기기 토큰 가져 오기 알림을 누름

- (void)application:(UIApplication *)application 
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken 
{ 


    NSString *deviceToken = [[newDeviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]; 
    deviceToken = [deviceToken stringByReplacingOccurrencesOfString:@" " withString:@""]; 

    NSLog(@"###### DEVICE TOKEN = %@ #########",deviceToken); 


} 

모든 것이 나를 위해, 그럼에도 불구하고 나는 내베이스에 사용자 로그인이 토큰을 사용 괜찮지 만, 나는이 : 나는 그것을 할 수있는 좋은 방법이 아니다하지만 사용하여 장치 토큰을 얻을 들었다 문제 : 사용자가 푸시 알림 수신을 거부하면 어떻게 기기 토큰을 얻을 수 있습니까? App Delegate 외부에서 장치 토큰을 얻으려면 어떻게해야합니까?

답변

1

사용자가 푸시 알림을 수신하지 않는 경우 장치 토큰을 얻을 수 없습니다. 메서드

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error 

이 대신 호출되지만 토큰을 얻을 수는 없습니다.

고유 한 식별자를 찾으려면 identifierForVendor을 사용해보십시오. 다음 문서를 참조하십시오. http://developer.apple.com/library/ios/#documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/occ/instp/UIDevice/identifierForVendor

0

사용자가 푸시 알림을 거부하더라도이 메서드가 호출됩니다. 사용자는 UIRemoteNotificationType을 사용하여 사용자 선택을 할 수 있습니다.

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken 
{ 
    NSLog(@"My token is: %@", deviceToken); 

    UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 
    if (types == UIRemoteNotificationTypeNone){ 
     NSLog(@"User refused to receive push notifications"); 
    }else{ 
     NSLog(@"User agreed to receive push notifications"); 
    } 
} 

두 번째 질문에 대해서는이 콜백 외부의 iOS에서 장치 토큰을 가져올 수 없습니다.

+1

사용자 거부 알림을 보내지 않으면이 메소드가 호출되지 않습니다. . . 정말로 고마워요. – user2252092

+0

하지만 그렇게해서는 안됩니다. AppStore에서이 코드를 사용하는 라이브 애플리케이션이 있으며 푸시 알림 수신을 거부하는 사용자를 위해 deviceToken이 제공됩니다 (물론 푸시 메시지를 보낼 수는 없습니다). – Toam

+1

사실, iOS7에서 동작이 변경된 것으로 보입니다. 토큰은 사용자가 푸시를 수락 할 때만 보내집니다. 이전 버전에서는 사용자가 선택을 거부하기 전에 선택을 할 수 있기 때문에 부분적으로 옳습니다. – klefevre