Диалог покупки не появляется с iOS 13.4 - PullRequest
6 голосов
/ 29 марта 2020

Поскольку iOS 13.4 , диалоговое окно для покупок в приложении не отображается при выполнении строки ...

[[SKPaymentQueue defaultQueue] addPayment:payment]; 

....

Pre iOS 13.4 всплывающее диалоговое окно, в котором пользователь подтвердил покупку, но теперь ничего. Кто-нибудь знает, что может быть причиной этой проблемы?

Примечания:

  • Это полноэкранная игра, основанная на libSDL и gles 3.0.
  • В то время как 99% базы кода - это C ++, покупки в приложении осуществляются в Objective C ++
  • Это работало до iOS 13.4

Ответы [ 2 ]

4 голосов
/ 31 марта 2020

попробуйте полностью "flu sh" очередь один раз:

    - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { 
        for (SKPaymentTransaction *transaction in transactions) {

        //debug - finish all transactions to make queue empty  
        [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
/*
            switch (transaction.transactionState) {
                case SKPaymentTransactionStatePurchased:
                     //your code 
                     [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                     break;

                case SKPaymentTransactionStateFailed:
                    //your code 
                    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                    break;
            }
*/
        }
    }

, затем замените ее на свой код и попробуйте совершить покупку.

2 голосов
/ 02 апреля 2020

Во-первых, убедитесь, что вы завершаете транзакции в случае успеха / неудачи:

В нашем случае старый код не вызывал SKPaymentQueue.default().finishTransaction(transaction), чтобы удалить его из очереди. До iOS 13.4 это, очевидно, работало нормально, хотя в документации сказано, что это необходимо

Так что произойдет, если диалоговое окно будет показано один раз, и человек отменится, а затем с этого момента транзакция сохранится в очереди и автоматически возвращаются как отмененные, не показывая диалоговое окно снова. Завершение транзакции удаляет ее и позволяет снова отобразить диалоговое окно


Если это не сработает:

По запросу инженера Apple, я подал радар для этого (FB7648374) с Регистрация в App Store и sysdiagnose

Пожалуйста, сделайте то же самое:

  • Следуйте инструкциям для входа в App Store на https://developer.apple.com/bug-reporting/profiles-and-logs/
  • Установите профиль на вашем устройстве, который включает подробное ведение журнала
  • Затем воспроизведите проблему на вашем устройстве с работающими журналами устройства (Xcode -> Устройства -> Журналы консоли)
  • Затем немедленно выполните системную диагностику
  • Подайте новый радар с этой информацией на https://feedbackassistant.apple.com/
...