我正在尝试让我的一些朋友在TestFlight上测试我的应用。除推送通知外,这一切都很顺利。我似乎无法提取他们的推送令牌。我已经进行了双重检查,他们已授予应用程序访问Push令牌的权限。
在我看来,这一切看起来都很好:
缺少推送通知权利 - 您的应用包含Apple推送通知服务的API,但应用程序签名中缺少aps-environment权利。要解决此问题,请确保在Provisioning Portal中为推送通知启用了App ID。然后,使用包含aps-environment权利的分发配置文件为您的应用签名。这将创建正确的签名,您可以重新提交您的应用程序。有关详细信息,请参阅“本地和推送通知编程指南”中的“供应和开发”。如果您的应用不使用Apple推送通知服务,则无需执行任何操作。您可以从将来的提交中删除API以停止此警告。如果您使用第三方框架,则可能需要与开发人员联系以获取有关删除API的信息。
从TestFlight下载新副本时,我能够提取自己设备的推送令牌。
我不知道发生了什么,并且真的想解决这个问题。谁能帮我吗?
万一它有帮助。这是我的代码:
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
let tokenChars = UnsafePointer<CChar>(deviceToken.bytes)
var tokenString = ""
for i in 0..<deviceToken.length {
tokenString += String(format: "%02.2hhx", arguments: [tokenChars[i]])
}
Constant.pushToken = tokenString
if (KeychainWrapper.hasValueForKey("user_id")){
let user = User()
user.id = Int(KeychainWrapper.stringForKey("user_id")!)!
ApiManager.sharedInstance.putPushToken(user){ (result, error) -> Void in
if error != nil {
//error
} else {
//success
}
}
}
}