7

我已将以下内容添加到我的 AppDelegate 并导入了 StoreKit。审查模式按预期在启动时弹出。我的问题是,我是这个被调用频率的负责人还是苹果?文档仍然很简单,但我在其他地方读到,Apple将每个用户每年限制为 3 次,我可以相信他们在显示之间添加适当的时间(最好是几个月)?

在开发中,每次我启动应用程序时都会弹出它,我不希望我的用户不得不在多次启动中关闭它 3 次,然后在 12 个月内不再被询问。

现在 10.3 已经发布,我对其他人如何解决这个问题很感兴趣。

干杯。

    if #available(iOS 10.3, *) {
        print("Show Review Controller")
        SKStoreReviewController.requestReview()
    } else {
        print("Cannot Show Review Controller")
        // Fallback on earlier versions
    }
4

2 回答 2

10

我添加了一个存储在UserDefaults. 每次发生特定操作时,它都会增加,当count % 10 == 0我打电话时SKStoreReviewController.requestReview()(普通用户可能会在每次使用应用程序时增加一次计数)

这可能会或可能不会显示审查请求,但它确保它不会显示得太频繁。

或者,考虑存储lastReivewAttemptDate请求之间的 a 和最小间隔。

于 2017-03-28T11:59:22.747 回答
2

您不负责计算这一点 - 但这样做可以让您在可能用完电话时更具战略性。

在 NSUserDefaults 中为每个调用保存时间戳似乎是最灵活的跟踪方式。这就是我在 obj-c 中所做的:

// Rate app action for iOS 10.3+
-(void)displayDialog {
    [SKStoreReviewController requestReview];
    [self storeTimestamp:PromptTimestampsKey];
}

- (void)storeTimestamp:(NSString *)key {
    NSNumber *todayTimestamp = [NSNumber numberWithDouble:[[NSDate date] timeIntervalSince1970]];

    NSMutableArray *timestamps = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults]  arrayForKey:key]];

    // Remove timestamps more than a year old
    for (NSNumber *timestamp in timestamps) {
        if ((todayTimestamp.doubleValue - timestamp.doubleValue) > SecondsInYear) {
            [timestamps removeObject:timestamp];
        }
    }

    // Store timestamp for this call
    [timestamps addObject:todayTimestamp];
    [[NSUserDefaults standardUserDefaults] setObject:timestamps forKey:key];
}
于 2017-06-16T21:00:42.610 回答