Метод requestReview SKStoreReviewController требует времени для отображения, и приложение застревает, пока не будет представлен ReviewController - PullRequest
0 голосов
/ 24 мая 2018

Я использую StoreKit для в рейтинге приложений.но всякий раз, когда я вызываю метод requestReview SKStoreReviewController, приложение застревает, и через некоторое время открывается представление View, а затем приложение переходит в нормальное состояние.Почему это произошло, и если есть какое-то решение для этого?

У меня есть другой вопрос, необходимо ли написать отзыв (т. Е. Я не хочу открывать магазин приложений для написания обзора, я хочу, чтобы этот пользователь)просто оставьте отзыв и оставайтесь в приложении.

Ответы [ 3 ]

0 голосов
/ 06 июля 2018

Я выяснил, что приложение застревает, когда requestReview вызывается из-за плохой сети. Перед представлением обзора View, даже метод hitTest не будет вызван. Возможно, одним из решений является то, что не вызывать requestReviewметод в плохой сети.

0 голосов
/ 04 марта 2019

Я только что столкнулся с этой же проблемой.Но (по крайней мере, насколько я могу судить) только в отладочной версии моего приложения.У меня нет возможности это исправить.Но похоже, что storekit пытается подключиться к какому-либо серверу Apple, и иногда это подключение занимает много времени.

И пока соединение пытается установить, вся основная очередь останавливается.Ничего не проходит.

Я сделал системный журнал.И в какой-то момент я вижу, что это происходит:

Mar  4 18:17:37 RetepV StoreKitUIService(CFNetwork)[14436] <Notice>: Task <F9F9DB85-B649-43CC-A3D6-B8E931BF9ADA>.<27> resuming, QOS(0x19)
Mar  4 18:17:37 RetepV StoreKitUIService(CFNetwork)[14436] <Notice>: Task <F9F9DB85-B649-43CC-A3D6-B8E931BF9ADA>.<27> {strength 0, tls 4, ct 0, sub 0, sig 1, ciphers 0, bundle 1, builtin 0}
Mar  4 18:17:37 RetepV StoreKitUIService(CFNetwork)[14436] <Notice>: TIC Enabling TLS [29:0x280586a00]
Mar  4 18:17:37 RetepV StoreKitUIService(CFNetwork)[14436] <Notice>: TIC TCP Conn Start [29:0x280586a00]
Mar  4 18:17:37 RetepV StoreKitUIService(libnetwork.dylib)[14436] <Notice>: [C29 Hostname#68464834:443 tcp, url hash: 11d80191, tls] start
Mar  4 18:17:37 RetepV StoreKitUIService(libnetwork.dylib)[14436] <Notice>: nw_connection_report_state_with_handler_locked [C29] reporting state preparing
Mar  4 18:17:37 RetepV StoreKitUIService(CFNetwork)[14436] <Notice>: Task <F9F9DB85-B649-43CC-A3D6-B8E931BF9ADA>.<27> setting up Connection 29
.

Затем происходит множество вещей, не связанных с соединением C29.И первый раз, когда я вижу, что C29 снова всплывает, через 31 секунду:

Mar  4 18:18:08 RetepV StoreKitUIService(libnetwork.dylib)[14436] <Notice>: nw_endpoint_flow_protocol_connected [C29.1 IPv4#9566630f:443 in_progress channel-flow (satisfied)] Transport protocol connected
.

И я уже заметил, что мое приложение зависло примерно на 30 секунд.

Я не вижукак я могу это исправить, это вызов API ровно в 1 строку.Это то, что только Apple должна исправить.Функция API, которая может заморозить приложение на некоторое неизвестное время, не годится.

Редактировать:

ПРИМЕЧАНИЕ. Мой запрос requestReview всегда выполняется в главном потоке.

0 голосов
/ 24 мая 2018

Я вызываю метод SKStoreReviewController requestReview, приложение застревает, и через некоторое время обзор отображается, а затем приложение переходит в нормальное состояние.

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

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

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

Вы можете увидеть здесь, в разделе 1.1.7 .

У меня есть дополнительная информация по этому ответу , которая также может быть полезна для обработки запросов на проверку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...