SKStore评审控制器:如何处理限制?

时间:2017-08-15 15:15:03

标签: ios app-store skstorereviewcontroller

我的应用程序没有主动提示用户对App Store上的应用程序进行评级,它只包含一个"评价此应用程序"应用设置中的页面。因此,用户可以手动访问该页面,只有在他点击Do Rate按钮后,他才会被重定向到App Store。

当然,SKStore​Review​Controller的用户界面比将用户重定向到App Store应用程序留下他的评论要简单得多。所以我只是将对App Store URL的调用更改为[SKStore​Review​Controller requestReview]

的调用

这在我的所有测试中都能正常工作:每次点击查看按钮时都会显示评级对话框。

但是我想知道这将如何在实际的调试环境之外表现。根据Apple文档,[SKStore​Review​Controller requestReview]仅限于每个应用每年 3个提示

  • 达到此限制后应用的行为如何?按下评论按钮(= [SKStore​Review​Controller requestReview])会没有效果还是会有某种反馈?
  • 如何知道我是否可以使用[SKStore​Review​Controller requestReview]或者是否必须手动将用户发送到商店?
  • 每个应用每年3次提示究竟是什么意思?这真的是每个应用还是每个应用版本
  • 两个[SKStore​Review​Controller requestReview]来电之间的时间间隔是否有限制?连续三天使用它与每4个月使用它一样合理吗?

1 个答案:

答案 0 :(得分:5)

声明

虽然我不能引用官方回复(并且我无法保证这些发现能保持多久),但我只花了一些时间对逻辑进行逆向工程,这看起来非常简单。 / p>

要求审核:

当您请求审核时,StoreKit会向com.apple.itunesstored.xpc发送一条消息,该消息负责执行和跟踪限制。如果尚未达到请求限制,则XPC流程会跟踪请求并使用应用审核令牌进行响应。否则,它以零响应。

收到XPC响应后,StoreKit会检查令牌是否为零。如果它是非零的,则SKStoreReviewViewController被实例化并呈现在内部UIWindow中。否则,将以静默方式忽略该请求。没有可以收听的回调或通知,虽然XPC处理程序中有一些代码用于记录错误,但我没有在XPC过程中看到任何错误来源。

验证限制

就限制背后的逻辑而言,它非常简单。必须满足两个条件:

  1. 在过去365天内,不论申请版本如何,都不得提示用户超过三次。

  2. 如果用户在之前的请求中对应用进行了评分,则系统不会提示用户,除非:

    • 他们的最后一次评分是超过365天前
    • AND应用程序版本已更改
  3. 虽然Apple建议在请求另一个提示之前几周等待进一步参与,但目前没有任何逻辑可以阻止您在三分钟内三次提示用户。这些提示将计入接下来365天的所有三个提示。

    TL;博士

    • StoreKit会默默地忽略任何多余的请求,您无法确定何时发生这种情况。

    • 虽然您可以自己跟踪您的请求以了解何时需要重定向到App Store而不是请求审核,但Apple可能会在任何时间点更改逻辑。无法以编程方式查询您的限制。

    • 每年三次提示意味着在过去365天内有三次提示,无论应用版本如何。 (更新应用程序会清除"但不会再次提示"要求。)

    • 两次请求审核调用之间没有间隔限制。

    根据您的情况,我建议您使用新的App Store网址,将用户直接带到评论合成屏幕。这样可以更加一致地工作,同时仍然遵循HIG指南(因为它是对按钮按下的响应)。

      

    要自动打开用户可以在App Store中撰写评论的页面,请将查询参数action = write-review附加到您的产品网址。