首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SKStoreReviewController如何检测用户在设置或3次限制下的关机率?

SKStoreReviewController如何检测用户在设置或3次限制下的关机率?
EN

Stack Overflow用户
提问于 2017-03-01 13:49:58
回答 4查看 12.9K关注 0票数 19

从iOS 10.3开始,苹果将审查提示限制在每年3次,并且可以在用户的设置中关闭。

问:我们如何检测到3次限制,或者如果用户关闭了RTA,所以在应用程序中我不会弹出“您喜欢这个应用吗?如果喜欢,可以写评论吗?是/否”,因为如果用户点击“是”,什么都不会出现。

这里真的没有多少信息来自于官方文档:https://developer.apple.com/reference/storekit/skstorereviewcontroller

尽管在应用程序的用户体验流中有意义时,您应该调用此方法,但评级/评审请求视图的实际显示受app策略的控制。由于此方法可能或不显示警报,因此不适合在响应按钮点击或其他用户操作时调用它。

EN

回答 4

Stack Overflow用户

发布于 2017-05-23 14:20:02

前言

询问用户是否喜欢应用程序,可能会导致应用程序被拒绝。下面是一个例子:https://twitter.com/pietbrauer/status/791883047373246464

如果链接死了,这里是Apples响应的摘录:

3.2.2 .您的应用程序包括内容和功能,可以操纵用户评论或图表排名的应用商店。具体来说,你的应用程序过滤用户评论,只指示那些打算给你的应用程序4-5星级评分的用户完成应用商店的评级.

我个人认为,如果你真的试图解决用户的问题,然后给他们留下评论的机会,这可能是一个有效的策略,但问题仍然是苹果是否会这样看。

可能解决办法

  1. 弹出显示,询问用户是否喜欢/喜欢/etc使用该应用程序。
  2. 尝试使用[SKStoreReviewController requestReview]来获得评论。
  3. 检查窗口数目是否已更改,表示已显示弹出窗口。这里的警告是,这并不是100%可靠的,因为其他一些事件可能会导致窗口数目的改变。
  4. 如果窗口的数量保持不变,则使用深度链接将用户转发到应用程序商店。SKStoreReviewController的文档建议使用action=write-review作为查询参数,直接转到评论页面。

下面是一个简单的实现:

代码语言:javascript
运行
复制
// make sure we the current iOS version supports in app reviews
if ([SKStoreReviewController class])
{
    NSUInteger windowCount = [UIApplication sharedApplication].windows.count;
    [SKStoreReviewController requestReview];

    // give the review controller some time to display the popup
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
        if (windowCount < [UIApplication sharedApplication].windows.count)
        {
            // assume review popup showed instead of some other system alert
            // for example show "thank you"
        }
        else
        {
            // open app store to leave review
            NSURL *reviewUrl = [NSURL URLWithString:@"{your-app-url}?action=write-review"];
            [[UIApplication sharedApplication] openURL:reviewUrl];
        }
    });
}

注意:我还没有将这段代码提交到App,所以这只是理论上的。

票数 13
EN

Stack Overflow用户

发布于 2017-03-16 14:17:45

好的,您可以尝试触发请求并查看,但只要没有回调,也没有其他官方方法来检测在调用请求方法时是否显示了评等警报。

可以对不过,有一条路可以绕过 - one的StoreKit类进行调整,以便您可以观察何时打开评等对话框。

上面提到的UIWindow-inspecting方法也可能很有用,但是在方法调用上进行切换可能更可靠。

您也可以使用一些评级管理器,如AppRating,作为一个豆荚,为您管理的东西,但只有在一个天真的水平,通过计数和记住它。

票数 8
EN

Stack Overflow用户

发布于 2018-11-29 19:10:08

我在生产代码中使用这个解决方案--到目前为止,苹果没有拒绝:

代码语言:javascript
运行
复制
NSUInteger windowCount = [UIApplication sharedApplication].windows.count;
// SKStoreReviewController only available for >= 10.3, if needed check for class existence
[SKStoreReviewController requestReview];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
    BOOL shown = windowCount < [UIApplication sharedApplication].windows.count;
    if (shown) {
        //popup was shown
    }
};
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42533520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档