Контроллер SKStore Review: как обрабатываются ограничения?
Мое приложение не предлагает пользователю активно оценивать приложение в App Store, оно включает только страницу "Оценить это приложение" в настройках приложения. Таким образом, пользователь имеет доступ к странице вручную и только после того, как он нажмет на Do Rate
Кнопка, он перенаправлен в App Store.
Конечно, интерфейс SKStoreReviewController
гораздо проще, чем перенаправить пользователя в приложение App Store, чтобы оставить свой отзыв. Поэтому я просто изменил вызов URL-адреса App Store на вызов [SKStoreReviewController requestReview]
,
Это прекрасно работает во всех моих тестах: диалоговое окно рейтинга отображается каждый раз, когда я нажимаю кнопку обзора.
Однако мне интересно, как это будет вести себя вне среды отладки в реальной жизни. Согласно документам Apple, [SKStoreReviewController requestReview]
ограничено до 3 запросов на приложение в год.
- Как будет вести себя приложение после достижения этого предела? Будет нажатие кнопки обзора (=
[SKStoreReviewController requestReview]
) не имеют никакого эффекта или будут какие-то отзывы? - Как я могу узнать, могу ли я использовать подоконник
[SKStoreReviewController requestReview]
или если я должен отправить пользователя в магазин вручную? - Что именно означает 3 запроса на приложение в год? Это действительно для приложения или для версии приложения?
- Есть ли ограничение на интервал между двумя
[SKStoreReviewController requestReview]
звонки? Правильно ли использовать его три дня подряд, как использовать его каждые 4 месяца?
1 ответ
отказ
Хотя я не могу процитировать официальный ответ (и я не могу гарантировать, как долго эти результаты останутся верными), я просто потратил некоторое время на обратную разработку логики, и она кажется довольно простой.
Запрос обзора:
Когда вы запрашиваете отзыв, StoreKit отправляет сообщение com.apple.itunesstored.xpc
, который отвечает за соблюдение и отслеживание лимитов. Если пределы запроса не были достигнуты, процесс XPC отслеживает запрос и отвечает маркером проверки приложения. В противном случае он отвечает ноль.
После получения ответа XPC StoreKit проверяет, был ли токен нулевым. Если это не ноль, SKStoreReviewViewController
создается и представляется во внутреннем UIWindow
, В противном случае запрос игнорируется. Нет обратного вызова или уведомления, которые вы можете прослушать, и хотя в обработчике XPC есть некоторый код для регистрации ошибок, я не видел источников ошибок в процессе XPC.
Проверка лимитов
Что касается логики за пределами, это довольно просто. Есть два условия, которые должны быть выполнены:
Пользователь не должен запрашиваться более трех раз за последние 365 дней, независимо от версии приложения.
Пользователь не должен получать запрос, если он оценил приложение по предварительному запросу, кроме случаев, когда:
- Их последний рейтинг был более 365 дней назад
- И версия приложения изменилась
Несмотря на то, что Apple рекомендует подождать еще несколько недель, прежде чем запрашивать другое приглашение, на данный момент нет логики, которая мешает вам трижды запросить у пользователя подсказки. Эти подсказки будут учитываться для всех трех ваших подсказок на следующие 365 дней.
ТЛ; др
StoreKit будет игнорировать любые лишние запросы, и вы не сможете определить, когда это произойдет.
Хотя вы можете отслеживать свои запросы самостоятельно, чтобы знать, когда вам нужно перенаправить в App Store, а не запрашивать проверку, Apple может изменить логику в любой момент времени. Нет способа программно запросить ваши лимиты.
Три запроса в год означают три запроса в течение последних 365 дней, независимо от версии приложения. (Обновление приложения отменяет требование "никогда больше не запрашиваться".)
Интервал между двумя вызовами для просмотра запросов не ограничен.
В вашей ситуации я бы порекомендовал использовать новый URL-адрес App Store, который выводит пользователей непосредственно на экран составления обзора. Это будет работать более последовательно, все еще следуя рекомендациям HIG (так как это в ответ на нажатие кнопки).
Чтобы автоматически открыть страницу, на которой пользователи могут написать отзыв в App Store, добавьте параметр запроса action=write-review к URL вашего продукта.