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

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

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


iOS 4抛弃了“删除速率”功能。

目前,对应用进行评级的唯一方式是通过iTunes。

编辑:链接可以通过iTunes Link Maker生成到你的应用。这个网站有一个教程。


对于低于iOS 7的版本,请使用旧版本:

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID

这在我的端工作(Xcode 5 - iOS 7 -设备!):

itms-apps://itunes.apple.com/app/idYOUR_APP_ID

对于iOS 8或更高版本:

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

代码片段(你可以复制粘贴它):

#define YOUR_APP_STORE_ID 545174222 //Change this one to your ID

static NSString *const iOS7AppStoreURLFormat = @"itms-apps://itunes.apple.com/app/id%d";
static NSString *const iOSAppStoreURLFormat = @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%d";

[NSURL URLWithString:[NSString stringWithFormat:([[UIDevice currentDevice].systemVersion floatValue] >= 7.0f)? iOS7AppStoreURLFormat: iOSAppStoreURLFormat, YOUR_APP_STORE_ID]]; // Would contain the right link

上面写的一切都是正确的。这只是一个插入到应用中的示例,并将{YOUR app ID}更改为实际的应用ID,从iTunesconnect中获取,以显示评论页面。请注意,正如上面所评论的,它不能在模拟器上工作-只是在设备上。

修正,因为iOS 7的变化。 修正iOS 10+ openURL更改 对于iOS 13.6+的审查URL是可以访问的,在版本6.0之前使用。它直接开到评论页面。代码更新

    NSString * appId = @"{YOUR APP ID}";
    NSString * theUrl = [NSString  stringWithFormat:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=%@&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software",appId];
    int vers = (int) [[UIDevice currentDevice].systemVersion integerValue];
    if (vers > 6 && vers < 12 ) theUrl = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@",appId];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:theUrl] options:@{} completionHandler:nil];

在iOS7中,将你的应用程序切换到app Store进行费率和审查的URL已经更改:

itms-apps://itunes.apple.com/app/idAPP_ID

APP_ID需要替换为您的应用程序ID。

对于iOS 6和更老版本,之前答案中的URL工作正常。

来源:Appirater

享受编码. . ! !


这是我在我的应用程序中使用的代码;

-(void)rateApp {

     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[@"itms-apps://itunes.apple.com/app/" stringByAppendingString: @"id547101139"]]]; 
}

NSString *url = [NSString stringWithFormat:@"https://itunes.apple.com/us/app/kidsworld/id906660185?ls=1&mt=8"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

以上方法都是正确的,但是现在使用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]]; }


Swift 2版本

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

所有以前的链接不再直接到“评论”标签,

这个链接将直接指向“评论标签”: ​

https://itunes.apple.com/app/viewContentsUserReviews?id=AppID

or ​

itms-apps: / / itunes.apple.com/app/viewContentsUserReviews ? id = AppID


在iOS 8和iOS 9上,Swift 2版本会将你带到应用的评论页面:

let appId = "YOUR_APP_ID"
let url = "itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=\(appId)"

UIApplication.sharedApplication().openURL(NSURL(string: url)!)

更新:

Swift 5.1, Xcode 11

在Real Device iOS 13.0上测试(保证正常工作)

import StoreKit

func rateApp() {

    if #available(iOS 10.3, *) {

        SKStoreReviewController.requestReview()
    
    } else {

        let appID = "Your App ID on App Store"
        let urlStr = "https://itunes.apple.com/app/id\(appID)" // (Option 1) Open App Page    
        let urlStr = "https://itunes.apple.com/app/id\(appID)?action=write-review" // (Option 2) Open App Review Page
        
        guard let url = URL(string: urlStr), UIApplication.shared.canOpenURL(url) else { return }
        
        if #available(iOS 10.0, *) {
            UIApplication.shared.open(url, options: [:], completionHandler: nil)
        } else {
            UIApplication.shared.openURL(url) // openURL(_:) is deprecated from iOS 10.
        }
    }
}

已接受的答案未能加载“评审”选项卡。我发现下面的方法加载“审查”标签没有“详细信息”标签。

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id={APP_ID}&pageNumber=0&sortOrdering=2&mt=8"]];

将{APP_ID}替换为你的app store app id。


对于>= iOS8:(简化@EliBud的回答)。

#define APP_STORE_ID 1108885113

- (void)rateApp{
    static NSString *const iOSAppStoreURLFormat = @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%d";

    NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:iOSAppStoreURLFormat, APP_STORE_ID]];

    if ([[UIApplication sharedApplication] canOpenURL:appStoreURL]) {
        [[UIApplication sharedApplication] openURL:appStoreURL];
    }
}

我在iOS 10中也有同样的问题,我可以打开iTunes费率部分调用:

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=YOUR_APP_ID&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=7

基本上它把最后一个url变量改为"mt=7"

干杯


斯威夫特3

fileprivate func openAppStore() {
        let appId = "YOUR_APP_ID"
        let url_string = "itms-apps://itunes.apple.com/app/id\(appId)"
        if let url = URL(string: url_string) {
            UIApplication.shared.openURL(url)
        }
    }

通过SKStoreProductViewController链接到AppStore中的任何应用程序

很容易通过SKStoreProductViewController链接到应用商店的应用程序。但是我有点纠结,所以我决定在这里展示整个过程和一些必要的代码。这种技术还可以确保始终使用正确的商店(对于本地化应用程序很重要)。

要在你的应用程序商店中显示任何应用程序的产品屏幕,你的任何应用程序ViewControllers遵循以下步骤:

在项目设置中添加StoreKit.framework(目标,构建阶段->链接二进制库 导入StoreKit到ViewController类中 使你的ViewController符合这个协议 SKStoreProductViewControllerDelegate 创建方法,将StoreView显示为所需的产品屏幕 解散StoreView

但最重要的是:出于某种原因,这在模拟器中不起作用——你必须在具有互联网连接的真实设备上构建和安装。

添加StorKit.framework到你的项目:

SWIFT 4:这是根据前面描述的步骤编写的代码:

    // ----------------------------------------------------------------------------------------
// 2. Import StoreKit into the ViewController class
// ----------------------------------------------------------------------------------------
import StoreKit

// ...

// within your ViewController

    // ----------------------------------------------------------------------------------------
    // 4. Create the method to present the StoreView with the product screen you want
    // ----------------------------------------------------------------------------------------
    func showStore() {
        
        // Define parameter for product (here with ID-Number)
        let parameter : Dictionary<String, Any> = [SKStoreProductParameterITunesItemIdentifier : NSNumber(value: 742562928)]
        
        // Create a SKStoreProduktViewController instance
        let storeViewController : SKStoreProductViewController = SKStoreProductViewController()
        
        // set Delegate
        storeViewController.delegate = self
        
        // load product
        storeViewController.loadProduct(withParameters: parameter) { (success, error) in
        
            if success == true {
                // show storeController
                self.present(storeViewController, animated: true, completion: nil)
            } else {
                print("NO SUCCESS LOADING PRODUCT SCREEN")
                print("Error ? : \(error?.localizedDescription)")
            }
        }
    }
    
// ...

// ----------------------------------------------------------------------------------------
// 3. Make your ViewController conforming the protocol SKStoreProductViewControllerDelegate
// ----------------------------------------------------------------------------------------
extension ViewController : SKStoreProductViewControllerDelegate {
    
    // ----------------------------------------------------------------------------------------
    // 5. Dismiss the StoreView
    // ----------------------------------------------------------------------------------------
    func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
        print("RECEIVED a FINISH-Message from SKStoreProduktViewController")
        viewController.dismiss(animated: true, completion: nil)
    }
}

使用这个URL对我来说是完美的解决方案。它将用户直接带到Write a Review部分。感谢@Joseph Duffy。必须努力

URL = itms-apps://itunes.apple.com/gb/app/idYOUR_APP_ID_HERE?action=write-review&mt=8 用你的AppId替换YOUR_APP_ID_HERE

对于一个示例代码,请尝试这样做:

Swift 3, Xcode 8.2.1:

 let openAppStoreForRating = "itms-apps://itunes.apple.com/gb/app/id1136613532?action=write-review&mt=8"
 if let url = URL(string: openAppStoreForRating), UIApplication.shared.canOpenURL(url) {
      UIApplication.shared.openURL(url)
 } else {
      showAlert(title: "Cannot open AppStore",message: "Please select our app from the AppStore and write a review for us. Thanks!!")
 }

这里showAlert是UIAlertController的自定义函数。


从iOS 10.3开始:

import StoreKit

func someFunction() {
 SKStoreReviewController.requestReview()
}

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


引用自苹果开发者文档

方法中继续包含持久链接 应用程序的设置或配置屏幕,深度链接到您的 App Store产品页面。自动打开用户所在的页面 可以在App Store写评论,附加查询参数吗 action=写评论到你的产品URL。

URL是这样的:

= write-review itms-apps: / / itunes.apple.com/app/idYOUR_APP_ID ?行动


let rateUrl = "itms-apps://itunes.apple.com/app/idYOUR_APP_ID?action=write-review"
if UIApplication.shared.canOpenURL(rateUrl) {
    UIApplication.shared.openURL(rateUrl)
}

从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)

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

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


iOS 11解决方案

在新的iOS 11应用商店中,短的应用商店url无法正确打开“写评论”界面。例如,这是行不通的:

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

解决方法是在URL中包含两个字母的国家代码和应用程序名称,例如:

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

or

itms-apps://itunes.apple.com/us/app/twitter/id333903271?mt=8&action=write-review

你可以从这里获得应用程序的完整URL: https://linkmaker.itunes.apple.com/

这将成功打开iOS 11应用商店中的“写评论”界面。

编辑:正如下面@Theo提到的,如果应用程序名称发生变化,国家代码不需要本地化,URL中的应用程序名称也不需要更新。

希望苹果能尽快解决这个问题。看到rdar: / / 34498138


在iOS 11+(新的应用商店)中有一种新方法来做到这一点。您可以直接打开“Write a Review”对话框。

以iOS 11为例:

itms-apps://itunes.apple.com/us/app/id1137397744?action=write-review

or

https://itunes.apple.com/us/app/id1137397744?action=write-review

注:

需要国家代码(/us/)。可以是任何国家代码,没关系。 将应用id(1137397744)更改为您的应用id(从iTunes URL获取)。 如果你想要支持旧的iOS版本(11之前),你需要一些条件逻辑,只有当OS版本大于或等于11时才会以这种方式链接。


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

还没有测试早期版本。

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

如果你的应用已经通过了Beta测试,但还没有上线,那么应用评论链接是可用的,但它不会上线,不能留下评论。

登录iTunes Connect 点击我的应用 点击感兴趣的应用图标 确保你在App Store页面上 进入应用程序信息部分(它会自动带你到那里) 在页面底部有一个蓝色链接,上面写着在App Store上查看。点击它,它将打开一个空白页。复制页面顶部url栏中的内容,这就是你的应用评论链接。一旦应用程序上线,它就会上线。


Swift 5在iOS14中测试

打开5颗星的回顾窗口

private func openReviewInAppStore() {
    let rateUrl = "itms-apps://itunes.apple.com/app/idYOURAPPID?action=write-review"
    if UIApplication.shared.canOpenURL(URL.init(string: rateUrl)!) {
        UIApplication.shared.open(URL.init(string: rateUrl)!, options: [:], completionHandler: nil)
    }
}

您可以在url启动器函数中使用此链接

https://apps.apple.com/app/APP_ID?action=write-review


知道你的苹果应用程序id,它是你的itunes应用程序url后id字段的数字。

比如:https://itunes.apple.com/app/id148688859, 148688859是你的应用id。

然后,使用正确的应用程序id重定向到此url: https://itunes.apple.com/app/idYOUR_APP_ID?action=write-review。