macOS App Extension如何验证应用商店收据?也就是说,验证该应用的应用内购买是否有效(并继续有效)
显然,主捆绑包指向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/
不存在。