Bundle.main.url(forResource: "AppleIncRootCertificate", withExtension: "cer") == nil

Mic*_*hel 1 openssl ios receipt-validation swift pkcs#7

为了在SwiftiOS 应用程序中设置收据验证(使用In-App-Purchase),我正在学习本教程:https : //www.raywenderlich.com/9257-in-app-purchases-receipt-validation-tutorial并在此处阅读:验证苹果公司签署了收据。

这是我目前遇到的一个问题。

在代码中我有这个:

Bundle.main.url(forResource: "AppleIncRootCertificate", withExtension: "cer")
Run Code Online (Sandbox Code Playgroud)

当我检查它的值时,它是零。由于它应该用于提取更多信息,因此它显然不应为零。问题是:代码或某些设置中可能有什么问题使此为零?

这是我第一次实现收据验证,所以很可能我遗漏了一些基本的东西。

Dmi*_*yai 5

我认为您可能已经解决了您的问题,但这可能对其他人如何清楚地解决问题有用。因此,如果

Bundle.main.url(forResource: "AppleIncRootCertificate", withExtension: "cer")

给你nil,你没有这个证书。正如上面评论中所建议的,去这里下载所需的证书,在 Apple Root Certificates -> Apple Inc. Root Certificate 下。

现在您需要将下载的证书添加到您的目标。移动到目标的构建阶段,展开复制捆绑资源并按“+”按钮。然后选择“打开其他...”并选择证书。选中“需要时导入”框或类似内容并启动应用程序。现在你不应该得到零。