[英]In-App Purchase not working in TestFlight
我的應用程序被 Apple 拒絕,因為他們無法讓我的 IAP 工作。 我只是通過 Xcode 進行測試,一切似乎都運行良好(我不知道通過 TestFlight 進行測試)。 從那以后,我一直在通過 TestFlight 進行測試,而 IAP 對此不起作用。
任何人都可以就我哪里出錯提供任何建議嗎? 我在簽名和功能中添加了“應用內購買”。 我已經在 TestFlight 中測試了 StoreKit Configuration 設置為“None”和“Configuration.storekit”。
我在 App Store Connect 上的 IAP 狀態為“准備提交”。
import StoreKit
class Menu: SKScene, SKProductsRequestDelegate, SKPaymentTransactionObserver {
enum Product: String, CaseIterable {
case premium = "[my IAP identifier]"
}
func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
if let oProduct = response.products.first {
print("Product is available")
self.purchase(aproduct: oProduct)
} else {
print("Product is not available")
}
}
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
switch transaction.transactionState {
case .purchased:
SKPaymentQueue.default().finishTransaction(transaction)
print("Purchased")
purchasedPremium = true
userDefaults.set(true, forKey: "purchasedPremium")
var transition:SKTransition = SKTransition.fade(withDuration: 1)
var scene:SKScene = Menu(size: self.size)
self.view?.presentScene(scene, transition: transition)
case .failed:
SKPaymentQueue.default().finishTransaction(transaction)
print("Failed")
case .restored:
print("Restored")
case .deferred:
print("Deferred")
default:
break
}
}
}
func purchase(aproduct: SKProduct) {
let payment = SKPayment(product: aproduct)
SKPaymentQueue.default().add(self)
SKPaymentQueue.default().add(payment)
}
我通過運行此方法觸發購買過程:
func buyPremium() {
if SKPaymentQueue.canMakePayments() {
let set : Set<String> = [Product.premium.rawValue]
let productRequest = SKProductsRequest(productIdentifiers: set)
productRequest.delegate = self
productRequest.start()
}
}
您為產品請求和購買實施的流程不正確。
您不應在用戶發起購買時請求產品,也不應在檢索到SKProduct
時發起購買。
您應該采用以下內容:
didFinishLaunching
中實例化一個“采購經理”對象canMakePayments
true
,則請求您的產品SKProduct
並向您的應用程序視圖指示 IAP 可用SKPayment
請務必在啟動時立即建立隊列觀察器,因為隊列中可能有待處理的購買供您的應用處理。
檢查產品可用性和canMakePayments
首先通過確保不會向他們顯示他們無法使用的購買選項來改善用戶體驗
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.