ITunes обзор URL и iOS 7 (попросите пользователей оценить наше приложение) AppStore показать пустую страницу

Кто-нибудь знает, использует ли техника, чтобы пользователь оценивал наше приложение и открывал для него магазин приложений прямо на странице рейтинга, все еще работает на iOS 7?

Я использовал этот url из своего приложения:

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

Но похоже, что он больше не работает (AppStore показывает пустую страницу). Я также пробовал этот URL с удачей:

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

Ответ 1

Начиная с iOS7 URL-адрес изменился и не может направить ссылку на страницу обзора, но только на приложение

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

Где APP_ID необходимо заменить на свой идентификатор приложения. Исходя из идентификатора приложения из вопроса, он будет следующим

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

Обратите внимание на id перед номером... эта строка: id 353372460, а не только 353372460

Для чего-либо, предшествующего iOS7, нужно использовать "старый" URL-адрес, только те, которые могут получить вас прямо на странице обзора. Следует также учитывать, что эти вызовы будут работать только на устройствах. Запуск их в симуляторе ничего не сделает, поскольку на симуляторе не установлено приложение App Store.


Взгляните, например, на Appirater для реализации. https://github.com/arashpayan/appirater

Невозможно помочь вам с особенностью телефонных разговоров (никогда не использовалась). Но в основном это сводится к проверке версии iOS, которую выполняет ваш пользователь, а затем либо использовать старый URL-адрес, либо новый URL-адрес iOS7.

Ответ 2

Следующий URL-адрес отлично работает на iOS 7.1:

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

где xxxxxxxx - ваш идентификатор вашего приложения.

UPDATE. Работает на iOS 9.3.4 и iOS 10 GM (от Jeet)

Ответ 3

Это работает на моем конце (Xcode 5 - iOS 7 - Устройство!):

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

Ответ 4

Простая альтернатива с одной строкой: ** Также см. комментарий к симулятору ниже **

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

EDIT: теперь, когда iOS 7.1 позволяет напрямую ссылаться на вкладку "Отзывы" в App Store, стоит потратить дополнительные строки кода, чтобы получить их прямо: см. другие ответы для остальных.

здесь мы используем http: вместо itms-apps:, пусть iOS выполняет оставшуюся часть работы

Я получаю те же результаты тестирования на устройствах iOS 6.1 и 7 (iPad/iPhone/iPod touch 4)

В частности, этот ярлык для iOS 6 переносит пользователя на вкладку Details, а не на вкладку Reviews.

Ссылка Purple+Software позволяет пользователю полностью перейти на вкладку "Комментарии" в iOS 6, что, очевидно, предпочтительнее, если вы знаете, как проверить ОС.

Важное примечание. Это приведет к ошибке в симуляторе для iOS 5.1, 6.1 и 7.
Невозможно открыть страницу. Safari не может открыть страницу, потому что адрес недействителен (мы знаем, что это действительный URL-адрес за пределами симулятора, в любом браузере)

Только для того, чтобы быть ясным. На iOS 7: http:// обеспечивается тот же опыт, что и itms-apps: без заметной задержки.

* Помните, что поведение симулятора отмечено выше. Это не совсем не похоже на попытку доступа к камере через симулятор: симулятор не является местом для его проверки. *

Ответ 5

Открытие страницы просмотра непосредственно из приложения возможно в iOS7. Пожалуйста, используйте следующий URL-адрес...

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

Это определенно будет работать..:)

Ответ 6

Непонятно, какие версии 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

Это откроет диалог "Написать отзыв" , а не просто покажет вкладку обзора.

Ответ 7

Ссылка на обзор снова нарушена в 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-значный идентификатор приложения (основное различие заключается в том, что вы должны добавить &onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software после идентификатора приложения).

Ответ 8

+ (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;
}

Ответ 9

Все приведенные выше ответы теперь устарели (iOS 7, но могут работать), таким образом, я предоставляю новый способ, который Apple рекомендует предоставлять ссылки на Приложения. Ссылка для вашего приложения - это приложение iTunes (используйте ссылку "Копировать ссылку" ), это рекомендуется для использования в коде:

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

Objective-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];

Ссылка на приложение выше рекомендуется для использования в коде или ссылках, которые не отображаются непосредственно пользователем. Если вы хотите предоставить ссылку, которую пользователь может увидеть и запомнить, используйте следующее: http://appstore.com/calcfast

Ответ 10

Использование этого 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.

Ответ 11

У меня есть это, чтобы получить Идентификатор продукта автоматически и создать Обзор магазина приложений и ссылок на страницы продукта.

- (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]];
}

Откройте приложение App Store

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