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

158

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

Я использовал, чтобы открыть этот 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
Самуил
источник
Посмотрев на исходный код UAAppReviewManager, похоже, что в iOS7 действительно есть pb. Таким образом, они используют стандартный URL-адрес приложения, поэтому пользователь должен искать кнопку оценки: - /
Самуил
Похоже, ссылка на обзор для ios 7 не работает. Я изменю свой код на обычный URL ссылки на приложение. Пользователь должен будет нажать кнопку обзора.
Эмми
4
Вторая ссылка, которую вы разместили, теперь работает на iOS 7! Идет прямо на страницу обзора
Максимилиан Литераль
для меня .... первый URL, кажется, работает. Я только что заменил свой идентификационный номер
Nilesh Kumar

Ответы:

198

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

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

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

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

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

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


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

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

Фрэнк
источник
18
На самом деле это открывает приложение, а не вкладку обзора.
Идан,
3
Да, это правда, но на данный момент под iOS7 это лучшее, чего можно достичь на данный момент.
Фрэнк
Новое приложение Facebook показывает страницу магазина приложений внутри самого приложения в iOS 7. Кто-нибудь знает, как они это делают?
EricS
1
В отличие от iRate, вы ДОЛЖНЫ использовать приведенную выше ссылку с информацией / LANGUAGE / app / idAPP_ID
Дан,
6
Вы хотите удалить язык, Appirater также имеет ту же проблему, если устройство настроено на язык, который не соответствует магазину iTunes, вы получаете пустую страницу (например, британский английский), если вы удалите бит языка, он все еще работает, и магазин открывается на языке владельцев.
Крис
166

Следующий 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идентификатор вашего приложения.

ОБНОВЛЕНИЕ . Работает на iOS 9.3.4 и iOS 10 GM (от Jeet)

mkll
источник
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
Он корректно работает как на iPhone, так и на iPad в iOS 8.3. Только что проверил :) Спасибо!
Alones
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), это был URL, который я все еще использую для iOS6. Для iOS 7 я использую тот, который подробно описан в моем ответе. Странно, что это работает на вас.
Фрэнк
@Frank, как ты открываешь эту ссылку? Я использую iRate, и он использует эту ссылку, возможно, попробуйте использовать ее и проверьте, чем именно отличается от вашего кода.
Идан,
2
Я использую следующий код [[UIApplication sharedApplication] openURL:[NSURL URLWithString:ITUNES_APP_URL_IOS7]];
Франк
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 выводит пользователя на Detailsвкладку, а не на Reviewsвкладку.

По Purple+Softwareссылке пользователь попадает на вкладку «Отзывы» в iOS 6, что, очевидно, предпочтительнее, если вы знаете, как проверить ОС.

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

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

* Имейте в виду, что поведение симулятора отмечено выше. Это не совсем отличается от попытки получить доступ к камере с помощью симулятора: на симуляторе не место для его тестирования. *

Джейсон Р. Эскамилла
источник
1
Я не уверен, как именно вы отвечаете на вопрос. Эта ссылка, которую вы предоставили, не выполняет то, о чем просит OP, то есть открывает страницу «отзывов» в App Store. Ссылка непосредственно на само приложение тривиальна.
Асем Х.
Учитывая, что вы не можете напрямую ссылаться на обзоры в iOS7, это кажется вполне разумным решением.
Ник Сесил
Хотя в настоящее время это верно, нет гарантии, что http продолжит направлять в приложение App Store. В будущем Apple может решить отправить ссылки на http-приложения в Safari, кто знает? Безопаснее использовать прямой протокол.
Поэтмонт
За исключением того, что Apple изменила прямой протокол, чтобы он не работал в iOS7, если вы не используете другой формат. Так что не совсем "безопаснее" вообще.
Реальный мир
1
Относительно http:vs itms-apps:я был в состоянии связываться непосредственно с вкладкой обзоров с itms-appsи не с httpна iOS 7.1.1.
Zekel
17

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

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

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

Murali
источник
Понятия не имею .. Вы проверяли в iOS8?
Мурали
1
Нет. Подайте отчет об ошибке!
Клифф Рибаудо
Я на iOS 8.1.1, и этот URL идет прямо на страницу обзора.
mrzzmr
1
Что такое "type = Purple + Software" в строке?
Дарко
16

Пока не ясно , какие версии прошивки этого поддерживаются, но и как часть прошивки 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, чтобы пользователь непосредственно написал обзор.
Анкит Кумар Гупта
... но ГБ не относится к Великобритании? Если это так, это будет направлять всех пользователей в британский App Store?
Роберт Гаммессон
@ Роберт Да, ссылка, которую я изначально имел / gb в начале. Я думаю, что он все еще будет открыт для магазина пользователя, но я убрал его из ответа
Джозеф Даффи
Он работает в iOS10, но, похоже, не работает в iOS11 (используется бета-версия 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.
Маркус А.
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-значный идентификатор приложения (главное отличие заключается в том, что вы должны добавить &onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Softwareпосле идентификатора приложения).

Ser Pounce
источник
5

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

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

Сверриссон
источник
3
это не ссылка на страницу отзывов
ngb
@ngb вы можете ссылаться только на приложения или страницу разработчика. Пожалуйста, при отрицательном голосовании укажите действительную причину или ошибку. Я не показываю ссылки на страницу обзора, но пользователь может легко нажать на оценку.
Сверриссон
1
Это правильный метод Apple, рекомендуемый. Все остальное взломать.
Мартин Маркончини
@ Бинго Что ты имеешь в виду? Ссылка, которую я предоставляю, заканчивается & mt = 8 и ссылками на страницу обзора. В своем ответе я имею в виду то, что рекомендует Apple, ваша ссылка может работать сейчас и, возможно, в вашем случае, но работает ли она для пользователей в другой стране, или вы уверены, что она не изменится?
Сверриссон
4

Использование этого URL было идеальным решением для меня. Это берет пользователя непосредственно к Write a Review section. Кредиты @ Джозеф Даффи.

Для примера кода попробуйте это:

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

У меня есть это для автоматического получения идентификатора продукта и создания ссылок на обзор 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]];
}

Откройте страницу App Store в приложении

 - (IBAction) openAppPageButton: (id)sender {
   NSString *appStoreLink = appStoreLink;
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString: appStoreLink]];
 }
Тибидабо
источник
2

Говорят, что эта ошибка будет исправлена ​​на iOS7.1. Читайте здесь, на форуме Corona , и здесь, на iPhoneDevSDK .

Joselito
источник
3
К сожалению, iOS 7.1 вышла, и она все еще не работает.
user1139733
2
Он снова работает для меня на iOS 7.1 (переход на страницу обзоров напрямую), и другие указали то же самое в ссылке на devsdk. Мне только нужно было изменить схему с itms-приложений на http, и она отлично работает на iOS 7.1. В iOS 7.0 он все еще идет только на главную страницу приложения, но по крайней мере ссылка http работает, в отличие от старой ссылки itms-apps, которая просто отображала бы белую страницу.
Stonemonk
Теперь я могу точно подтвердить, что «старый» (Purple + Software) метод работает безупречно в iOS7.1. В моем приложении вы можете увидеть подтверждение: j.mp/josegg На главном экране нажмите «Настройки» -> нажмите «Получить бесплатно». Js "-> затем нажмите" Оценить нас "-> вы попадете прямо на вкладку обзора на странице моего приложения в магазине приложений (очевидно, работает только для iOS 7.1+ или iOS 6.1.4-)
Joselito