macOS应用扩展如何验证应用商店收据?即验证应用内购买是否有效(并继续有效)
显然主包指向 App Extension 的包,因此该appStoreReceiptURL
属性Bundle
返回一个不存在的收据文件——即使主应用程序有 App Store 收据文件。
例如,以下代码分别打印出主包和应用商店收据路径。
let mainBundle = Bundle.main
print("main bundle path: \(mainBundle.bundleURL)")
print("receipt path: \(String(describing: mainBundle.appStoreReceiptURL))")
当放置在 App Extension 视图控制器中viewDidLoad
时,它会返回如下结果:
main bundle path: file:///Users/${userName}/Library/Developer/Xcode/DerivedData/${projectBuild}/Build/Products/Debug/${mainAppName}.app/Contents/PlugIns/${appExtensionName}.appex/
receipt path: Optional(Contents/_MASReceipt/receipt -- file:///Users/${userName}/Library/Developer/Xcode/DerivedData/${projectBuild}/Build/Products/Debug/${mainAppName}.app/Contents/PlugIns/${appExtensionName}.appex/)
但是查看.appex
捆绑包内部,该文件夹Contents/_MASReceipt/
不存在。