【问题标题】:Push Notifications problems iOS TestFlight推送通知问题 iOS TestFlight
【发布时间】:2017-03-27 22:51:29
【问题描述】:

我正试图让我的几个朋友在 TestFlight 上测试我的应用。除了推送通知外,这一切都很好。我似乎无法提取他们的 Push 令牌。我已经仔细检查过,他们已授予应用程序获取推送令牌的权限。

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

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

缺少推送通知权利 - 您的应用包含 Apple 推送通知服务的 API,但应用签名中缺少 aps-environment 权利。要解决此问题,请确保您的 App ID 已启用供应门户中的推送通知。然后,使用包含 aps-environment 权利的分发配置文件对您的应用程序进行签名。这将创建正确的签名,您可以重新提交您的应用程序。有关详细信息,请参阅本地和推送通知编程指南中的“供应和开发”。如果您的应用程序不使用 Apple 推送通知服务,则无需执行任何操作。您可以从以后的提交中删除 API 以停止此警告。如果您使用第三方框架,您可能需要联系开发人员以获取有关删除 API 的信息。


从 TestFlight 下载新副本时,我能够提取自己设备的 Push 令牌。
我不知道发生了什么,我真的很想解决这个问题。谁能帮我吗?
万一有帮助。这是我的代码:

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
            }
        }
    }
}

【问题讨论】:

标签: ios iphone swift


【解决方案1】:

您需要为此添加一个权利文件。在您的情况下,当您启用来自 Capabilities 的推送通知时,它不会以某种方式附加到您的项目中。请关闭并打开推送通知选项。您可能会在项目中自动添加权利文件。

更新:服务器是使用 sandbox 网址还是分发网址?

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
      • 检查您一直使用的推送通知服务。

      • 检查您是否已注册徽章|声音|警报通知服务。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-22
        • 2014-05-24
        • 1970-01-01
        • 2021-02-11
        • 2015-06-26
        • 1970-01-01
        相关资源
        最近更新 更多