Запрашивает ли refreshReceipt учетные данные AppStore?

Я тестировал In App Purchases для iOS в образце приложения. Мне нужно выяснить, могу ли я вызвать refreshReceipt API сразу при запуске, чтобы проверить право пользователя на некоторые подписки на пробный период и т. д.

Я вызвал refreshReceipt в методе application:didFinishLaunching:options AppDelegate, но он запрашивает учетные данные AppStore, в основном пароль пользователя Sandbox. Я не ожидал такого поведения, как указано в документах Apple. Это происходит из-за среды песочницы или это происходит и в производственной среде.

Кроме того, вызывает ли Restore Purchase предупреждение о входе в AppStore. Документы Apple говорят, что это так, но недавно я увидел, что одно из музыкальных приложений на моем телефоне не запрашивает учетные данные, когда я выбрал эту опцию. Возможно, они не вызывают StoreKit restorePurchase API, а используют свой собственный механизм.


person mickeymoon    schedule 12.06.2019    source источник


Ответы (1)


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

Если пользователь вошел в свою учетную запись iTunes, квитанция должна всегда присутствовать при производстве.

Что касается восстановления, я бы предположил, что он следует той же логике (запрашивает подсказку, если квитанция отсутствует), но это противоречит тому, что говорит Apple.

person enc_life    schedule 12.06.2019
comment
Это имеет смысл, так как, если квитанция уже присутствует, сама квитанция формирует основу аутентификации для ее обновления. При его отсутствии может потребоваться аутентификация. И да, это также проверяется в песочнице. - person mickeymoon; 13.06.2019
comment
И я нашел это в документах Apple: The absence of the appStoreReceipt is typical when the application is installed using Xcode or TestFlight. When the application is installed from the App Store or restored from iCloud, the appStoreReceipt will always be present. - apple.co/31yL7cP - person mickeymoon; 14.06.2019
comment
You should also notice that the receipt still doesn't exist after it's refreshed in sandbox unless you made a purchase. — при первоначальной установке через XCode квитанция отсутствует, но при однократном вызове refreshReceipt квитанция становится доступной даже без покупки. Проверено на себе. - person mickeymoon; 27.07.2019