Ios DidRegisterforRemotonificationswithDeviceToken不';t返回装置停止

Ios DidRegisterforRemotonificationswithDeviceToken不';t返回装置停止,ios,parse-platform,push-notification,apple-push-notifications,Ios,Parse Platform,Push Notification,Apple Push Notifications,我通过以下方式注册推送通知: func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { Parse.setApplicationId("RfSGbVes0FGIX1sfxTEb3iybVsKgKPrfDuxco3vC", clientKey: "3pFBMar6vO6iUJouqTMt4VJVK

我通过以下方式注册推送通知:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    Parse.setApplicationId("RfSGbVes0FGIX1sfxTEb3iybVsKgKPrfDuxco3vC", clientKey: "3pFBMar6vO6iUJouqTMt4VJVKZaXUc6p9RgHzTep")
    if application.applicationState != UIApplicationState.Background {
        let preBackgroundPush = !application.respondsToSelector("backgroundRefreshStatus")
        let oldPushHandlerOnly = !self.respondsToSelector("application:didReceiveRemoteNotification:fetchCompletionHandler:")
        var pushPayload = false
        if let options = launchOptions {
            pushPayload = options[UIApplicationLaunchOptionsRemoteNotificationKey] != nil
        }
        if (preBackgroundPush || oldPushHandlerOnly || pushPayload) {
            PFAnalytics.trackAppOpenedWithLaunchOptionsInBackground(launchOptions, block: nil)
        }
    }
    let userNotificationTypes = UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound
    let settings = UIUserNotificationSettings(forTypes: userNotificationTypes, categories: nil)
    application.registerUserNotificationSettings(settings)
    application.registerForRemoteNotifications()
    return true
}

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
    let installation = PFInstallation.currentInstallation()
    installation.badge = 0
    println(installation.deviceToken) //deviceToken is nil
    let standardUserDefaults = NSUserDefaults.standardUserDefaults()
    standardUserDefaults.setObject(installation.deviceToken, forKey: "parseDeviceToken")
    standardUserDefaults.synchronize()
    delegate?.didFinishSettingToken()
    installation.setDeviceTokenFromData(deviceToken)
    installation.saveInBackgroundWithBlock(nil)
}
当我运行应用程序时,我从
println(installation.deviceToken)

也许还有其他方法来处理
deviceToken

编辑:若我停止应用程序并再次运行它,它将提供deviceToken。只有当我第一次运行应用程序时,我才收到
deviceToken

根据苹果公司:

首次注册应用程序的首选通知类型时,系统会询问用户是否应允许您的应用程序发送通知 通知并存储用户的响应。这个系统没有 在随后的注册尝试中提示用户。用户可以 始终使用设置应用程序更改通知首选项

您还必须添加

UIApplication.sharedApplication().registerForRemoteNotificationSettings(settings)
对于iOS 7和8版本问题,请检查此项


希望有帮助。

您正在设备中运行应用程序?是的,在iPhone 5上,允许通知。添加了答案。您可以从it部门获得帮助吗?我什么时候应该获得deviceToken?@NikitaZernov根据这个答案,您必须直接获得deviceToken为什么您要通过安装获得它。deviceToken?因为设备令牌是当前设备的
UIApplication.sharedApplication().registerForRemoteNotificationSettings(settings)