我在使用 SwiftyStoreKit 框架时遇到问题,我什至不确定如何测试以查看是否已解决问题。当我使用我的沙盒帐户时,所有购买都很好。但是当我将它提交到 App Store 时,他们拒绝了它,因为他们说他们收到一条消息,上面写着“无法检索产品信息 - 无效的产品标识符:com.rrtenz.puzzlesfromsurvivor2.unlockAll”。
我在下面包含了他们的屏幕截图和问题描述的全文。
指南 2.1 - 性能 - 应用程序完整性
在通过 Wi-Fi 运行 iOS 的 iPad 上查看时,我们在您的应用程序中发现了一个或多个错误。
从商店进行任何选择时,我们收到了附加的错误消息。
下一步
要解决此问题,请在设备上运行您的应用以识别任何问题,然后修改并重新提交您的应用以供审核。
如果我们误解了您的应用程序的预期行为,请在调解中心回复此消息,以提供有关这些功能的预期工作方式的信息。
对于新应用程序,请从设备上卸载所有以前版本的应用程序,然后安装并按照步骤重现问题。对于更新,请安装新版本作为对先前版本的更新,然后按照步骤重现问题。
资源
有关测试您的应用程序和准备审查的信息,请参阅技术说明 TN2431:应用程序测试指南。
有关网络概述,请查看关于网络。
该产品已添加到 App Store Connect,并且产品标识符匹配。
我不知道这是否重要,但我的应用程序包标识符是“com.rrTenz.Puzzles -for-Survivors ”,我的产品标识符是“com.rrtenz.puzzlesfromsurvivor2 .xxxxx ”。
这是我的代码:
应用委托:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
SwiftyStoreKit.completeTransactions(atomically: true) { purchases in
for purchase in purchases {
switch purchase.transaction.transactionState {
case .purchased, .restored:
if purchase.needsFinishTransaction {
// Deliver content from server, then:
SwiftyStoreKit.finishTransaction(purchase.transaction)
}
// Unlock content
case .failed, .purchasing, .deferred:
break // do nothing
@unknown default:
fatalError()
}
}
}
return true
}
获取信息代码:
func getInfo(purchase: RegisteredPurchase) {
NetworkActivityIndicatorManager.NetworkOperationStarted()
SwiftyStoreKit.retrieveProductsInfo([bundleID + "." + purchase.rawValue], completion: {
result in
NetworkActivityIndicatorManager.NetworkOperationFinished()
if let product = result.retrievedProducts.first {
//handle info here
[...]
}else {
//error alert
[...]
}
})
}
制作购买代码:
func purchase(purchase: RegisteredPurchase) {
NetworkActivityIndicatorManager.NetworkOperationStarted()
SwiftyStoreKit.purchaseProduct(bundleID + "." + purchase.rawValue, completion: {
result in
NetworkActivityIndicatorManager.NetworkOperationFinished()
if case .success(let product) = result {
//update purchase variables here
[...]
}
//purchase complete alert
[...]
})
}
所以正如我之前提到的,我不确定如何调试这个问题,因为当我使用我的沙盒帐户时,我什至无法复制该行为。如果有人有任何建议或可以确定我做错了什么,我将不胜感激。