应用商店链接“为该应用评分/评论”


192

我想在我的应用程序中添加“评价/评论此应用程序”功能。

有没有一种方法可以直接链接到他们查看应用程序的应用程序商店中的屏幕?因此,客户不必点击主应用程序链接。谢谢。

编辑:由于缺乏回应,对此开始了赏金。只是为了确保它非常清晰:我知道我可以链接到商店中我的应用程序的页面,并要求用户从此处单击以“查看此应用程序”屏幕。问题是是否可以直接链接到“审阅此应用程序”屏幕,这样他们就不必单击任何内容。


Answers:


349

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

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

这对我有效(Xcode 5-iOS 7- Device!):

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

165
注- “型=紫色+软件” 在那里,它具有从字面上“紫软件” -这不是你公司的名称,它是iPhone应用的开发代号:)我浪费了一个小时之前,我想通了这一点...
库巴·苏德

16
值得注意的是,这在模拟器中不起作用,但可以在实际设备上使用。
约瑟夫

1
仅供参考,这似乎可以在iPad上使用,但是只有第二次,而不是我第一次尝试。(在杀死iTunes和App Store应用程序之后)
Michael

13
在iOS 7上,这会将我带到商店页面,但没有选择“评论”标签。
devios1 2013年

40
作为iOS 10.3的一部分,有一个新的查询参数可以添加到URL:中action=write-review。我已经在iOS 10.2上对其进行了测试,并且可以正常工作,但是我不知道它可以追溯到多远。这将打开“写评论”对话框,而不仅仅是显示评论选项卡。例如:itunes.apple.com/gb/app/...
约瑟夫·达菲

61

更新:

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.
        }
    }
}

在iOS 10.3中工作
Vladimir Shutyuk '17

从appID字符串中删除方括号,即可使用
richc

7
这不再起作用了。<product-url>是什么起作用?action = write-review。请美好understaning检查上述文件developer.apple.com/documentation/storekit/...
KARTHIK卡纳安

38

上面写的所有内容都是正确的。只需一个示例即可插入到应用程序中,并将{YOUR APP ID}更改为实际的应用程序ID,该示例取自iTunesconnect以显示“评论”页面。请注意,如上所述,它不能在Simulator上运行,而只能在设备上运行。
-由于ios 7的更改而更正。

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];
if ([[UIDevice currentDevice].systemVersion integerValue] > 6) theUrl = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@",appId];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:theUrl]];

这似乎为我显示了一个空的App Store页面。似乎您需要在实际ID之前加上“ id”
2014年

appId的括号是否必要?因为我忘了包括它们,并且评分功能仍然可以正常工作。
格伦

1
使用除{您的应用程序ID}以外的数字,@@ 5555555555表示
MEANS-

37

编辑:iOS 11解决方案

这是我的原始答案的解决方案(请参见下文)。使用iOS 11时,以下链接格式将起作用:

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

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

iOS 11更新:

似乎其他答案中提供的直接进入“评论页面”的解决方案都无法在iOS 11上使用。

这个问题最有可能的是,在iOS的11 App Store应用的应用页面确实具有审查标签了。现在,评论位于描述和屏幕截图的正下方。当然,仍然有可能直接到达此部分(例如,使用某种锚),但似乎这是不支持 Apple /不打算这样做。

使用以下链接之一不再起作用。他们仍将用户带到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)

因此,您仍然可以将用户吸引到您的应用商店页面,但不再直接进入评论部分。用户现在必须手动向下滚动到“评论”部分以留下他们的反馈。

毫无疑问,这“给用户体验带来了巨大的好处,它将帮助开发人员吸引用户留下高质量的评论,而不会惹恼他们”。做得好苹果...


SKStoreReviewController。requestReview()是否正常工作?
dev_m

1
关于SKStoreReviewController:“请求StoreKit向用户询问应用程序评论。这可能会或可能不会显示任何UI”。因此,SKStoreReviewController不是解决方案。我尽量避免它。
Fallstreak

26

以上所有方法都是正确的,但是如今使用SKStoreProductViewController可以带来更好的用户体验。要使用它,您需要执行以下操作:

  • 在您的应用程序委托中实现SKStoreProductViewControllerDelegate协议
  • 添加所需的productViewControllerDidFinish方法:

    - (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
      [viewController dismissViewControllerAnimated: YES completion: nil];
    }
  • 检查SKStoreProductViewController类是否可用,然后显示它或切换到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]];
    }

5
这看起来是一个很好的解决方案,但我无法使其正常工作。“写评论”按钮被禁用。起初我以为这是因为我一直在运行我的开发版本,并认为也许必须安装应用商店版本。因此,我创建了一个全新的捆绑包ID,并将其与应用商店版本一起运行,但还是没有运气。根据这篇文章,似乎在iOS 7+ stackoverflow.com
Matt R

@MattR可能是因为您尚未购买该应用程序。我已启用“写评论”按钮,但未执行任何操作。我将不得不测试它是否仅在您购买了该应用程序后才有效。
Kamran Khan 2015年

3
知道如何通过此实现默认打开“评论”选项卡吗?Apple文档仅给我提供了3个参数,但似乎都与我所需的参数无关:SKStoreProductParameterITunesItemIdentifier,SKStoreProductParameterAffiliateToken和SKStoreProductParameterCampaignToken

@KamranKhan,我也看到了。我想知道是否在开发版本中禁用了它。您是否在已交付的应用程序(已签名)中尝试了此操作,以查看其是否有效?
沙米

@Shammi不,我没有检查。
卡姆兰汗

15

iOS 11解决方案

简短的App Store URL无法在新的iOS 11 App Store中正确打开“写评论”界面。例如,这并不能正常工作:

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

要么

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

您可以从以下位置获取应用程序的完整URL:https : //linkmaker.itunes.apple.com/

这样会成功打开iOS 11 App Store中的“撰写评论”界面。

编辑:正如@Theo在下面提到的那样,如果应用程序名称发生更改,则不需要对国家/地区代码进行本地化,并且不需要更新URL中的应用程序名称。

希望苹果公司会尽快为较短的URL修复此问题。参见rdar:// 34498138


3
这是WWDC会话303中引入的iOS 11的正确方法。请注意,该参数mt=8不是必需的。此外,显然国家(地区)代码和URL中的应用名称是必需的,但会被忽略。因此,当应用程序名称更改时,URL不需要本地化或更新。
Theo

@Theo您是正确的,只需更改ID:itms-apps://itunes.apple.com/xy/app/foo/id{your_app_id}?action=write-review
DaveAlden

4
认真吗 为了避免这种情况,我们需要观看WWDC几个小时?
thibaut noah

1
就像其他人的注释一样,新的深层链接自WWDC Session 303说起,自iOS 10.3起可用。
6

12

Swift 2版本

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

11

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

该链接将直接指向``评论选项卡'':

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

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


1
Apple Developer Library中没有将用户定向到“ Reviews Tab”的官方链接。但是,从ios4开始,您会发现保留的关键字,例如viewContentsUserReviews或Apple仍用作url get参数的id。如果您想安全起见,请使用官方的Link Maker linkmaker.itunes.apple.com/en-us
Satinos

1
@Nehal女士,问题要求提供链接。它们实际答案,而不是答案的指针。
Tobi Nary

9

在iOS7中,将您的应用切换到App Store进行评分和查看的URL已更改:

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

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

对于iOS 6及更高版本,以前的答案中的URL正常工作。

资料来源:Appirater

享受编码..!


它可以在iPhone上使用。从未在iPad上进行过测试。该链接可在iPhone上使用。尝试调试!
萨希尔·玛哈詹

2
我得到一个白色正方形,是因为我没有意识到您在网址中的数字前加上了“ id”。我刚刚尝试过“ ... / app / 123123123”,而不是:“ ... / app / id123123123”。哈哈,我没有正确阅读而感到羞耻。希望这对任何意外这样做的人也有所帮助。
cclogg

8

iOS 11+(新的应用商店)中,有一种新的方法可以执行此操作。您可以直接打开“写评论”对话框。

iOS 11示例:

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

要么

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

笔记:

  • 国家代码为必填/us/)。可以是任何国家/地区代码,没关系。
  • 将应用程序ID(1137397744)更改为您的应用程序ID(从iTunes URL获取)。
  • 如果要支持较旧的iOS版本(11之前的版本),则希望某些条件逻辑仅在OS版本大于或等于11时以这种方式链接。

8

对我而言,使用此URL是完美的解决方案。它将用户直接带到Write a Review section。感谢@Joseph Duffy。一定要试

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

对于示例代码,请尝试以下操作:

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


2
请不要对多个问题添加相同的答案。回答最好的一个,并将其余的标记为重复。请参阅为几个问题添加重复答案是否可以接受?
g00glen00b

1
好的,谢谢。我对此并不陌生,正在学习。感谢您的指导,请牢记这一点。
Ankit Kumar Gupta

7

从iOS 10.3开始,您可以将action=write-review查询项附加到您的https://itunes.apple.com/...https://appsto.re/...URL。在iOS 10.3及Write a review更高版本上,它将自动打开,而在较低iOS版本上,它将退回到该应用程序的“应用程序商店”页面。

iOS 11更新:使用Apple的linkmaker:linkmaker.itunes.apple.com 和append &action=write-review,似乎是最安全的方法。


4

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

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

编辑:可以通过iTunes Link Maker生成到您的应用程序的链接。该站点有一个教程。


谢谢 。。。我正在寻找的是iTunes链接!
William Jockusch 2010年

2
尝试使用iTunes Link Maker。我的理解是,它会启动用户的iTunes副本以浏览商店。我将编辑答案以在其中放置链接。
肯尼斯(Kynth)2010年

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

4

Swift 2版本实际上可带您进入iOS 8和iOS 9上的应用程序的查看页面:

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

3

对于> = 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];
    }
}


3

通过SKStoreProductViewController链接到AppStore中的任何App

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

要将您的应用中的应用商店中的任何应用的产品屏幕与您的任何应用ViewController一起显示,请执行以下步骤:

  1. 项目设置中添加 StoreFit.framework (“目标”,“构建阶段”->“使用库链接二进制文件”)
  2. 将StoreKit导入到ViewController类中
  3. 使您的ViewController符合此协议 SKStoreProductViewControllerDelegate
  4. 创建显示StoreView的方法用所需的产品屏幕显示
  5. 关闭 StoreView

但最重要的是:由于某种原因,这在模拟器中不起作用-您必须在具有Internet连接的真实设备上进行构建和安装。

  1. 将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)
    }
}

2

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

-(void)rateApp {

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

2

接受的答案无法加载“审阅”选项卡。我发现以下方法可以加载没有“详细信息”选项卡的“查看”选项卡。

[[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}用您的应用程序应用商店存储应用ID 替换。


2

SWIFT 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)
        }
    }

2

Apple开发人员文档中的报价

此外,您可以继续在应用程序的设置或配置屏幕中包含一个永久链接,该链接会深链接至您的App Store产品页面。要自动打开一个页面,用户可以在App Store上写评论,请将查询参数action = write-review附加到您的产品URL。

因此,URL将如下所示:

itms-apps://itunes.apple.com/app/id YOUR_APP_ID?action = write-review


2

在iOS 9-11上运行良好。

尚未在较早版本上进行测试。

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

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

0

从iOS 10.3开始:

import StoreKit

func someFunction() {
 SKStoreReviewController.requestReview()
}

但它刚刚在10.3版中发布,因此您仍需要针对上述旧版本使用一些后备方法


0

如果您的应用已通过Beta测试,但尚未发布,则可以使用应用评论链接,但该应用不会留下评论。

  1. 登录到 iTunes Connect
  2. 请点击 My Apps
  3. 点击App Icon您感兴趣的
  4. 确保您在App Store页面上
  5. 转到App Information部分(它将自动带您到那里)
  6. 在该页面的底部,有一个蓝色链接显示View on App Store。单击它,它将打开一个空白页。复制页面顶部网址栏中的内容,这就是您的应用评论链接。该应用程序上线后即可上线。

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.