Ссылка в магазине приложений на "оценить / просмотреть это приложение"

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

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

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

29 ответов

Решение

Для версий ниже 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

Обновить:

Swift 4.0, Xcode 9.1

Протестировано на реальном устройстве iOS 11.x (гарантия на работу)

let appID = "Your App ID on App Store"
let urlStr = "itms-apps://itunes.apple.com/app/id\(appID)" // (Option 1) Open App Page    
let urlStr = "itms-apps://itunes.apple.com/app/viewContentsUserReviews?id=\(appID)" // (Option 2) Open App Review Tab


if let url = URL(string: urlStr), UIApplication.shared.canOpenURL(url) {
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    } else {
        UIApplication.shared.openURL(url)
    }
}

openURL (_:) устарела с iOS 10.

РЕДАКТИРОВАТЬ: 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...

Все, что написано выше, правильно. Просто образец для вставки в приложение и замены {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]];

Все вышеперечисленные подходы верны, но в настоящее время использование 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]];
    }
    

Решение для 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

Версия Swift 2

func jumpToAppStore(appId: String) {
    let url = "itms-apps://itunes.apple.com/app/id\(appId)"
    UIApplication.sharedApplication().openURL(NSURL(string: url)!)
}

В 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.

Вы можете использовать эту ссылку в своей функции запуска URL

https://apps.apple.com/app/APP_ID?action=write-review

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

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

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

или

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

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

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

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

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

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

Источник: Appirater

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

Начиная с 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: https://linkmaker.itunes.apple.com/ и добавьте &action=write-reviewКажется, это самый безопасный путь.

Версия 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)!)
NSString *url = [NSString stringWithFormat:@"https://itunes.apple.com/us/app/kidsworld/id906660185?ls=1&mt=8"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

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

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

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

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

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

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

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

Для>= 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];
    }
}
let rateUrl = "itms-apps://itunes.apple.com/app/idYOUR_APP_ID?action=write-review"
 if(UIApplication.shared.canOpenURL(rateUrl)) {
            UIApplication.shared.openURL(rateUrl)
        }

Ссылка на любое приложение в 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)
    }
}

У меня та же проблема в iOS 10, и я могу открыть раздел ставки iTunes, позвонив:

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

В основном это изменило последний URL-адрес вар "МТ = 7"

ура

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

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

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

Принятый ответ не удалось загрузить вкладку "Отзывы". Я нашел метод ниже, чтобы загрузить вкладку "Обзор" без вкладки "Подробности".

[[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} с вашим приложением магазин приложений идентификатор приложения.

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

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

-(void)rateApp {

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

Начиная с iOS 10.3:

import StoreKit

func someFunction() {
 SKStoreReviewController.requestReview()
}

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

Swift 5 протестирован на iOS14

Открывает окно обзора с выбранными 5 звездами

private func openReviewInAppStore() {
    let rateUrl = "itms-apps://itunes.apple.com/app/idYOURAPPID?action=write-review"
    if UIApplication.shared.canOpenURL(URL.init(string: rateUrl)!) {
        UIApplication.shared.open(URL.init(string: rateUrl)!, options: [:], completionHandler: nil)
    }
}

Знайте свой идентификатор приложения Apple, это числовые цифры в URL-адресе вашего приложения itunes после поля идентификатора.

Что-то вроде этого: https://itunes.apple.com/app/id148688859, тогда 148688859 — это идентификатор вашего приложения.

Затем перенаправьте на этот URL-адрес, используя правильный идентификатор приложения: https://itunes.apple.com/app/idYOUR_APP_ID?action=write-review .

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

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

Другие вопросы по тегам