我想把一个“率/审查这个应用程序”功能到我的应用程序。

是否存在一种方法能够直接链接到应用商店中他们评论应用的屏幕?所以用户不需要点击主应用程序链接。谢谢。

编辑:由于缺乏回应,开始赏金。为了确保这一点非常清楚:我知道我可以链接到应用商店中我的应用页面,并让用户从那里点击到“审查这款应用”屏幕。问题是是否有可能直接链接到“审查这个应用程序”屏幕,这样他们就不需要点击任何东西。


当前回答

从iOS 10.3开始:

import StoreKit

func someFunction() {
 SKStoreReviewController.requestReview()
}

但是它刚刚发布了10.3版本,所以你仍然需要一些上面描述的旧版本的回退方法

其他回答

这在iOS 9 - 11上运行良好。

还没有测试早期版本。

[NSURL URLWithString:@"https://itunes.apple.com/app/idXXXXXXXXXX?action=write-review"];

Swift 2版本

func jumpToAppStore(appId: String) {
    let url = "itms-apps://itunes.apple.com/app/id\(appId)"
    UIApplication.sharedApplication().openURL(NSURL(string: url)!)
}

从iOS 10.3开始,你可以将action=write-review查询项附加到https://itunes.apple.com/…和https://appsto.re/..。url。在iOS 10.3及以上版本,它会自动打开Write a review,而在较低的iOS版本中,它会回到应用程序的app Store页面。

iOS 11更新: 使用苹果的链接生成器:linkmaker.itunes.apple.com 而追加&action=write-review,似乎是最安全的方法。

编辑:iOS 11解决方案

这是我最初答案的解决方案(见下文)。当使用iOS 11时,以下链接格式可以工作:

https://itunes.apple.com/us/app/appName/idAPP_ID?mt=8&action=write-review

只需将APP_ID替换为特定的应用程序ID。使链接起作用的关键是国家代码。上面的链接使用美国代码,但实际上使用哪个代码并不重要。用户将自动被重定向到他的商店。

iOS 11更新:

似乎其他答案中提供的直接进入评论页面的解决方案都不适用于iOS 11。

最可能的问题是,iOS 11应用商店中的应用页面不再有评论标签。相反,评论现在位于描述和截图的正下方。当然,仍然可以直接访问这个部分(例如通过某种锚),但似乎苹果并不支持/不打算这样做。

使用下列链接之一不再工作。它们仍然会将用户带到App Store应用中,但只是一个空白页面:

itms-apps://itunes.apple.com/app/idYOUR_APP_ID?action=write-review
itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=YOUR_APP_ID&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software

所有仍在使用这些链接的人都应该尽快更新他们的应用,因为将用户引向空白的App Store页面很可能不是你想要的。

链接不涉及审查页面,但到应用程序页面,仍然工作,然而,例如。

itms-apps://itunes.apple.com/app/idYOUR_APP_ID   (same as above, but without write-review parameter)

所以,你仍然可以让用户进入你的应用商店页面,但不再直接进入评论区。用户现在必须手动向下滚动到评论部分来留下他们的反馈。

毫无疑问,这是“用户体验的一大好处,有助于开发者吸引用户留下高质量的评论,而不会惹恼他们”。苹果干得好……

以上方法都是正确的,但是现在使用SKStoreProductViewController可以带来更好的用户体验。要使用它,你需要做以下工作:

implement SKStoreProductViewControllerDelegate protocol in your app delegate add required productViewControllerDidFinish method: - (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController { [viewController dismissViewControllerAnimated: YES completion: nil]; } Check if SKStoreProductViewController class is available and either show it or switch to the App Store: extern NSString* cAppleID; // must be defined somewhere... if ([SKStoreProductViewController class] != nil) { SKStoreProductViewController* skpvc = [[SKStoreProductViewController new] autorelease]; skpvc.delegate = self; NSDictionary* dict = [NSDictionary dictionaryWithObject: cAppleID forKey: SKStoreProductParameterITunesItemIdentifier]; [skpvc loadProductWithParameters: dict completionBlock: nil]; [[self _viewController] presentViewController: skpvc animated: YES completion: nil]; } else { static NSString* const iOS7AppStoreURLFormat = @"itms-apps://itunes.apple.com/app/id%@"; static NSString* const iOSAppStoreURLFormat = @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%@"; NSString* url = [[NSString alloc] initWithFormat: ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0f) ? iOS7AppStoreURLFormat : iOSAppStoreURLFormat, cAppleID]; [[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]]; }