iTunes审查URL和iOS 7(要求用户对我们的应用程序评分)AppStore显示空白页


158

有人知道用于要求用户对我们的应用程序进行评级并直接在评级页面上为他打开​​App Store的技术是否仍在iOS 7上运行?

我曾经从我的应用程序打开此网址:

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

但看起来它不再工作了(AppStore显示空白页)。我也尝试过这个网址,如果没有运气:

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

看完UAAppReviewManager的源代码后,看来iOS7确实存在一个pb。因此他们使用标准的App URL,因此用户需要搜索“汇率”按钮:-/
Samuel

看来ios 7的评论链接不起作用。我将代码更改为常规应用程序链接URL。用户将必须单击查看按钮。
艾美奖

4
您发布的第二个链接现在可以在iOS 7上使用!转到评论页面
Maximilian Litteral 2014年

对我来说...第一个URL似乎有效。我刚刚替换了我的身份证号码
Nilesh Kumar

Answers:


198

从iOS7开始,URL已更改,无法直接进入审阅页面,而只能定向到应用程序

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

需要将APP_ID替换为您的应用程序ID。根据问题中的应用程序ID,将显示以下内容

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

注意数字前面的id ...该字符串是id 353372460,而不仅仅是353372460

对于iOS7之前的任何版本,都需要使用“旧” URL,只有那些URL才能带您直接进入查看页面。您还应该注意,这些调用仅在设备上有效。由于没有安装App Store应用程序,因此在模拟器中运行它们将无济于事。


看一下Appirater实现。https://github.com/arashpayan/appirater

无法提供有关电话间隙的详细信息(从未使用过)。但这基本上取决于检查您的用户正在运行的iOS版本,然后使用旧的URL或新的iOS7 URL。


18
实际上,这将打开该应用程序,而不是“审阅”选项卡。
Idan

3
是的,这是真的,但是在iOS7下,这是目前可以实现的最好的结果。
弗兰克(Frank)

新的Facebook应用程序在iOS 7中显示了应用程序内部的应用程序商店页面。有人知道他们是如何做到的吗?
EricS

1
与iRate不同,您必须使用上面带有/ LANGUAGE / app / idAPP_ID信息的链接
丹尼尔

6
您想删除语言,如果设备设置为不等同于iTunes商店的语言,Appirater也有同样的问题,您会得到一个空白页(例如,英式英语),如果您删除了该语言,它仍然可以正常工作并打开了商店用所有者的语言。
克里斯,

166

以下网址可在iOS 7.1上完美运行:

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

哪里xxxxxxxx是您的应用ID。

更新。在iOS 9.3.4和iOS 10 GM上工作(由Jeet)


5
这在8.0 DP 5中再次被破坏!现在将其报告为错误,并希望我们可以在生产版本中对其进行修复。
克里夫·里鲍多

6
对我来说可以直接进入App Store.app评论页面。内置在Xcode 6.验证在IOS 8.0,的iOS 7.1.2,iPhone 5和iPhone 4.
jclee

7
我发现。类型应始终等于紫色软件-这是苹果的事情。
马特·帕金斯

2
它可以在iOS 8.3的iPhone和iPad上正常使用。刚测试过:)谢谢!
2015年

2
在iPod Gen 5,iOS 9.0.1上正常工作。
haxpor

47

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

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

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

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

1
这会在我的iOS7设备(使用Xcode 5)上显示一个空白屏幕,这是我仍在使用iOS6的URL。对于iOS 7,我使用的是我的答案中详细介绍的一种。奇怪的是它为您工作。
弗兰克(Frank)

@Frank您如何打开此链接?我正在使用iRate,并且正在使用此链接,也许尝试使用它并检查与您的代码的确切区别是什么。
伊丹2013年

2
我正在使用以下代码 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:ITUNES_APP_URL_IOS7]];
Frank

1
self.appStoreID甚至不编译
NGB

1
在iOS 8 DP5中再次被破坏。开始将其报告为错误,并希望它们通过生产进行修复!否则,我们将等到8.1。
克里夫·里鲍多

18

单行代码简单替代方案: **另请参见下面的模拟器注释**

http://itunes.apple.com/app/idAPP_ID

编辑:既然iOS 7.1允许直接链接到App Store中的“评论”选项卡,就值得投入额外的代码行直接到达那里:其余内容请参见其他答案。

在这里,我们使用 http: 而不是 itms-apps:让iOS完成其余工作

在iOS 6.1和7设备(iPad / iPhone / iPod touch 4)上测试时,我得到了相同的结果。

具体来说,适用于iOS 6的快捷方式将用户带到选项卡,而不是DetailsReviews选项卡。

Purple+Software链接将用户带到iOS 6中的“ Reviews”选项卡,如果您知道如何检查操作系统,则显然是首选。

重要说明:这会在iOS 5.1、6.1和7的模拟器中引起错误。
无法打开页面Safari无法打开页面,因为地址无效(我们知道在模拟器之外,任何浏览器上它都是有效的URL)

明确一点:在iOS 7上:http://提供itms-apps:与没有明显延迟的相同体验。

*请记住,上面提到的模拟器行为。这与尝试通过模拟器访问相机并不完全不同:模拟器不是测试相机的地方。*


1
我不确定您到底回答了这个问题。您提供的此链接无法满足OP的要求,即在App Store中打开“评论”页面。直接链接到应用程序本身很简单。
Asem H.

鉴于您无法直接链接到iOS7中的“评论”,这似乎是一个非常合理的解决方案。
Nick Cecil 2013年

虽然目前是正确的,但不能保证http将继续路由到App Store应用程序。苹果可能会在将来决定将http应用程序链接发送到Safari,谁知道呢?使用直接协议更安全。
poetmountain

除了Apple更改了直接协议外,除非您使用其他格式,否则它无法在iOS7中使用。因此,根本不是真正的“安全”。
真实世界

1
关于http:vs,itms-apps:我可以直接链接到“评论”选项卡,itms-appshttp在iOS 7.1.1上则不能。
zekel 2014年

17

在iOS7中可以直接从应用程序打开评论页面。请使用以下网址...

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

这肯定会工作.. :)


我没有主意。您是否签入iOS8?
穆拉利

1
不,不是的。提交错误报告!
克里夫·里鲍多

我在iOS 8.1.1上,此URL直接转到评论页面。
mrzzmr 2015年

1
字符串中的“ type = Purple + Software”是什么?
Darko

16

目前尚不清楚它支持哪个版本的iOS,但是作为iOS 10.3的一部分,有一个新的查询参数可以添加到URL:中action=write-review。我已经在iOS 10.2和9.3.5上对此进行了测试,并且可以正常工作。但是,它在iOS 7.1.2上不起作用,因此在iOS 8.0和9.3.5之间添加了支持。需要进一步调查!

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

这将打开“写评论”对话框,而不仅仅是显示评论选项卡。


2
干杯兄弟:)这是迄今为止最好的解决方案。至点,完全达到目的。对我来说,这是可以接受的答案。经测试可在9.3.5和iOS 10.2.1上运行。直接打开写评论。我使用了它:itms-apps://itunes.apple.com/gb/app/id1136613532?action = write-review&mt = 8,以使用户直接撰写评论。
Ankit Kumar Gupta

...但是gb不是指英国吗?如果是这样,这会将所有用户引向UK App Store?
罗伯特·古默森,

@Robert Yeh,我最初的链接是/ gb。我认为它仍然会向用户开放的商店,但我从答案删除它
约瑟夫·达菲

它可以在iOS10中运行,但似乎不能在iOS11中运行(使用beta 9)。有什么想法改变吗?
ZS

这适用于iOS 11.1.1。谢谢!应该是公认的答案,@ astrocb
Vexir

9
+ (NSString *)getReviewUrlByAppId:(int)appId
{ 
    NSString *templateReviewURL = @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=APP_ID";
    NSString *templateReviewURLiOS7 = @"itms-apps://itunes.apple.com/app/idAPP_ID";
    NSString *templateReviewURLiOS8 = @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=APP_ID&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software";

    //ios7 before
    NSString *reviewURL = [templateReviewURL stringByReplacingOccurrencesOfString:@"APP_ID" withString:[NSString stringWithFormat:@"%d", appId]];

    // iOS 7 needs a different templateReviewURL @see https://github.com/arashpayan/appirater/issues/131
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0 && [[[UIDevice currentDevice] systemVersion] floatValue] < 7.1) 
    {
        reviewURL = [templateReviewURLiOS7 stringByReplacingOccurrencesOfString:@"APP_ID" withString:[NSString stringWithFormat:@"%d", appId]];
    }
    // iOS 8 needs a different templateReviewURL also @see https://github.com/arashpayan/appirater/issues/182
    else if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
    {
        reviewURL = [templateReviewURLiOS8 stringByReplacingOccurrencesOfString:@"APP_ID" withString:[NSString stringWithFormat:@"%d", appId]];
    }

    return reviewURL;
}

1
Appirater已再次更新,以解决另一个问题。主要更改包括将检查从更改为< 7.1< 8.0以便该templateReviewURLiOS7链接适用于所有7.x iOS版本,而不是对> = 7.1到<8.0之间的所有内容均使用旧链接。
Markus A.

9

评论链接在iOS9中再次断开。在进行一些试验时,我发现Apple将其还原为iOS7之前的状态。因此,您必须执行以下操作:

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

247423477您的9位数字应用ID 在哪里(主要区别是您必须&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software在应用ID后面附加)。


5

以上所有答案现在均已弃用(iOS 7,但可能可以使用),因此,我提供了Apple建议提供指向应用程序链接的新方法。您的应用程序的链接是iTunes中的链接(使用“复制链接”),建议在代码中使用该链接:

斯威夫特3.0

let path = URL(string: "https://itunes.apple.com/us/app/calcfast/id876781417?mt=8")
UIApplication.shared.open(path!)

或者更好-正确对待可选选项并处理无法访问链接的可能性:

if let path = URL(string: "https://itunes.apple.com/us/app/calcfast/id876781417?mt=8") {
    UIApplication.shared.open(path) {
        (didOpen:Bool) in
        if !didOpen {
            print("Error opening:\(path.absoluteString)")
        }
    }
}

目标C

#define APP_URL_STRING  @"https://itunes.apple.com/us/app/calcfast/id876781417?mt=8"

那么您可以调用APP_URL_STRING您的代码:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: APP_URL_STRING] options:@{} completionHandler:nil];

请注意,这是Apple现在推荐的方法,因为不赞成使用以前的处理重定向链接的方法,并且不支持该方法。

您所有应用程序的链接(如果有多个):

#define MYCOMPANY_URL_PATH @"http://appstore.com/mycompany"
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: MYCOMPANY_URL_PATH] options:@{} completionHandler:nil];

建议将上面的App链接用于用户无法直接看到的代码或链接。如果要提供用户可以看到和记住的链接,请使用以下命令: http://appstore.com/calcfast


3
这不会链接到评论页面
ngb 2014年

@ngb,您只能链接到Apps或开发人员页面。拒绝投票时,请提供有效理由或失败。我没有显示评论页面的链接,但是用户可以轻松地点击费率。
Sverrisson

1
这是正确的Apple推荐方法。其他都是骇客。
Martin Marconcini

@Bingo是什么意思?我提供的链接以&mt = 8 ans链接到审阅页面结束。在我的回答中,我指的是Apple的建议,您的链接可能现在可用,并且可能适用于您的情况,但是它对其他国家/地区的用户有效吗?或者您确定它不会更改?
Sverrisson

4

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

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

Swift 3,Xcode 8.2.1:

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

在这里,showAlert是的自定义函数UIAlertController


3

我有这个功能可以自动获取产品ID,并生成App Store评论和产品页面链接

- (void) getAppStoreLinks {
productID = [[NSUserDefaults standardUserDefaults] objectForKey:@"productID"]; //NSNumber instance variable
appStoreReviewLink = [[NSUserDefaults standardUserDefaults] objectForKey:@"appStoreReviewLink"]; //NSString instance variable
appStoreLink = [[NSUserDefaults standardUserDefaults] objectForKey:@"appStoreLink"]; //NSString instance variable

if (!productID || !appStoreReviewLink || !appStoreLink) {
    NSString *iTunesServiceURL = [NSString stringWithFormat:@"https://itunes.apple.com/lookup?bundleId=%@", [NSBundle mainBundle].bundleIdentifier];
    NSURLSession *sharedSes = [NSURLSession sharedSession];
    [[sharedSes dataTaskWithURL:[NSURL URLWithString:iTunesServiceURL]
              completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

                  NSInteger statusCode = ((NSHTTPURLResponse *)response).statusCode;

                  if (data && statusCode == 200) {

                      id json = [[NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingOptions)0 error:nil][@"results"] lastObject];

                      //productID should be NSNumber but integerValue also work with NSString
                      productID = json[@"trackId"];

                      if (productID) {
                          appStoreReviewLink = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=%d&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8",productID.integerValue];
                          appStoreLink = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%d",productID.integerValue];

                          [[NSUserDefaults standardUserDefaults] setObject:productID forKey:@"productID"];
                          [[NSUserDefaults standardUserDefaults] setObject:appStoreReviewLink forKey:@"appStoreReviewLink"];
                          [[NSUserDefaults standardUserDefaults] setObject:appStoreLink forKey:@"appStoreLink"];

                      }
                  } else if (statusCode >= 400) {
                      NSLog(@"Error:%@",error.description);
                  }
              }
      ] resume];
}
}

开启应用程式的评论页面

- (IBAction) rateButton: (id)sender {
   NSString *appStoreReviewLink = appStoreReviewLink;
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:appStoreReviewLink]];
}

打开应用程序的“应用程序商店”页面

 - (IBAction) openAppPageButton: (id)sender {
   NSString *appStoreLink = appStoreLink;
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString: appStoreLink]];
 }

2

据说此错误将在iOS7.1上修复。在电晕论坛上阅读这里在iPhoneDevSDK上阅读


3
不幸的是,iOS 7.1现已发布,但仍无法正常工作。
user1139733 2014年

2
它再次在iOS 7.1上为我工作(直接转到“评论”页面),其他人在devsdk链接中也指出了这一点。对我来说,我只需要将方案从itms-apps更改为http,就可以在iOS 7.1上完美运行。在iOS 7.0上,它仍然仅转到主应用程序页面,但至少http链接有效,这与旧的itms-apps链接仅显示白页不同。
stonemonk 2014年

我现在可以肯定地确认“旧”(紫色+软件)方法在iOS7.1中可以正常工作。您可以在我的应用中看到一个证明:j.mp/josegg 在主屏幕上,单击“设置”->单击“免费获取”。 Js”->然后单击“ Rate Us”->您将直接进入应用商店上我应用程序页面的审阅选项卡(显然仅适用于iOS 7.1+或iOS 6.1.4
Joselito
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.