Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 正在验证来自macOS应用程序扩展的收据?_Swift_Macos_Receipt Validation_Macos App Extension - Fatal编程技术网

Swift 正在验证来自macOS应用程序扩展的收据?

Swift 正在验证来自macOS应用程序扩展的收据?,swift,macos,receipt-validation,macos-app-extension,Swift,Macos,Receipt Validation,Macos App Extension,macOS如何验证应用商店收据?即,验证应用程序的应用内购买是否有效(并继续有效) 显然,主捆绑指向应用程序扩展的捆绑,因此appStoreReceiptURL属性bundle返回一个不存在的接收文件-即使主应用程序有appstore接收文件 例如,以下代码分别打印出主捆绑包和应用商店接收路径 let mainBundle=Bundle.main 打印(“主捆绑路径:\(mainBundle.bundleURL)”) 打印(“收据路径:\(字符串(描述:mainBundle.appStoreRe

macOS如何验证应用商店收据?即,验证应用程序的应用内购买是否有效(并继续有效)

显然,主捆绑指向应用程序扩展的捆绑,因此
appStoreReceiptURL
属性
bundle
返回一个不存在的接收文件-即使主应用程序有appstore接收文件

例如,以下代码分别打印出主捆绑包和应用商店接收路径

let mainBundle=Bundle.main
打印(“主捆绑路径:\(mainBundle.bundleURL)”)
打印(“收据路径:\(字符串(描述:mainBundle.appStoreReceiptURL)))
当放置在应用程序扩展视图控制器的
viewDidLoad
中时,它返回如下结果:

主捆绑路径:file:///Users/${userName}/Library/Developer/Xcode/DerivedData/${projectBuild}/Build/Products/Debug/${mainAppName}.app/Contents/PlugIns/${appExtensionName}.appex/
接收路径:可选(内容/_masreceive/receipt--file:///Users/${userName}/Library/Developer/Xcode/DerivedData/${projectBuild}/Build/Products/Debug/${mainAppName}.app/Contents/PlugIns/${appExtensionName}.appex/)

但是,查看
.appex
捆绑包内部,文件夹
Contents/\u masreceive/
不存在。

您解决过这个问题吗?我猜我们可以从主应用程序将收据复制到一个组容器中,但这看起来很脆弱。我就是这么做的。主应用程序在通过验证后复制收据。扩展将在每次运行时重新验证收据副本。