В настоящее время я разрабатываю приложение с использованием Swift.
Продукт не является расходным материалом (однократная покупка), а тестирование покупок в приложении проводится через TestFlight.
Некоторые тестировщики загружают приложение по общедоступной ссылке TestFlight и выполняют тесты покупок со своими личными идентификаторами Apple ID без использования специальных тестовых учетных записей в песочнице.
(Эти покупки по-прежнему обрабатываются как тестовые транзакции, а не как реальные обвинений.)
Проблема в том, что после завершения покупки транзакция.finish() не работает в состоянии .verified.
Когда приложение запускается, я проверяю незавершенные транзакции с помощью Transaction.unfinished.
Транзакция обнаруживается в операторе переключения в разделе .verified, и в этот момент я вызываю транзакцию.finish().
Однако после закрытия и перезапуска приложения происходит то же самое транзакция обнаруживается снова при повторении Transaction.unfinished.
На самом деле различий в коде нет по сравнению с ранее выпущенной производственной версией, но при тестировании покупки TestFlight транзакция.finish(), похоже, не завершается должным образом.
Из-за этой проблемы:
При повторной попытке приобрести тот же продукт лист покупки продукта иногда не отображается, или
После удаления и при переустановке приложения продукт считается уже купленным и восстановленным.
Я читал, что поведение может отличаться в производственной среде, но мне хотелось бы знать, как это исправить или правильно обработать.
мой простой код
public func buyProduct(_ product: Product){
Task {
do{
let result = try await product.purchase()
switch result{
case .success(let verification):
switch verification{
case .verified(let transaction):
await handleTransaction(transaction)
await transaction.finish()
case .unverified(_, let error):
}
case .userCancelled:
case .pending:
@unknown default:
}
}catch{
print("purchase failed: \(error.localizedDescription)")
}
}
}
public func checkedTransaction(){
for await result in Transaction.unfinished {
switch result {
case .verified(let transaction):
await transaction.finish()
case .unverified(_, let error):
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... -purchases
Транзакция.finish() не работает во время покупок в приложении Swift StoreKit ⇐ IOS
Программируем под IOS
1768811861
Anonymous
В настоящее время я разрабатываю приложение с использованием Swift.
Продукт не является расходным материалом (однократная покупка), а тестирование покупок в приложении проводится через TestFlight.
Некоторые тестировщики загружают приложение по общедоступной ссылке TestFlight и выполняют тесты покупок со своими личными идентификаторами Apple ID без использования специальных тестовых учетных записей в песочнице.
(Эти покупки по-прежнему обрабатываются как тестовые транзакции, а не как реальные обвинений.)
Проблема в том, что после завершения покупки транзакция.finish() не работает в состоянии .verified.
Когда приложение запускается, я проверяю незавершенные транзакции с помощью Transaction.unfinished.
Транзакция обнаруживается в операторе переключения в разделе .verified, и в этот момент я вызываю транзакцию.finish().
Однако после закрытия и перезапуска приложения происходит то же самое транзакция обнаруживается снова при повторении Transaction.unfinished.
На самом деле различий в коде нет по сравнению с ранее выпущенной производственной версией, но при тестировании покупки TestFlight транзакция.finish(), похоже, не завершается должным образом.
Из-за этой проблемы:
При повторной попытке приобрести тот же продукт лист покупки продукта иногда не отображается, или
После удаления и при переустановке приложения продукт считается уже купленным и восстановленным.
Я читал, что поведение может отличаться в производственной среде, но мне хотелось бы знать, как это исправить или правильно обработать.
[b]мой простой код[/b]
public func buyProduct(_ product: Product){
Task {
do{
let result = try await product.purchase()
switch result{
case .success(let verification):
switch verification{
case .verified(let transaction):
await handleTransaction(transaction)
await transaction.finish()
case .unverified(_, let error):
}
case .userCancelled:
case .pending:
@unknown default:
}
}catch{
print("purchase failed: \(error.localizedDescription)")
}
}
}
public func checkedTransaction(){
for await result in Transaction.unfinished {
switch result {
case .verified(let transaction):
await transaction.finish()
case .unverified(_, let error):
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79870960/transaction-finish-is-not-working-during-swift-storekit-in-app-purchases[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия