푸시 알림을 위한 장치 토큰을 얻을 수 없는 경우의 조치

8759 단어 iOSSwiftObjective-C
iOS에서 Push 알림을 제공하는 앱을 개발할 때,
디바이스 토큰이 전달되는 다음 메소드가 호출되지 않는 경우 확인 사항

Objective-C
- (void)application:(UIApplication *)application 
    didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    //デバイストークン取得後の処理
}

Swift
func application( application: UIApplication, 
    didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData ) {
    //デバイストークン取得後の処理
}

확인 사항


  • target 설정의 Capabilities > Push Notifications가 ON으로 되어 있는지 확인한다.
  • iOS8 이상인 경우 registerForRemoteNotifications를 호출하고 있는지 확인합니다.

  • Objective-C
    - (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        UIUserNotificationType types =
                            UIUserNotificationTypeBadge|
                            UIUserNotificationTypeSound|
                            UIUserNotificationTypeAlert;
    
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
        [application registerUserNotificationSettings:settings];
        return YES;
    }
    
    - (void)application:(UIApplication *)application 
        didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
    {
        [application registerForRemoteNotifications];
    }
    
    - (void)application:(UIApplication *)application 
        didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
        //デバイストークン取得後の処理
    }
    
    - (void)application:(UIApplication *)application
        didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
        // エラー処理
    }
    

    Swift
    func application( application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary? ) -> Bool {
        let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        application.registerUserNotificationSettings(settings)
        return true
    }
    
    func application( application: UIApplication,
         didRegisterUserNotificationSettings notificationSettings:UIUserNotificationSettings) {     
         application.registerForRemoteNotifications()
    }
    
    func application( application: UIApplication,
         didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
        //デバイストークン取得後の処理
    }
    
    func application( application: UIApplication!, 
        didFailToRegisterForRemoteNotificationsWithError error: NSError! ) {
        // エラー処理
    }
    

    참고


  • Xcode6에서 iOS8에 Push 알림을 보낼 수 없는 경우 해결 방법
  • Swift로 푸시 알림
  • 【iOS8과 iOS7 대응】Swift로 Push
  • 좋은 웹페이지 즐겨찾기