Несколько токенов устройств для одного bundleId в режиме разработки iOS 9.1

Я использую Xcode 7.1.1 и iOS 9.1.
Я сталкиваюсь с этой странной проблемой. Я должен реализовать push-уведомления в приложении. Я успешно создал сертификаты и профили обеспечения с push-уведомлениями, включенными для режима разработки.

введите описание изображения здесь

Я сохранил тот же идентификатор пакета в моем приложении. Код написан тоже хорошо в моем классе appdelegate

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    let pushSettings = UIUserNotificationSettings(forTypes: .Alert, categories: nil)
    UIApplication.sharedApplication().registerUserNotificationSettings(pushSettings)
        UIApplication.sharedApplication().registerForRemoteNotifications()

    _ = UIApplication.sharedApplication().applicationIconBadgeNumber
    UIApplication.sharedApplication().cancelAllLocalNotifications()
    UIApplication.sharedApplication().applicationIconBadgeNumber = 0


    return true
}

func application( application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData ) {


    let characterSet: NSCharacterSet = NSCharacterSet( charactersInString: "<>" )

    let deviceTokenString: String = ( deviceToken.description as NSString )
        .stringByTrimmingCharactersInSet( characterSet )
        .stringByReplacingOccurrencesOfString( " ", withString: "" ) as String

    print( deviceTokenString )
    let defaults = NSUserDefaults.standardUserDefaults()
    defaults.setObject(deviceTokenString, forKey: "device_token")
    defaults.synchronize()


}
func application( application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError ) {

    print( error.localizedDescription )
}
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {

}
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
}

Я успешно получил токен устройства и распечатал его. Но всякий раз, когда я удаляю приложение, перестраиваю и переустанавливаю его, токен устройства меняется. Тем не менее, он остается прежним, пока я не удалю приложение. Но каждый раз, когда я удаляю, я получаю новый маркер устройства. Этого не было в iOS 8.x. Я не знаю, почему это происходит на iOS 9.1.
В случае iOS 8.x я использую, чтобы получить тот же токен устройства, даже если я удаляю приложение. Кто-нибудь сталкивался с этой проблемой. Это нормально.
ПРИМЕЧАНИЕ. Я использую xcode 7.1.1, iPhone с iOS 9.1 и использую только сертификаты разработки и профиль обеспечения.
Любая помощь приветствуется. Спасибо

1 ответ

Решение

Со ссылкой на: Руководство по программированию локальных и удаленных уведомлений

Маркеры устройств могут меняться, поэтому ваше приложение должно регистрироваться при каждом запуске.

Таким образом, Apple никогда не гарантировала, что токен устройства будет одинаковым для того же устройства, я бы просто предложил изменить вашу логику. Кто знает, как это может вести себя в следующих версиях iOS. Это не ошибка.

Другие вопросы по тегам