我试图将用户令牌保存在安装类中,但没有任何内容被添加到该类中。

这是我的应用程序委托中的代码块,用于注册令牌并为该用户创建一行。

  func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
    // Store the deviceToken in the current Installation and save it to Parse
    let installation = PFInstallation.currentInstallation()
    installation.setDeviceTokenFromData(deviceToken)
    if let username = PFUser.currentUser()?.username {
installation.setObject(username, forKey: "user")
}
    installation.saveInBackgroundWithBlock({ (success: Bool, error: NSError?) -> Void in
        if (error == nil){
            print("saved installation")
        }else{
            print(error)
        }
    })


}


我将下面的块放置在我的个人资料视图中,这是登录后显示的视图控制器。我将其从应用程序委托中移出,因为我希望用户登录后被提示允许用户进行通知。问题是didRegisterForRemoteNotifications...没有被调用。

    let settings = UIUserNotificationSettings(forTypes: [.Alert, .Sound, .Badge], categories: nil)
    UIApplication.sharedApplication().registerUserNotificationSettings(settings)
    UIApplication.sharedApplication().registerForRemoteNotifications()

最佳答案

首先想到的是:您是否正在模拟器中运行它?如果是,您将无法获得设备令牌,因为Simulator无法处理远程通知。

其次,这一行:

installation["user"] = PFUser.currentUser()?.username


实际上应该是:

if let user = PFUser.currentUser()? {
    installation.setObject(user, forKey: "user")
}


Parse的iOS库尚未移植到Swift,因此目前无法处理订阅。

10-07 12:44
查看更多