我有一个奇怪的问题。我正在沙盒环境中使用在iTunes Connect中创建的沙箱测试器测试一些应用内购买。我创建了消耗品和非消耗品以进行测试。我只是实现了productsRequest(didReceiveResponse:)
方法,只要用户在我的应用中点击它们,就可以从App Store中获取产品。我将它们添加到SKPaymentQueue
对象中,这足以使应用程序从App Store弹出用户界面,要求用户使用Apple ID登录以确认购买所选产品。我记得第一次这样做是完美的。那时候,我还没有使用我的设备上的任何Apple ID登录,所以只有在我完全通过确认购买的整个过程之后才知道付款队列的委托方法{{1} } 被称为。在此方法中,我会检查状态更新的内容,并在购买产品时解锁购买的内容:
paymentQueue(updatedTransactions:)
我现在经常遇到的问题是,只要我调用func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
// Check what the transaction was updated to
if transactions.last!.transactionState == .purchased {
// Unlock purchased content here
// Complete transaction and remove it from queue
queue.finishTransaction(transactions.last!)
}
}
SKProductsRequest
方法,就会立即调用上面的方法并且事务处理是更新到.start()
即使应用程序商店提示仍然有效。这导致购买的内容已经解锁,而App Store仍然要求我登录我的Apple ID以确认我的购买。有没有其他人遇到过这个问题?它与沙箱环境或测试仪Apple ID有什么关系?任何帮助将不胜感激。