Несколько токенов устройств для одного 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. Это не ошибка.