Созвездия возникновения ошибки:
Ошибка появляется при тестировании на физическом устройстве. В тестах с различными симуляторами в Xcode этого не происходит.
Тогда ошибка появляется только в контексте первого первоначального платежа через Paypal. Он не отображается при последующих платежах.
Информация о том, как мое приложение использует SDK Paypal:
импортировать PayPalCheckout
Версия: PayPalCheckout (0.109.0)
Разделы в Swift-коде:
Код: Выделить всё
Checkout.setCreateOrderCallback { action in
let amount = PurchaseUnit.Amount(currencyCode: .eur, value: identifiersDict[Identifiers.chargeValue.rawValue]?.input ?? "")
let purchaseUnit = PurchaseUnit(amount: amount)
let order = OrderRequest(intent: .capture, purchaseUnits: [purchaseUnit]
action.set(orderId: answerFromPaymentPaypalBackend.id)
}
Checkout.setOnApproveCallback { approval in
approval.actions.authorize { response, error in
...
Checkout.setOnCancelCallback {
...
Checkout.start(presentingViewController: self)
Информация о сбое найдена в Crashlytics:
PayPalCheckout__swift_memcpy168_8() и PayPalCheckoutblock_destroy_helper( )
Последовательность событий в деталях:
(Для удобства привожу номера появляющихся экранов PayPal)
PresentingViewController отобразит следующие экраны:
Экран 1 // Ввод адреса электронной почты:

Экран 3 // Ввод пароля:

Экран 4 / Диалог 2FA:

Экран 5 // повторное появление экрана 1:

Экран 6 // Подтверждение суммы
[img]https://i.sstatic.net /8M1I91KT.png[/img]
Все, начиная с экрана 6, работает нормально.
Теперь: для ошибки важно появление экрана 5. В безошибочном случае этот экран появляется лишь на долю секунды, а затем продолжает экран 6. Но в случае ошибки экран 5 не исчезает. Текст на кнопке этого экрана, которая на экране 1 была «Далее», изменился на вращающееся колесо. Это продолжает вращаться. Когда нажимается вращающаяся кнопка, мое приложение для звонков выходит из строя.
Я делаю вывод, что определенное сочетание в PPPCheckout SDK не позволяет экрану 5 закрыться и продолжить экран 6. Я ожидаю, что это будет основная проблема, вызывающая все проблемы. Факт сбоя при нажатии вращающейся кнопки может быть второстепенной проблемой.
Из других статей о проблемах PayPal я узнал, что это может быть вызвано также конфликтами с другими библиотеками, используемыми в приложение. Вот почему я перечисляю здесь фреймворки, используемые в моем приложении:
Код: Выделить всё
use_frameworks!
pod 'lottie-ios'
pod 'SnapKit', '~> 5.0.0'
pod 'FirebaseAnalytics'
pod 'FirebaseCrashlytics'
pod 'Firebase/Messaging'
pod 'Stripe'
pod 'PayPalCheckout'
pod "Rollbar", "~> 1.4.2"
pod 'Analytics', '~> 4.1'
pod 'AppAuth'
Подробнее здесь: https://stackoverflow.com/questions/786 ... my-ios-app