我在应用程序评级中使用StoreKit。但每当我调用SKStoreReviewController requestReview方法时,应用程序就会卡住,一段时间后审核视图显示,然后应用程序进入正常状态。为什么会发生这种情况,如果有任何解决方案呢?
我有另一个问题,是写评论是必要的(即)我不想打开应用商店写评论,我希望该用户只是提交评论并留在应用程序中。
我刚遇到同样的问题。但是(至少据我所知)只在我的应用程序的调试版本中。我无法修复它。但似乎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调用。这是只有Apple必须解决的问题。一个API函数可以将应用程序冻结一段未知的时间并不好。
编辑:
注意:我的requestReview调用始终在主线程上进行。
我调用SKStoreReviewController requestReview方法,应用程序卡住了一段时间后审核View呈现然后应用程序进入正常状态。
在您调用requestReview
的行上放置一个断点,并确保在主线程上发生这种情况。
我不想打开应用程序商店来撰写评论,我希望该用户只需提交评论并保留在应用程序中。
现在,根据应用商店指南,您绝对会将其用于评论,因此您现在无法在提交新的和更新的应用时使用其他方法或自定义。
你可以看到here under section 1.1.7。
我有additional information under this answer,也可用于处理审查请求。
我发现当requestReview
用坏网络调用时应用程序会卡住。在审查视图呈现之前,即使是hitTest
方法也不会被调用。可能一个解决方案就是不要在糟糕的网络中调用requestReview
方法。