iOS 9.1中开发模式下单个bundleId的多个设备令牌

时间:2015-11-15 09:40:03

标签: ios apple-push-notifications ios9 devicetoken ios9.1

我正在使用 Xcode 7.1.1 iOS 9.1 我正面临这个奇怪的问题。我必须在应用程序中实现推送通知。我已成功创建了证书和配置文件,并为开发模式启用了推送通知。

enter image description here

我在我的应用中保留了相同的捆绑ID。我的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,带有iOS 9.1的iPhone,并且仅使用开发证书和配置文件。
任何帮助表示赞赏。感谢

1 个答案:

答案 0 :(得分:2)

参考:Local and Remote Notification Programming Guide

  

设备令牌可以更改,因此您的应用每次都需要重新注册   它已经推出。

因此,Apple从不保证同一设备的设备令牌是相同的,我只是建议调整你的逻辑。谁知道这在其他iOS版本中会如何表现。这不是一个错误。