Видеть сбои с кодом, которые покупают с использованием storekit2 [дублировать]IOS

Программируем под IOS
Ответить
Anonymous
 Видеть сбои с кодом, которые покупают с использованием storekit2 [дублировать]

Сообщение Anonymous »

Я использую следующий код для покупки подписок с использованием storekit2, и часто он переходит в блок улова. Кто -нибудь знает в каких случаях это может быть? Это не дает мне ошибки только ни одной или неизвестной ошибки. Это правильный способ использовать Storekit2? < /P>
func purchaseProduct(product: Product, source: String) async -> Bool {
do {
// Start the purchase
let result = try await product.purchase()

// Handle the result of the purchase
switch result {
case .success(let verificationResult):
switch verificationResult {
case .verified(let transaction):
self.transactionState = "Purchase Successful"
await transaction.finish()
return true
case .unverified(let transaction, let error):
self.transactionState = "Purchase Unverified: \(error.localizedDescription)"
await transaction.finish()

DispatchQueue.main.async {
showMessageWithTitle("Error!", "There was an error processing your purchase", .error)

Amplitude.sharedInstance.track(
eventType: "payment_failed",
eventProperties: ["PlanId": product.id, "Source": source, "Error": error.localizedDescription]
)
}
return false
}
case .userCancelled:
self.transactionState = "User cancelled the purchase."

DispatchQueue.main.async {
Amplitude.sharedInstance.track(
eventType: "payment_cancelled",
eventProperties: ["PlanId": product.id, "Source": source]
)
}
return false

case .pending:
self.transactionState = "Purchase is pending."

DispatchQueue.main.async {
showMessageWithTitle("Error!", "There was an error processing your purchase", .error)
}
return false

@unknown default:
self.transactionState = "Unknown purchase result."

DispatchQueue.main.async {
showMessageWithTitle("Error!", "There was an error processing your purchase", .error)

Amplitude.sharedInstance.track(
eventType: "payment_failed",
eventProperties: ["PlanId": product.id, "Source": source, "Error": "unknown"]
)
}

return false
}
} catch {
self.transactionState = "Purchase failed: \(error.localizedDescription)"

DispatchQueue.main.async {
showMessageWithTitle("Error!", "There was an error processing your purchase", .error)

Amplitude.sharedInstance.track(
eventType: "payment_failed",
eventProperties: ["PlanId": product.id, "Source": source, "Error": error.localizedDescription]
)
}
return false
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... -storekit2
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»