推送通知问题iOS TestFlight

时间:2016-11-14 10:21:23

标签: ios iphone swift

我正在尝试让我的一些朋友在TestFlight上测试我的应用。除推送通知外,这一切都很顺利。我似乎无法提取他们的推送令牌。我已经进行了双重检查,他们已授予应用程序访问Push令牌的权限。

在我看来,这一切看起来都很好:

enter image description here

enter image description here

然而,在我将应用程序上传到TestFlight后,Apple会发送以下电子邮件:

缺少推送通知权利 - 您的应用包含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
            }
        }
    }
}

3 个答案:

答案 0 :(得分:1)

您需要为此添加权利文件。在您的情况下,当您从功能启用推送通知时,它会以某种方式与您的项目无关。请关闭并启用“推送通知”选项。您可以在项目中自动添加权利文件。

enter image description here

更新:服务器是使用沙箱网址还是分配网址?

答案 1 :(得分:0)

确保使用TestFlight beta测试的分发配置文件进行存档。

答案 2 :(得分:0)

  • 检查您用于推送通知的服务。

  • 检查您是否已注册Badge | Sound | Alert的通知服务。

  • 在receivedRemoteNotification处添加调试器,并检查您是否能够收到通知。