从iOS 10.3开始,苹果将审查提示限制在每年3次,并且可以在用户的设置中关闭。
问:我们如何检测到3次限制,或者如果用户关闭了RTA,所以在应用程序中我不会弹出“您喜欢这个应用吗?如果喜欢,可以写评论吗?是/否”,因为如果用户点击“是”,什么都不会出现。
这里真的没有多少信息来自于官方文档:https://developer.apple.com/reference/storekit/skstorereviewcontroller
尽管在应用程序的用户体验流中有意义时,您应该调用此方法,但评级/评审请求视图的实际显示受app策略的控制。由于此方法可能或不显示警报,因此不适合在响应按钮点击或其他用户操作时调用它。
发布于 2017-05-23 14:20:02
前言
询问用户是否喜欢应用程序,可能会导致应用程序被拒绝。下面是一个例子:https://twitter.com/pietbrauer/status/791883047373246464
如果链接死了,这里是Apples响应的摘录:
3.2.2 .您的应用程序包括内容和功能,可以操纵用户评论或图表排名的应用商店。具体来说,你的应用程序过滤用户评论,只指示那些打算给你的应用程序4-5星级评分的用户完成应用商店的评级.
我个人认为,如果你真的试图解决用户的问题,然后给他们留下评论的机会,这可能是一个有效的策略,但问题仍然是苹果是否会这样看。
可能解决办法
[SKStoreReviewController requestReview]
来获得评论。SKStoreReviewController
的文档建议使用action=write-review
作为查询参数,直接转到评论页面。下面是一个简单的实现:
// 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,所以这只是理论上的。
发布于 2017-03-16 14:17:45
好的,您可以尝试触发请求并查看,但只要没有回调,也没有其他官方方法来检测在调用请求方法时是否显示了评等警报。
可以对不过,有一条路可以绕过 - one的StoreKit
类进行调整,以便您可以观察何时打开评等对话框。
上面提到的UIWindow
-inspecting方法也可能很有用,但是在方法调用上进行切换可能更可靠。
您也可以使用一些评级管理器,如AppRating
,作为一个豆荚,为您管理的东西,但只有在一个天真的水平,通过计数和记住它。
发布于 2018-11-29 19:10:08
我在生产代码中使用这个解决方案--到目前为止,苹果没有拒绝:
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
}
};
https://stackoverflow.com/questions/42533520
复制相似问题