ITunes xem lại URL và iOS 7 (yêu cầu người dùng xếp hạng ứng dụng của chúng tôi) AppStore hiển thị một trang trống


158

Có ai biết nếu kỹ thuật được sử dụng để yêu cầu người dùng đánh giá ứng dụng của chúng tôi và mở cho anh ta App Store trực tiếp trên trang xếp hạng vẫn hoạt động trên iOS 7 không?

Tôi đã sử dụng để mở url này từ ứng dụng của mình:

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

Nhưng có vẻ như nó không hoạt động nữa (AppStore hiển thị một trang trống). Tôi cũng đã thử url này khi gặp may mắn:

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

Sau khi xem mã nguồn của UAAppReviewManuber, có vẻ như thực sự có một pb với iOS7. Vì vậy, họ sử dụng URL ứng dụng tiêu chuẩn, vì vậy người dùng cần tìm kiếm nút tỷ lệ: - /
Samuel

Có vẻ như liên kết đánh giá cho ios 7 không hoạt động. Tôi sẽ thay đổi mã của tôi thành url liên kết ứng dụng thông thường. Người dùng sẽ phải nhấp vào nút xem xét.
Emmy

4
Liên kết thứ hai bạn đăng bây giờ hoạt động trên iOS 7! Đi ngay đến trang đánh giá
Maximilian Litteral

đối với tôi .... URL đầu tiên dường như hoạt động. Tôi vừa thay số id của mình
Nilesh Kumar

Câu trả lời:


198

Bắt đầu với iOS7, URL đã thay đổi và không thể trực tiếp cho trang đánh giá mà chỉ cho ứng dụng

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

Trường hợp APP_ID cần được thay thế bằng ID ứng dụng của bạn. Dựa trên ID ứng dụng từ câu hỏi, nó sẽ là như sau

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

Lưu ý id ở phía trước số ... chuỗi đó là id 353372460, không chỉ 353372460

Đối với mọi thứ trước iOS7, URL 'cũ' cần được sử dụng, chỉ những URL đó mới có thể đưa bạn đến thẳng trang đánh giá. Bạn cũng nên lưu ý rằng những cuộc gọi này sẽ chỉ hoạt động trên thiết bị . Chạy chúng trong trình giả lập sẽ không làm được gì vì trình giả lập không cài đặt ứng dụng App Store.


Có một cái nhìn ví dụ Appirater để thực hiện. https://github.com/arashpayan/appirater

Không thể giúp bạn với thông tin cụ thể về phonegap (không bao giờ sử dụng nó). Nhưng về cơ bản, việc kiểm tra phiên bản iOS mà người dùng của bạn đang chạy và sau đó sử dụng URL cũ hoặc URL iOS7 mới.


18
Trên thực tế điều này mở ứng dụng và không phải là tab xem xét.
Idan

3
Đúng là như vậy, nhưng dưới iOS7 bây giờ, đó là điều tốt nhất có thể đạt được vào lúc này.
Frank

Ứng dụng Facebook mới hiển thị trang cửa hàng ứng dụng bên trong chính ứng dụng trong iOS 7. Có ai biết họ làm điều đó như thế nào không?
EricS

1
Không giống như trong iRate, bạn PHẢI sử dụng liên kết ở trên với thông tin / LANGUAGE / app / idAPP_ID
Dan

6
Bạn muốn xóa ngôn ngữ, Appirater cũng gặp vấn đề tương tự nếu thiết bị được đặt thành ngôn ngữ không tương đương với cửa hàng iTunes, bạn sẽ có một trang trống (ví dụ: tiếng Anh Anh), nếu bạn xóa bit ngôn ngữ, nó vẫn hoạt động và cửa hàng sẽ mở trong ngôn ngữ chủ sở hữu.
Chris

166

URL sau hoạt động hoàn hảo trên iOS 7.1:

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

xxxxxxxxID ứng dụng của bạn ở đâu .

CẬP NHẬT . Hoạt động trên iOS 9.3.4 và iOS 10 GM (bởi Jeet)


5
Điều này lại bị hỏng trong 8.0 DP 5! Báo cáo ngay bây giờ là một lỗi và hy vọng chúng tôi có thể sửa nó bằng bản phát hành sản xuất.
Cliff Ribaudo

6
Hoạt động để tôi truy cập trực tiếp vào trang đánh giá App Store.app. Được xây dựng với Xcode 6. Được xác minh trong iOS 8.0, iOS 7.1.2, iPhone 5 và iPhone 4.
jclee

7
Tôi phát hiện ra. Loại phải luôn luôn bằng phần mềm màu tím - đó là một điều táo.
Matt Parkins

2
Nó hoạt động chính xác trên cả iPhone và iPad trong iOS 8.3. Chỉ cần thử nghiệm :) Cảm ơn bạn!
Alones

2
Hoạt động tốt trên iPod Gen 5, iOS 9.0.1.
haxpor

47

Điều này hoạt động ở phần cuối của tôi (Xcode 5 - iOS 7 - Thiết bị !):

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

Đối với các phiên bản thấp hơn iOS 7, hãy sử dụng phiên bản cũ:

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

1
Điều này mang lại một màn hình trống trên các thiết bị iOS7 của tôi (sử dụng Xcode 5), đây là URL tôi vẫn đang sử dụng cho iOS6. Đối với iOS 7, tôi đang sử dụng một chi tiết trong câu trả lời của mình. Kỳ lạ là nó đang làm việc cho bạn.
Frank

@Frank làm thế nào để bạn mở liên kết này? Tôi đang sử dụng iRate và nó đang sử dụng liên kết này, có thể thử sử dụng nó và kiểm tra chính xác sự khác biệt từ mã của bạn.
Idan

2
Tôi đang sử dụng mã sau đây [[UIApplication sharedApplication] openURL:[NSURL URLWithString:ITUNES_APP_URL_IOS7]];
Frank

1
self.appStoreID thậm chí không biên dịch
ngb

1
Nó lại bị hỏng trong iOS 8 DP5. Bắt đầu báo cáo đây là một lỗi và hy vọng họ sửa chữa bằng cách sản xuất! Khác, chúng tôi sẽ đợi cho đến 8.1 một lần nữa.
Cliff Ribaudo

18

Thay thế đơn giản một dòng mã: ** Cũng xem Nhận xét Trình mô phỏng bên dưới **

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

EDIT: Bây giờ iOS 7.1 cho phép liên kết trực tiếp đến tab Đánh giá trong App Store, đáng để đầu tư thêm các dòng mã để đến đó trực tiếp: xem các câu trả lời khác cho phần còn lại.

ở đây chúng tôi đang sử dụng http: thay vì itms-apps: , hãy để iOS thực hiện phần còn lại của công việc

Tôi nhận được thử nghiệm kết quả tương tự trên các thiết bị iOS 6.1 & 7 (iPad / iPhone / iPod touch 4)

Cụ thể, lối tắt này , dành cho iOS 6 sẽ đưa người dùng vào Detailstab chứ không phải Reviewstab.

Các Purple+Softwareliên kết được người sử dụng tất cả các cách để các tab Nhận xét trong iOS 6, mà rõ ràng là lựa chọn nếu bạn biết làm thế nào để kiểm tra hệ điều hành.

Lưu ý quan trọng : Điều này sẽ gây ra lỗi trong trình giả lập cho iOS 5.1, 6.1 và 7.
Không thể mở Trang Safari không thể mở trang vì địa chỉ không hợp lệ (chúng tôi biết đó là một URL hợp lệ bên ngoài trình giả lập, trên bất kỳ trình duyệt nào)

Chỉ cần rõ ràng : Trên iOS 7: http://cung cấp trải nghiệm tương tự như itms-apps:không có độ trễ đáng chú ý.

* hãy nhớ rằng các hành vi giả lập đã lưu ý ở trên. Đây không phải là hoàn toàn khác nhau từ việc cố gắng truy cập máy ảnh thông qua một trình giả lập: trình giả lập không phải là nơi để kiểm tra nó. *


1
Tôi không chắc chính xác làm thế nào bạn trả lời câu hỏi. Liên kết này bạn cung cấp không làm những gì OP yêu cầu, đó là mở trang "đánh giá" trong App Store. Liên kết trực tiếp đến chính ứng dụng là chuyện nhỏ.
Asem H.

Cho rằng bạn không thể liên kết trực tiếp đến Đánh giá trong iOS7, đây có vẻ là một giải pháp hoàn toàn hợp lý.
Nick Cecil

Mặc dù hiện tại là sự thật, không có gì đảm bảo rằng http sẽ tiếp tục định tuyến đến ứng dụng App Store. Apple có thể quyết định trong tương lai sẽ gửi liên kết ứng dụng http đến Safari, ai biết? An toàn hơn để sử dụng giao thức trực tiếp.
thơ

Ngoại trừ việc Apple thay đổi giao thức trực tiếp để nó không hoạt động trong iOS7 trừ khi bạn sử dụng định dạng khác. Vì vậy, không thực sự "an toàn" hơn cả.
Thế giới thực

1
Về http:vs itms-apps:tôi đã có thể liên kết trực tiếp đến tab đánh giá có itms-appsvà không có httptrên iOS 7.1.1.
zekel

17

Mở trang đánh giá trực tiếp từ ứng dụng là có thể trong iOS7. Vui lòng sử dụng url sau ...

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

Điều này chắc chắn sẽ hoạt động .. :)


Tôi không có ý tưởng .. Bạn đã kiểm tra iOS8 chưa?
Murali

1
Không nó không. Nộp báo cáo lỗi!
Cliff Ribaudo

Tôi đang dùng iOS 8.1.1 và URL này trực tiếp đến trang đánh giá.
mrzzmr

1
"Type = Purple + Software" trong Chuỗi là gì?
Darko

16

Không rõ phiên bản iOS nào được hỗ trợ bởi, nhưng là một phần của iOS 10.3, có một tham số truy vấn mới có thể được thêm vào URL : action=write-review. Tôi đã thử nghiệm điều này trên iOS 10.2 và 9.3.5 và nó hoạt động. Tuy nhiên, nó không hoạt động trên iOS 7.1.2, vì vậy hỗ trợ đã được thêm vào giữa iOS 8.0 và 9.3.5. Cần điều tra thêm!

Ví dụ: https://itunes.apple.com/app/id929726748?action=write-review&mt=8

Điều này sẽ mở hộp thoại "Viết đánh giá" , thay vì chỉ hiển thị tab đánh giá.


2
Chúc mừng bro :) Đây là giải pháp tốt nhất cho đến nay. Đến điểm và hoàn toàn phục vụ mục đích. Đối với tôi đây là câu trả lời chấp nhận được. Đã thử nghiệm để hoạt động trên 9.3.5 và iOS 10.2.1. Trực tiếp mở viết bình luận. Tôi đã sử dụng cái này: itms-apps: //itunes.apple.com/gb/app/id1136613532? Action = write-review & mt = 8, để khiến người dùng trực tiếp viết đánh giá.
Ankit Kumar Gupta

... nhưng gb không đề cập đến Vương quốc Anh? Nếu vậy, điều này sẽ giới thiệu tất cả người dùng đến App Store Vương quốc Anh?
Robert Gummesson

@Robert Yeh, liên kết ban đầu tôi có / gb khi bắt đầu. Tôi nghĩ rằng nó vẫn sẽ mở cho cửa hàng của người dùng, nhưng tôi đã xóa nó khỏi câu trả lời
Joseph Duffy

Nó hoạt động trong iOS10, nhưng dường như không hoạt động trong iOS11 (sử dụng bản beta 9). Bất cứ ý tưởng nếu một cái gì đó thay đổi?
ZS

Điều này hoạt động trong iOS 11.1.1. Cảm ơn! Nên là câu trả lời được chấp nhận, @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 đã được cập nhật một lần nữa để khắc phục vấn đề khác. Sự thay đổi chính bao gồm việc thay đổi séc từ < 7.1để < 8.0sao cho templateReviewURLiOS7liên kết được sử dụng cho tất cả các phiên bản iOS 7.x hơn là sử dụng các liên kết cũ cho tất cả mọi thứ giữa> = 7.1 và <8.0.
Markus A.

9

Liên kết đánh giá đã một lần nữa bị hỏng trong iOS9. Khi thực hiện một số thử nghiệm, tôi phát hiện ra rằng Apple đã hoàn nguyên nó trở lại như trước iOS7. Vì vậy, bạn phải làm:

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

247423477ID ứng dụng 9 chữ số của bạn ở đâu (điểm khác biệt chính là bạn phải nối thêm &onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Softwaresau ID ứng dụng).


5

Tất cả các câu trả lời ở trên hiện không được chấp nhận (iOS 7, nhưng có thể hoạt động), do đó, tôi cung cấp cách thức mới mà Apple khuyên bạn nên cung cấp liên kết đến Ứng dụng. Liên kết cho Ứng dụng của bạn là liên kết từ iTunes (sử dụng Sao chép liên kết), liên kết này được khuyến nghị sử dụng trong mã:

Swift 3.0

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

Hoặc tốt hơn - xử lý tùy chọn chính xác và xử lý khả năng không thể truy cập liên kết:

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

Mục tiêu-C

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

sau đó bạn có thể gọi APP_URL_STRINGmã của bạn:

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

Lưu ý, đây là cách được Apple khuyến nghị, vì phương pháp xử lý liên kết chuyển hướng trước đây không được dùng nữa và không được hỗ trợ.

Liên kết cho tất cả Ứng dụng của bạn, nếu bạn có nhiều hơn một:

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

Liên kết ứng dụng ở trên được khuyến nghị sử dụng trong mã hoặc các liên kết mà người dùng không nhìn thấy trực tiếp. Nếu bạn muốn cung cấp liên kết mà người dùng có thể nhìn thấy và ghi nhớ thì hãy sử dụng như sau: http://appstore.com/calcfast


3
Điều này không liên kết đến trang đánh giá
ngb

@ngb bạn chỉ có thể liên kết đến Ứng dụng hoặc trang nhà phát triển. Xin vui lòng khi bỏ phiếu đưa ra một lý do hợp lệ hoặc thất bại. Tôi không hiển thị các liên kết đến trang đánh giá, nhưng người dùng có thể dễ dàng nhấp vào tỷ lệ.
Sverrisson

1
Đây là phương pháp chính xác của Apple. Bất cứ điều gì khác là một hack.
Martin Marconcini

@Bingo Ý bạn là gì? Liên kết tôi cung cấp kết thúc bằng & mt = 8 ans liên kết đến trang đánh giá. Trong câu trả lời của tôi, tôi đang đề cập đến những gì Apple khuyến nghị, liên kết của bạn có thể hoạt động ngay bây giờ và có thể trong trường hợp của bạn, nhưng nó có hoạt động cho người dùng ở một quốc gia khác hay bạn có chắc chắn nó sẽ không thay đổi?
Sverrisson

4

Sử dụng URL này là giải pháp hoàn hảo cho tôi. Nó đưa người dùng trực tiếp đến Write a Review section. Tín dụng cho @Joseph Duffy.

Đối với mã mẫu, hãy thử điều này:

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

Ở đây showAlert là một chức năng tùy chỉnh cho một UIAlertController.


3

Tôi có điều này để tự động lấy ID sản phẩm và tạo liên kết trang Sản phẩm và đánh giá 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];
}
}

Mở trang đánh giá của ứng dụng

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

Mở trang App Store của ứng dụng

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

2

Người ta nói rằng lỗi này sẽ được sửa trên iOS7.1. Đọc ở đây trên diễn đàn corona và ở đây trên iPhoneDevSDK .


3
Thật không may, iOS 7.1 hiện đã ra mắt và nó vẫn không hoạt động.
dùng1139333

2
Nó hoạt động trở lại với tôi trên iOS 7.1 (trực tiếp đến trang Nhận xét) và những người khác đã chỉ ra điều tương tự trong liên kết devsdk. Đối với tôi, tôi chỉ phải thay đổi lược đồ từ itms-apps sang http và nó hoạt động hoàn hảo trên iOS 7.1. Trên iOS 7.0, nó vẫn chỉ đi đến trang ứng dụng chính, nhưng ít nhất là liên kết http hoạt động, không giống như liên kết itms-apps cũ sẽ chỉ hiển thị một trang trắng.
stonemonk

Bây giờ tôi có thể xác nhận tích cực rằng phương pháp "cũ" (Purple + Software) đang hoạt động hoàn hảo trong iOS7.1 Bạn có thể thấy một bằng chứng trong ứng dụng của mình: j.mp/josegg Trên màn hình chính, nhấp vào "cài đặt" -> nhấp vào "Nhận miễn phí Js "-> sau đó nhấp vào" Đánh giá chúng tôi "-> bạn sẽ được đưa thẳng đến tab đánh giá của trang ứng dụng của tôi trên cửa hàng ứng dụng (rõ ràng chỉ hoạt động cho iOS 7.1+ hoặc iOS 6.1.4-)
Joselito
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.