我重写了购买的恢复代码,因为无法在沙盒中测试,我在TestFlight上测试了应用程序。
该应用程序在购买和恢复方面都运行良好。昨天该应用程序已通过并发布给公众,我也下载并再次测试,但我发现它无法在购买和恢复方面工作。
今天,我将新版本的相同代码上传到TestFlight并再次测试,该应用程序正常运行。
有可能吗?
P.S。我在TestFlight帐户上使用相同的电子邮件,在iPhone上使用Apple ID。
func requestProductData()
{
if SKPaymentQueue.canMakePayments() {
request = SKProductsRequest(productIdentifiers: self.productIdentifiers as Set<String>)
request.delegate = self
request.start()
} else {
self.activity.stopAnimating()
self.activity.hidden = true
let alert = UIAlertView()
alert.title = "Setting"
alert.message = "In-App Purchases Not Enabled, Please enable In App Purchase in Settings"
alert.addButtonWithTitle("OK")
alert.show()
}
}
func restorePurchases() {
SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
}
func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
switch transaction.transactionState {
case SKPaymentTransactionState.Purchased:
self.deliverProduct(transaction)
SKPaymentQueue.defaultQueue().finishTransaction(transaction)
productsList.reloadData()
case SKPaymentTransactionState.Failed:
print(transaction.error)
SKPaymentQueue.defaultQueue().finishTransaction(transaction)
case SKPaymentTransactionState.Restored:
self.deliverProduct(transaction)
SKPaymentQueue.defaultQueue().finishTransaction(transaction)
break;
default:
break
}
}
}
func deliverProduct(transaction:SKPaymentTransaction) {
if transaction.payment.productIdentifier == "com.xxxxx"
{
saveData.setBool(true, forKey: "xxxxxPurchased")
}else if transaction.payment.productIdentifier == "com.xxx"{
saveData.setBool(true, forKey: "xxxPurchased")
}
}
更新: In-Apps已经发布,之前已经购买了这两款产品。如果购买,每件产品都会显示一个复选标记。我在发布的版本上没有复选标记,但在TestFlight版本上获得了复选标记。