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


158

Хтось знає, чи застосовується техніка, яка використовується для того, щоб запитувати користувача, щоб оцінити наш додаток і відкрити для нього App Store безпосередньо на сторінці рейтингу, все ще працює на 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 показує порожню сторінку). Я також спробував цю удачу без удачі:

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

Переглянувши вихідний код UAAppReviewManager, схоже, що дійсно є платформа з iOS7. Тому вони використовують стандартну 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

Зверніть увагу на ідентифікатор перед номером ... цей рядок - це id 353372460, а не лише 353372460

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


Перегляньте, наприклад, Appirater для реалізації. https://github.com/arashpayan/appirater

Не можу допомогти вам із фонегапними особливостями (ніколи не використовувався). Але в основному це зводиться до перевірки версії iOS, яку працює ваш користувач, а потім або використання старої URL-адреси, або нової URL-адреси iOS7.


18
Насправді це відкриває додаток, а не вкладку огляду.
Ідан

3
Так, це правда, але зараз в iOS7 це найкраще, що можна досягти на даний момент.
Френк

Новий додаток Facebook показує сторінку магазину додатків всередині самого додатка в iOS 7. Хтось знає, як це робити?
EricS

1
В відміну від розгніваних, ви повинні використовувати посилання вище с / Language / додаток / idAPP_ID інформації
Dan

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)


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. Просто перевірений :) Дякую!
алонес

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

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:і без помітної затримки.

* майте на увазі, що поведінка тренажера, зазначене вище. Це зовсім не відрізняється від спроби отримати доступ до камери через тренажер: тренажер не є місцем для тестування. *


1
Я не впевнений, як саме ти відповідаєш на питання. Надане вами посилання не виконує те, про що вимагає ОП, тобто відкриває сторінку "відгуки" в App Store. Посилання безпосередньо на сам додаток є тривіальним.
Асем Х.

Зважаючи на те, що ви не можете посилатися безпосередньо на Відгуки в iOS7, це здається цілком розумним рішенням.
Нік Сесіл

Наразі це правда, немає гарантії, що http продовжить переходити до додатка App Store. Apple може вирішити в майбутньому надсилати посилання на http на Safari, хто знає? Безпечніше використовувати прямий протокол.
poetmountain

За винятком того, що Apple змінила прямий протокол, щоб він не працював в iOS7, якщо ви не використовуєте інший формат. Так що насправді не "безпечніше" взагалі.
Справжній світ

1
Щодо http:vs, itms-apps:я зміг зв’язатись безпосередньо на вкладці огляди itms-appsз httpiOS, а не з 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

Це обов'язково спрацює .. :)


Я не маю ідеї .. Ви перевірили 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, щоб змусити користувача безпосередньо написати відгук.
Анкіт Кумар Гупта

... але gb не посилається на Великобританію? Якщо це так, це стосується всіх користувачів Великобританії App Store?
Роберт Гуммессон

@Robert Yeh, посилання, яке я спочатку мав / gb на початку. Я думаю, що він все ще відкриється для магазину користувача, але я видалив його з відповіді
Джозеф Даффі

Він працює в iOS10, але, схоже, не працює в iOS11 (використовуючи бета-версію 9). Будь-які ідеї, якщо щось змінилося?
ZS

Це працює в iOS 11.1.1. Дякую! Має бути прийнята відповідь, @astrocb
Вексир

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посилання використовувалося для всіх версій ix 7.x, а не використовувалося старе посилання для всього між> = 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після ідентифікатора програми).


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

Ціль-С

#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. Все інше - хак.
Мартін Маркончіні

@ Bingo Що ти маєш на увазі? Я надаю посилання закінчується в & mt = 8 ans посиланнях на сторінку огляду. У своїй відповіді я маю на увазі те, що рекомендує 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

Я маю це, щоб автоматично отримати ідентифікатор продукту та створити огляд магазину додатків та посилання на сторінку продукту .

- (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 зараз не працює, і він досі не працює.
користувач1139733

2
Він працює для мене знову на iOS 7.1 (безпосередньо на сторінці відгуків), а інші вказали те саме у посиланні devsdk. Для мене мені довелося лише змінити схему з itms-apps на http, і вона прекрасно працює на iOS 7.1. На iOS 7.0 він все ще переходить лише на головну сторінку додатка, але принаймні http-посилання працює, на відміну від старого посилання itms-apps, яке просто показувало б білу сторінку.
каменем

Зараз я можу позитивно підтвердити, що "старий" (Purple + Software) метод працює бездоганно в iOS7.1. Ви можете бачити доказ у моєму додатку: j.mp/josegg На головному екрані натисніть "Налаштування" -> натисніть "Отримати безкоштовно Js »-> натисніть кнопку" Rate Us "-> ви потрапите прямо на вкладку огляду сторінки мого програми на App Store (очевидно , працює тільки для прошивки 7.1+ або прошивку 6.1.4-)
Joselito
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.