我在应用评级中使用StoreKit。但每当我调用SKStoreReviewController requestReview方法时,应用程序就会卡住,一段时间后审核视图显示,然后应用程序进入正常状态。为什么会发生这种情况,如果有任何解决方案呢?
我还有另一个问题,是写评论是必要的(即)我不想打开应用程序商店撰写评论,我希望该用户只需提交评论并留在应用程序中。
答案 0 :(得分:1)
我刚刚遇到了同样的问题。但是(至少据我所知)仅在我的应用程序的调试版本中。我没有办法解决。但是看来,该kitkit正在尝试连接到某些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调用总是在主线程上进行。
答案 1 :(得分:0)
我调用SKStoreReviewController requestReview方法,应用程序卡住了 过了一会儿,评论视图显示,然后应用程序恢复正常 状态。
在您调用requestReview
的行上放置一个断点,并确保在主线程上发生这种情况。
我不想打开app store来撰写评论,我想要那个用户 只需提交评论并留在应用中。
现在,根据应用商店指南,您绝对会将其用于评论,因此在提交新版和新版时,您可能无法使用其他方法或自定义。现在更新了应用程序。
您可以看到here under section 1.1.7。
我可以使用additional information under this answer来处理审核请求。
答案 2 :(得分:0)
我发现当requestReview
用不良网络调用时,应用程序将卡住。在提交审阅View之前,即使hitTest
方法也不会被调用。一种解决方案是不要在错误的网络中调用requestReview
方法。
答案 3 :(得分:0)
是的,遇到同样的问题。网络不好。例如,仅检查WIFI连接是不够的,但还需要检查连接是否快速并通向互联网。我的用户群有时会使用设备生成的本地WIFI来共享例如其屏幕。但这并不意味着它将带您进入互联网。因此,解决方案是A)检查WIFI是否可用,B)使用尽可能简单的测试来查看是否可以到达那里。我最终看到是否可以访问captive.apple.com。不得不对超时间隔设置严格的限制,现在看来还可以。