Ссылка в магазине приложений для «оцените / просмотрите это приложение»


193

Я хочу добавить функцию "оценить / просмотреть это приложение" в мое приложение.

Есть ли способ напрямую связываться с экраном в магазине приложений, где они проверяют приложение? Таким образом, клиент не должен переходить по главной ссылке приложения. Спасибо.

РЕДАКТИРОВАТЬ: начать награду за это из-за отсутствия ответа. Просто чтобы убедиться, что это кристально ясно: я знаю, что могу сослаться на страницу моего приложения в магазине, и попросить пользователя нажать оттуда, чтобы перейти к экрану «Просмотр этого приложения». Вопрос в том, можно ли напрямую ссылаться на экран «Просмотр этого приложения», чтобы им не приходилось ничего нажимать.


1
Смотрите мой ответ здесь: stackoverflow.com/questions/3011246/…
iwasrobbed

Ответы:


349

Для версий ниже iOS 7 используйте старую:

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

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

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

Для iOS 8 или более поздней версии:

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

Фрагмент кода (вы можете просто скопировать и вставить его):

#define YOUR_APP_STORE_ID 545174222 //Change this one to your ID

static NSString *const iOS7AppStoreURLFormat = @"itms-apps://itunes.apple.com/app/id%d";
static NSString *const iOSAppStoreURLFormat = @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%d";

[NSURL URLWithString:[NSString stringWithFormat:([[UIDevice currentDevice].systemVersion floatValue] >= 7.0f)? iOS7AppStoreURLFormat: iOSAppStoreURLFormat, YOUR_APP_STORE_ID]]; // Would contain the right link

167
Примечание - «тип = фиолетовый + Программное обеспечение» имеет быть там и должен быть буквально «Purple Software» - это не название вашей компании, это кодовое имя для iPhone приложений :) Я потратил час , прежде чем я понял это ...
Куба Судер

16
Стоит отметить, что это не работает в симуляторе, но работает на реальном устройстве.
Иосиф

1
К вашему сведению, это, кажется, работает в iPad, но ТОЛЬКО во второй раз, никогда в первый раз, когда я пытаюсь это сделать. (После убийства приложений iTunes и App Store)
Майкл

13
На iOS 7 это выводит меня на страницу магазина, но не выбирает вкладку обзора.
devios1

40
В рамках прошивки 10.3 есть новый параметр запрос , который может быть добавлен к URL - адресу: action=write-review. Я проверил это на iOS 10.2, и оно работает, но я не знаю, как далеко это заходит. Это откроет диалоговое окно «Написать отзыв » , а не просто показывает вкладку обзора. Пример: itunes.apple.com/gb/app/…
Джозеф Даффи

61

Обновить:

Swift 5.1, Xcode 11

Протестировано на Real Device iOS 13.0 (Гарантия на работу)

import StoreKit

func rateApp() {

    if #available(iOS 10.3, *) {

        SKStoreReviewController.requestReview()

    } else {

        let appID = "Your App ID on App Store"
        let urlStr = "https://itunes.apple.com/app/id\(appID)" // (Option 1) Open App Page
        let urlStr = "https://itunes.apple.com/app/id\(appID)?action=write-review" // (Option 2) Open App Review Page

        guard let url = URL(string: urlStr), UIApplication.shared.canOpenURL(url) else { return }

        if #available(iOS 10.0, *) {
            UIApplication.shared.open(url, options: [:], completionHandler: nil)
        } else {
            UIApplication.shared.openURL(url) // openURL(_:) is deprecated from iOS 10.
        }
    }
}

Работает в iOS 10.3
Владимир Шутюк

уберите скобки из строки appID, и это
сработает

7
Это больше не работает. Работает <product-url>? Action = write-review. Пожалуйста, проверьте эту документацию для лучшего понимания: developer.apple.com/documentation/storekit/…
Картик Каннан

38

Все, что написано выше, правильно. Просто образец для вставки в приложение и замены {YOUR APP ID} на фактический идентификатор приложения, взятый из iTunesconnect для отображения страницы обзора. Обратите внимание, как было сказано выше, что он не работает на симуляторе - только на устройстве.
- Исправление из-за изменений IOS 7.

NSString * appId = @"{YOUR APP ID}";
NSString * theUrl = [NSString  stringWithFormat:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=%@&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software",appId];
if ([[UIDevice currentDevice].systemVersion integerValue] > 6) theUrl = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@",appId];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:theUrl]];

Похоже, это просто показывает пустую страницу App Store для меня. Похоже, вам нужно добавить «id» перед самим идентификатором
Ger

скобки для appId необходимы? Потому что я забыл включить их, и функция оценки по-прежнему работает нормально.
Гленн

1
используйте Number кроме {YOUR APP ID}, MEANS @ "5555555555" - скобки просто показывают, что это значение
ETech

37

РЕДАКТИРОВАТЬ: iOS 11 Solution

Это решение моего первоначального ответа (см. Ниже). При использовании iOS 11 будет работать следующий формат ссылок:

https://itunes.apple.com/us/app/appName/idAPP_ID?mt=8&action=write-review

Просто замените APP_IDваш конкретный идентификатор приложения. Ключом к работе ссылки является код страны . Ссылка выше использует usкод, но на самом деле не имеет значения, какой код используется. Пользователь будет автоматически перенаправлен в свой магазин.

Обновление iOS 11:

Похоже, что ни одно из решений, представленных в других ответах, чтобы попасть прямо на страницу обзора, не работает на iOS 11.

Скорее всего, проблема в том, что на странице приложения в приложении iOS 11 App Store больше нет вкладки « Обзор». Вместо этого обзоры теперь расположены прямо под описанием и скриншотами. Конечно, все еще можно было бы напрямую добраться до этого раздела (например, с помощью некоторого якоря), но кажется, что это не поддерживается / предназначено Apple.

Использование одной из следующих ссылок больше не работает. Они по-прежнему переносят пользователей в приложение App Store, но только на пустую страницу :

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

Каждый, кто все еще использует эти ссылки, должен обновлять свои приложения как можно скорее , потому что обращение пользователей к пустой странице App Store, скорее всего, не то, что вы хотели.

Ссылки, которые ссылаются не на страницу обзора, а на страницу приложения, все еще работают, например,

itms-apps://itunes.apple.com/app/idYOUR_APP_ID   (same as above, but without write-review parameter)

Таким образом, вы по-прежнему можете получать пользователей на страницу своего магазина приложений, но не прямо в раздел отзывов. Теперь пользователям необходимо прокрутить раздел обзора вручную, чтобы оставить свой отзыв.

Вне всякого сомнения, это «отличное и удивительное преимущество для пользовательского опыта, которое поможет разработчикам привлечь пользователей, чтобы они оставляли высококачественные обзоры, не раздражая их». Молодец Apple ...


SKStoreReviewController. requestReview () работает или нет?
dev_m

1
О SKStoreReviewController: «Запросить StoreKit запросить у пользователя обзор приложения. Это может показывать или не отображать какой-либо пользовательский интерфейс». Так что SKStoreReviewController не является решением. Я стараюсь избегать этого.
Fallstreak

26

Все вышеперечисленные подходы верны, но в настоящее время использование SKStoreProductViewController приводит к улучшению взаимодействия с пользователем. Для его использования необходимо сделать следующее:

  • реализовать протокол SKStoreProductViewControllerDelegate в делегате приложения
  • добавьте необходимый метод productViewControllerDidFinish :

    - (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
      [viewController dismissViewControllerAnimated: YES completion: nil];
    }
  • Проверьте, доступен ли класс SKStoreProductViewController, и либо покажите его, либо переключитесь в App Store:

    extern NSString* cAppleID; // must be defined somewhere...
    
    if ([SKStoreProductViewController class] != nil) {
      SKStoreProductViewController* skpvc = [[SKStoreProductViewController new] autorelease];
      skpvc.delegate = self;
      NSDictionary* dict = [NSDictionary dictionaryWithObject: cAppleID forKey: SKStoreProductParameterITunesItemIdentifier];
      [skpvc loadProductWithParameters: dict completionBlock: nil];
      [[self _viewController] presentViewController: skpvc animated: YES completion: nil];
    }
    else {
      static NSString* const iOS7AppStoreURLFormat = @"itms-apps://itunes.apple.com/app/id%@";
      static NSString* const iOSAppStoreURLFormat = @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%@";
      NSString* url = [[NSString alloc] initWithFormat: ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0f) ? iOS7AppStoreURLFormat : iOSAppStoreURLFormat, cAppleID];
      [[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];
    }

5
Это выглядело как отличное решение, но я не смог заставить это работать. Кнопка «Написать отзыв» отключена. Сначала я подумал, что это потому, что я запускал свою версию dev, и подумал, что, возможно, версия магазина приложений должна быть установлена. Поэтому я создал совершенно новый идентификатор пакета и запустил его вместе с версией из магазина приложений, но все равно не повезло. Исходя из этого поста, похоже, что кнопка «Написать отзыв» отключена в iOS 7+ stackoverflow.com/questions/19058069/…
Matt R

@ MattR это может быть потому, что вы не приобрели это приложение. Кнопка «Написать отзыв» была включена для меня, но ничего не делала. Мне нужно будет проверить, работает ли он, только если вы приобрели приложение.
Камран Хан

3
Любая идея, как открыть вкладку "обзоры" по умолчанию с этой реализацией? Документация Apple дает мне только 3 параметра, но ни один из них не связан с тем, что мне нужно: SKStoreProductParameterITunesItemIdentifier, SKStoreProductParameterAffiliateToken & SKStoreProductParameterCampaignToken
Йован

@KamranKhan, я вижу то же самое. Мне интересно, если это отключено в версии для разработчиков. Вы пробовали это в прилагаемом приложении (подписано), чтобы увидеть, работает ли оно?
Шамми

@ Шамми Нет, я не проверял это.
Камран Хан

15

Решение для iOS 11

Короткие URL-адреса App Store некорректно открывают интерфейс «написать обзор» в новом iOS 11 App Store. Например, это не работает:

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

Обходной путь должен включать двухбуквенный код страны и название приложения в URL, например:

https://itunes.apple.com/ us / app / twitter / id333903271? mt = 8 & action = write-review

или

itms-apps: //itunes.apple.com/ us / app / twitter / id333903271? mt = 8 & action = write-review

Вы можете получить полный URL вашего приложения здесь: https://linkmaker.itunes.apple.com/

Это успешно открывает интерфейс «написать обзор» в iOS 11 App Store.

Редактировать: как упоминается ниже @Theo, код страны не нужно локализовать, а имя приложения в URL не нужно обновлять, если имя приложения меняется.

Надеюсь, Apple исправит это в ближайшее время для более короткого URL. Смотрите rdar: // 34498138


3
Это правильный путь для iOS 11, представленный в сессии 303 WWDC . Обратите внимание, что параметр mt=8не обязателен. Кроме того, очевидно, что код страны и название приложения в URL-адресе являются обязательными, но игнорируются. Таким образом, URL-адрес не должен быть локализован или обновлен при изменении имени приложения.
Тео,

@ То есть вы правы, нужно изменить только удостоверение личности:itms-apps://itunes.apple.com/xy/app/foo/id{your_app_id}?action=write-review
DaveAlden

4
Шутки в сторону? Сколько часов WWDC мы должны наблюдать, чтобы избежать подобных вещей?!?
Тибо Ной

1
Как примечание для других, новая глубокая ссылка доступна начиная с iOS 10.3, как сказано в сессии 303 WWDC .
Кюли,


11

Все предыдущие ссылки больше не ведут прямо на вкладку «Отзывы»,

Эта ссылка будет напрямую указывать на «Обзоры вкладок»:

https://itunes.apple.com/app/viewContentsUserReviews?id=AppID

или

ITMS-приложения: //itunes.apple.com/app/viewContentsUserReviews ID = AppID


1
В Apple Developer Library нет официальной ссылки, которая направляет пользователя на «Вкладку отзывов». Однако, начиная с ios4, вы найдете зарезервированные ключевые слова, такие как viewContentsUserReviews или id, которые Apple все еще использует в качестве параметров получения URL. Если вы хотите остаться в безопасности, используйте официальный Link Maker linkmaker.itunes.apple.com/en-us
Satinos

1
@ Мисс Нехаль, вопрос требует ссылок. Oни являются фактическим ответом, а не указатель на ответ.
Тоби Нэри

9

В iOS7 URL, который переключает ваше приложение в App Store для оценки и просмотра, изменился:

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

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

Для iOS 6 и старше, URL в предыдущих ответах работает нормально.

Источник: Appirater

Наслаждайтесь кодированием!


Это работает на iPhone. Никогда не проверял это на iPad. Ссылка работает на iPhone. Попробуйте отладить !!
Сахил Махаджан,

2
Я получил белый квадрат, потому что я не понял, что вы добавляете id к своему номеру в URL. Я только что попробовал "... / app / 123123123", а не: "... / app / id123123123". Хаха, позор мне, что я не читаю правильно. Надеюсь, это поможет любому, кто случайно сделал это тоже.
cclogg

8

В iOS 11+ (новый магазин приложений) появился новый способ сделать это . Вы можете открыть диалоговое окно «Написать отзыв» напрямую.

Пример iOS 11:

itms-apps://itunes.apple.com/us/app/id1137397744?action=write-review

или

https://itunes.apple.com/us/app/id1137397744?action=write-review

Ноты:

  • Требуется код страны ( /us/). Это может быть любой код страны, не имеет значения.
  • Измените идентификатор приложения ( 1137397744) на идентификатор приложения (получите его из iTunes URL).
  • Если вы хотите поддерживать более старую версию iOS (до 11), вам нужно, чтобы некоторая условная логика связывалась таким образом, только если версия ОС больше или равна 11.

8

Использование этого URL было идеальным решением для меня. Это берет пользователя непосредственно к Write a Review section. Кредиты @ Джозефу Даффи. ДОЛЖЕН ПОПЫТАТЬСЯ

URL = itms-apps://itunes.apple.com/gb/app/idYOUR_APP_ID_HERE?action=write-review&mt=8 заменить YOUR_APP_ID_HERE своим AppId

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

Swift 3, Xcode 8.2.1:

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

Здесь showAlert является пользовательской функцией для UIAlertController.


2
Пожалуйста, не добавляйте один и тот же ответ на несколько вопросов. Ответьте лучшим и отметьте остальные как дубликаты. См. Допустимо ли добавить дублирующий ответ на несколько вопросов?
g00glen00b

1
Хорошо, брат, спасибо. Я новичок в этом и учусь. Спасибо за руководство будет иметь это в виду.
Анкит Кумар Гупта

7

Начиная с iOS 10.3 вы можете прикрепить action=write-reviewэлемент запроса к вашему https://itunes.apple.com/...и https://appsto.re/...URL. На iOS 10.3 и выше он открывается Write a reviewавтоматически, а на более низких версиях iOS возвращается к странице App Store приложения.

Обновление iOS 11 : используйте Apple Linkmaker: linkmaker.itunes.apple.com и добавьте &action=write-review, кажется, самый безопасный путь.


4

iOS 4 отказалась от функции «Оценить при удалении».

Пока единственный способ оценить приложение - через iTunes.

Изменить: ссылки могут быть созданы для ваших приложений через iTunes Link Maker. На этом сайте есть учебник.


Спасибо . , , и я ищу ссылку на iTunes!
Уильям Джокуш

2
Попробуйте iTunes Link Maker. Насколько я понимаю, он запускает пользовательскую копию iTunes для просмотра магазина. Я отредактирую ответ, чтобы разместить там ссылку.
Kynth

4
NSString *url = [NSString stringWithFormat:@"https://itunes.apple.com/us/app/kidsworld/id906660185?ls=1&mt=8"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

4

Версия Swift 2, которая на самом деле переносит вас на страницу обзора вашего приложения на iOS 8 и iOS 9:

let appId = "YOUR_APP_ID"
let url = "itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=\(appId)"

UIApplication.sharedApplication().openURL(NSURL(string: url)!)

3

Для> = iOS8: (упрощенный ответ EliBud).

#define APP_STORE_ID 1108885113

- (void)rateApp{
    static NSString *const iOSAppStoreURLFormat = @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%d";

    NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:iOSAppStoreURLFormat, APP_STORE_ID]];

    if ([[UIApplication sharedApplication] canOpenURL:appStoreURL]) {
        [[UIApplication sharedApplication] openURL:appStoreURL];
    }
}


3

Ссылка на любое приложение в AppStore через SKStoreProductViewController

С приложением SKStoreProductViewController легко связаться с вашим приложением в магазине приложений. Но я немного постарался, поэтому решил показать здесь весь процесс и необходимый код. Этот метод также гарантирует, что всегда будет использоваться правильное хранилище (важно для локализованных приложений).

Чтобы отобразить экран продукта любого приложения из магазина приложений в вашем приложении с любым из ваших приложений, ViewControllers выполните следующие действия:

  1. Добавьте StoreFit.framework в настройки вашего проекта (цель, этапы сборки -> связать двоичные файлы с библиотеками
  2. Импортировать StoreKit в класс ViewController
  3. Сделайте так, чтобы ваш ViewController соответствовал этому протоколу. SKStoreProductViewControllerDelegate
  4. Создайте метод для представления StoreView с нужным вам экраном продукта.
  5. Закрыть магазин

Но самое главное: это - по некоторым причинам - не работает в симуляторе - вы должны собрать и установить его на реальном устройстве с подключением к Интернету.

  1. Добавление StorKit.framework в ваш проект: Найдите это в настройках вашего проекта

SWIFT 4: это код согласно описанным шагам:

    // ----------------------------------------------------------------------------------------
// 2. Import StoreKit into the ViewController class
// ----------------------------------------------------------------------------------------
import StoreKit

// ...

// within your ViewController

    // ----------------------------------------------------------------------------------------
    // 4. Create the method to present the StoreView with the product screen you want
    // ----------------------------------------------------------------------------------------
    func showStore() {

        // Define parameter for product (here with ID-Number)
        let parameter : Dictionary<String, Any> = [SKStoreProductParameterITunesItemIdentifier : NSNumber(value: 742562928)]

        // Create a SKStoreProduktViewController instance
        let storeViewController : SKStoreProductViewController = SKStoreProductViewController()

        // set Delegate
        storeViewController.delegate = self

        // load product
        storeViewController.loadProduct(withParameters: parameter) { (success, error) in

            if success == true {
                // show storeController
                self.present(storeViewController, animated: true, completion: nil)
            } else {
                print("NO SUCCESS LOADING PRODUCT SCREEN")
                print("Error ? : \(error?.localizedDescription)")
            }
        }
    }

// ...

// ----------------------------------------------------------------------------------------
// 3. Make your ViewController conforming the protocol SKStoreProductViewControllerDelegate
// ----------------------------------------------------------------------------------------
extension ViewController : SKStoreProductViewControllerDelegate {

    // ----------------------------------------------------------------------------------------
    // 5. Dismiss the StoreView
    // ----------------------------------------------------------------------------------------
    func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
        print("RECEIVED a FINISH-Message from SKStoreProduktViewController")
        viewController.dismiss(animated: true, completion: nil)
    }
}

2

Вот код, который я использую в своем приложении;

-(void)rateApp {

     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[@"itms-apps://itunes.apple.com/app/" stringByAppendingString: @"id547101139"]]]; 
}

2

Принятый ответ не смог загрузить вкладку «Отзывы». Ниже я нашел способ загрузить вкладку «Обзор» без вкладки «Подробности».

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id={APP_ID}&pageNumber=0&sortOrdering=2&mt=8"]];

Замените на {APP_ID}идентификатор приложения в магазине приложений.


2

SWIFT 3

fileprivate func openAppStore() {
        let appId = "YOUR_APP_ID"
        let url_string = "itms-apps://itunes.apple.com/app/id\(appId)"
        if let url = URL(string: url_string) {
            UIApplication.shared.openURL(url)
        }
    }

2

цитата из документации разработчика Apple

Кроме того, вы можете по-прежнему включать постоянную ссылку в настройках или экранах конфигурации вашего приложения, которая содержит ссылки на страницу вашего магазина приложений. Чтобы автоматически открыть страницу, на которой пользователи могут написать отзыв в App Store, добавьте параметр запроса action = write-review к URL-адресу вашего продукта.

Таким образом, URL будет следующим:

itms-apps: //itunes.apple.com/app/id YOUR_APP_ID ? action = write-review


2

Это прекрасно работает на iOS 9 - 11.

Не тестировался на более ранних версиях.

[NSURL URLWithString:@"https://itunes.apple.com/app/idXXXXXXXXXX?action=write-review"];

2
let rateUrl = "itms-apps://itunes.apple.com/app/idYOUR_APP_ID?action=write-review"
if UIApplication.shared.canOpenURL(rateUrl) {
    UIApplication.shared.openURL(rateUrl)
}

0

Начиная с iOS 10.3:

import StoreKit

func someFunction() {
 SKStoreReviewController.requestReview()
}

но он был только что выпущен с 10.3, так что вам все еще понадобится некоторый запасной метод для более старых версий, как описано выше


0

Если ваше приложение было одобрено для бета-версии и оно не является действующим, тогда доступна ссылка на рецензирование приложения, но оно не будет доступно, чтобы оставлять отзывы.

  1. Войти в iTunes Connect
  2. щелчок My Apps
  3. Нажмите на App Iconваш интерес в
  4. Убедитесь, что вы на App Storeстранице
  5. Перейти в App Informationраздел (он должен автоматически доставить вас туда)
  6. Внизу этой страницы есть синяя ссылка с надписью View on App Store. Нажмите на нее, и она откроется на пустой странице. Скопируйте то, что находится в строке URL в верхней части страницы, и это ссылка на отзывы вашего приложения. Это будет жить, как только приложение в прямом эфире.

введите описание изображения здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.