2015-03-02 72 views
1

这是我已经把AppDelegate中用于推送通知注册代码:奇怪的行为适用于iOS推送通知注册时

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    let notificationTypes = UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound 
    let settings = UIUserNotificationSettings(forTypes: notificationTypes, categories: nil) 
    UIApplication.sharedApplication().registerUserNotificationSettings(settings) 
    return true 
} 

func application(application:UIApplication!, didRegisterForUserNotificationSettings notificationSettings:UIUserNotificationSettings) { 
    println("[AppDelegate][didRegisterForUserNotificationSettings]") 
    UIApplication.sharedApplication().registerForRemoteNotifications() 
} 

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) { 
    println("[AppDelegate][didFailToRegisterForRemoteNotificationsWithError]") 
    println(error) 
} 

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 
    println("[AppDelegate][didRegisterForRemoteNotificationsWithDeviceToken]") 
    println(deviceToken) 
} 

当然,当我经过的Xcode 6.1.1发布在我的iPhone应用程序没有任何反应,我没有看到我的println输出,但是当我离开应用程序并转至设置 - >通知时,我发现为我的应用程序启用了推送通知。

由于didRegisterForRemoteNotificationsWithDeviceToken不叫,我没有得到deviceToken

我在做什么错?

回答

0

也许问题在于,在应用完成启动时调用的应用委托方法返回true后调用registerForRemoteNotifications()。试试这个:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    let notificationTypes = UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound 
    let settings = UIUserNotificationSettings(forTypes: notificationTypes, categories: nil) 

    application.registerUserNotificationSettings(settings) 
    application.registerForRemoteNotifications() 

    return true 
} 
0

我去手机设置 - >去一般 - >通知 - >选择您的应用程序 - >的通知中心 - >将其更改为10!改变它后,我开始获取设备令牌数据!