Я предполагаю, что verifyReceipt
не использует локальную квитанцию, а запрашивает ее в App Store. Для запроса чека требуется согласие пользователя и, следовательно, объясняется, почему он должен ввести свои учетные данные.
Код на Github гласит, что значение по умолчанию forceRefresh
равно false
, но не могли бы вы добавить forceRefresh: false
на verifyReceipt
вызов.
Также не могли бы вы проверить, если receiptString
содержит какие-либо данные?
let receiptData = SwiftyStoreKit.localReceiptData
let receiptString = receiptData.base64EncodedString(options: [])
И если так, пожалуйста, попробуйте сделать SwiftyStoreKit.verifySubscription()
с местная квитанция. Вам все еще нужно вводить свои учетные данные?
Я не знаю, какое приложение вы создаете, но я бы порекомендовал не проверять квитанцию в viewWillAppear
. Местная квитанция в любом случае не изменится (за исключением продлений). Так что делайте это один раз при запуске приложения или, если действительно важно, чтобы пользователь потерял доступ, к тому, что он получит с вашей подпиской, я бы порекомендовал использовать пользовательский сервер. Сервер будет уведомлен, если что-то изменится в статусе подписки пользователя.
Примечание: в данный момент я бы рекомендовал не использовать SwiftyStoreKit
, потому что они проверяют получение на сервере конечная точка от Apple, и это разрешено только с другого сервера. Скорее всего, Apple отклонит ваше приложение.
Предупреждение
Не вызывайте конечную точку сервера verify Store Receipt из вашего приложения. Вы не можете создать надежное соединение между устройством пользователя и App Store напрямую, потому что вы не контролируете ни один конец этого соединения, что делает его уязвимым для атаки «человек посередине».
Источник