Как сделать ссылку на приложение в магазине приложений

641

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

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8

iPhone сначала открывает Safari, а затем магазин приложений. Я использовал другие приложения, которые открывают магазин приложений напрямую, поэтому я знаю, что это возможно.

Любые идеи? Что такое URL-схема для магазина приложений?

  • 1
    Для SWIFT 3.X и локализованных приложений этот ответ может помочь: stackoverflow.com/a/41765175/3143890
Теги:
app-store

23 ответа

713
Лучший ответ

Отредактировано 2016-02-02

Начиная с iOS 6 был введен класс SKStoreProductViewController. Вы можете связать приложение, не выходя из своего приложения. Фрагмент кода в Swift 3.x/2.x и Objective-C находится здесь.

Объект SKStoreProductViewController представляет собой магазин, который позволяет пользователю приобретать другие носители из App Store. Например, ваше приложение может отображать хранилище, чтобы позволить пользователю приобретать другое приложение.


Из новостей и анонсов для разработчиков Apple.

Привод клиентов напрямую к вашему приложению в App Store с помощью ссылок iTunes. Благодаря ссылкам iTunes вы можете предоставить своим клиентам простой доступ к вашим приложениям в App Store непосредственно с вашего сайта или маркетинговых кампаний. Создание ссылки iTunes прост и может быть направлено на то, чтобы направлять клиентов либо к одному приложению, и ко всем вашим приложениям, либо к определенному приложению с указанным названием вашей компании.

Чтобы отправить клиентов в конкретное приложение: http://itunes.com/apps/appname

Чтобы отправить клиентов в список приложений, которые есть в App Store: http://itunes.com/apps/developername

Чтобы отправить клиентов в конкретное приложение с именем вашей компании, включенным в URL-адрес: http://itunes.com/apps/developername/appname


Дополнительные примечания:

Вы можете заменить http:// itms:// или itms-apps:// чтобы избежать перенаправления.

Информацию об именовании см. В Apple QA1633:

https://developer.apple.com/library/content/qa/qa1633/_index.html.

Изменить (по состоянию на январь 2015 года):

Ссылки itunes.com/apps должны быть обновлены до appstore.com/apps. См. QA1633 выше, который был обновлен. Новый QA1629 предлагает эти шаги и код для запуска магазина из приложения:

  1. Запустите iTunes на своем компьютере.
  2. Найдите элемент, к которому хотите подключиться.
  3. Щелкните правой кнопкой мыши или щелкните правой кнопкой мыши на имени элемента в iTunes, а затем выберите "Копировать URL магазина iTunes Store" во всплывающем меню.
  4. В своем приложении создайте объект NSURL с скопированным URL-адресом iTunes, затем передайте этот объект в UIApplication openURL: openURL чтобы открыть ваш элемент в App Store.

Образец кода:

NSString *iTunesLink = @"itms://itunes.apple.com/us/app/apple-store/id375380948?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

Swift 3.0

   let urlStr = "itms://itunes.apple.com/us/app/apple-store/id375380948?mt=8"
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(URL(string: urlStr)!, options: [:], completionHandler: nil)

    } else {
        UIApplication.shared.openURL(URL(string: urlStr)!)
    }
  • 153
    Совет должен использовать itms: // вместо http: //, тогда он откроется прямо в магазине приложений. На iPhone будет 2 (!) Перенаправления при использовании http и 1 при использовании itms. При использовании более старых ссылок Фобос (см. Выше), перенаправления 0. Используйте идентификатор из iTunes Connect, если используете ссылки Фобоса. Вы можете отправить заявку, не включая бинарный файл. Таким образом, вы получите идентификатор, прежде чем отправлять фактический двоичный файл. Я не пробовал это, но я слышал, что это работает.
  • 1
    Есть ли способ, чтобы сделать ссылку, как это, и при этом сохранить статус партнера?
Показать ещё 34 комментария
313

Если вы хотите открыть приложение непосредственно в App Store, вы должны использовать:

ITMS-приложения://...

Таким образом, он будет непосредственно открывать приложение App Store на устройстве, вместо того, чтобы сначала идти в iTunes, а затем открывать App Store (при использовании только itms://)

Надеюсь, что это поможет.


EDIT: APR, 2017. itms-apps://действительно работает снова в iOS10. Я протестировал его.

EDIT: апрель, 2013 год. Это больше не работает в iOS5 и выше. Просто используйте

https://itunes.apple.com/app/id378458261

и переадресаций больше нет.

  • 0
    Я не думаю, что это нужно больше. Я использую http в своем приложении, и оно идет прямо в приложение App Store.
  • 2
    @PEZ На сегодняшний день я вижу два перенаправления при использовании http: // ... Ответ отлично работает для меня - itms-apps: // ... напрямую открывает приложение App Store на устройстве без каких-либо перенаправлений.
Показать ещё 12 комментариев
171

Чтобы быть предельно лаконичным:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/appname"]];

Если вы хотите отправить все приложения разработчику, используйте

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/developername"]];

Эти работы для iOS 4.1

Если вы хотите установить связь с приложениями разработчика, а имя разработчика имеет знаки препинания или пробелы (например, Development Company, LLC), введите свой URL-адрес следующим образом:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.com/apps/DevelopmentCompanyLLC"]];

В противном случае он возвращает "Этот запрос не может быть обработан" в iOS 4.3.3

47

Начиная с iOS 6, можно сделать это с помощью класса SKStoreProductViewController.

Swift 3.x:

func openStoreProductWithiTunesItemIdentifier(identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) -> Void in
        if loaded {
            // Parent class of self is UIViewContorller
            self?.present(storeViewController, animated: true, completion: nil)
        }
    }
}

func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
    viewController.dismiss(animated: true, completion: nil)
}
// Usage:
openStoreProductWithiTunesItemIdentifier(identifier: "13432")

Вы можете получить идентификатор элемента itunes приложения следующим образом: (вместо статического)

Swift 3.2

var appID: String = infoDictionary["CFBundleIdentifier"]
var url = URL(string: "http://itunes.apple.com/lookup?bundleId=\(appID)")
var data = Data(contentsOf: url!)
var lookup = try? JSONSerialization.jsonObject(with: data!, options: []) as? [AnyHashable: Any]
var appITunesItemIdentifier = lookup["results"][0]["trackId"] as? String
openStoreProductViewController(withITunesItemIdentifier: Int(appITunesItemIdentifier!) ?? 0)

Swift 2.x:

func openStoreProductWithiTunesItemIdentifier(identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProductWithParameters(parameters) { [weak self] (loaded, error) -> Void in
        if loaded {
            // Parent class of self is UIViewContorller
            self?.presentViewController(storeViewController, animated: true, completion: nil)
        }
    }
}

func productViewControllerDidFinish(viewController: SKStoreProductViewController) {
    viewController.dismissViewControllerAnimated(true, completion: nil)
}
// Usage
openStoreProductWithiTunesItemIdentifier("2321354")

цель-C:

static NSInteger const kAppITunesItemIdentifier = 324684580;
[self openStoreProductViewControllerWithITunesItemIdentifier:kAppITunesItemIdentifier];

- (void)openStoreProductViewControllerWithITunesItemIdentifier:(NSInteger)iTunesItemIdentifier {
    SKStoreProductViewController *storeViewController = [[SKStoreProductViewController alloc] init];

    storeViewController.delegate = self;

    NSNumber *identifier = [NSNumber numberWithInteger:iTunesItemIdentifier];

    NSDictionary *parameters = @{ SKStoreProductParameterITunesItemIdentifier:identifier };
    UIViewController *viewController = self.window.rootViewController;
    [storeViewController loadProductWithParameters:parameters
                                   completionBlock:^(BOOL result, NSError *error) {
                                       if (result)
                                           [viewController presentViewController:storeViewController
                                                              animated:YES
                                                            completion:nil];
                                       else NSLog(@"SKStoreProductViewController: %@", error);
                                   }];

    [storeViewController release];
}

#pragma mark - SKStoreProductViewControllerDelegate

- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
    [viewController dismissViewControllerAnimated:YES completion:nil];
}

Вы можете получить kAppITunesItemIdentifier (идентификатор элемента приложения itunes) следующим образом: (вместо статического)

NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
    NSString* appID = infoDictionary[@"CFBundleIdentifier"];
    NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.apple.com/lookup?bundleId=%@", appID]];
    NSData* data = [NSData dataWithContentsOfURL:url];
    NSDictionary* lookup = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
    NSString * appITunesItemIdentifier =  lookup[@"results"][0][@"trackId"]; 
    [self openStoreProductViewControllerWithITunesItemIdentifier:[appITunesItemIdentifier intValue]];
  • 0
    нет необходимости в выпуске, и да, это работает!
  • 4
    в быстром не забудьте импортировать и делегировать: импортировать класс StoreKit RateMeViewController: UIViewController, SKStoreProductViewControllerDelegate {
Показать ещё 3 комментария
35

Летом 2015 года и далее...

-(IBAction)clickedUpdate
{
    NSString *simple = @"itms-apps://itunes.apple.com/app/id1234567890";
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:simple]];
}

заменить "id1234567890" на "id" и "ваш десятизначный номер"

  • Это отлично работает на всех устройствах.

  • Это действительно прямо в хранилище приложений, без переадресаций.

  • ОК для всех национальных магазинов.

  • Верно, что вы должны перейти к использованию loadProductWithParameters, , но, если цель ссылки - обновить приложение, на котором вы находитесь, внутри: it возможно, лучше использовать этот "старомодный" подход.

  • 0
    Кроме того, для перехода на страницу разработчика (если вы хотите показать пользователю свой каталог приложений) вы можете использовать: NSString * simple = @ "itms-apps: //itunes.com/apps/YOUR_COMPANY_NAME";
  • 2
    Где я могу найти этот идентификатор?
Показать ещё 1 комментарий
32

Apple только что объявила URL-адреса appstore.com.

https://developer.apple.com/library/ios/qa/qa1633/_index.html

Существует три типа коротких ссылок в App Store в двух формах: один для приложений для iOS, другой для Mac Apps:

Название компании

iOS: http://appstore.com/, например http://appstore.com/apple

Mac: http://appstore.com/mac/, например http://appstore.com/mac/apple

Имя приложения

iOS: http://appstore.com/, например http://appstore.com/keynote

Mac: http://appstore.com/mac/, например http://appstore.com/mac/keynote

Приложение от компании

iOS: http://appstore.com//например, http://appstore.com/apple/keynote

Mac: http://appstore.com/mac//например, http://appstore.com/mac/apple/keynote

Большинство компаний и приложений имеют каноническую короткую ссылку на App Store. Этот канонический URL-адрес создается путем изменения или удаления определенных символов (многие из которых являются незаконными или имеют особое значение в URL-адресе (например, "&" )).

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

Удалить все пробелы

Преобразование всех символов в нижний регистр

Удалите все эмблемы (), товарный знак () и зарегистрированные знаки ()

Замените амперсанды ( "&" ) на "и"

Удалите большинство знаков препинания (см. листинг 2 для набора)

Заменить акцентированные и другие "украшенные" символы (ü, å и т.д.) с их элементарным символом (u, a и т.д.)

Оставьте все остальные символы как есть.

Листинг 2 Символы пунктуации, которые необходимо удалить.

!.?

¡ "# $% '() * +, -/:; <= > ¿@[] ^ _` {|} ~

Ниже приведены примеры демонстрации конверсии.

Магазин приложений

Примеры названия компании

Gameloft = > http://appstore.com/gameloft

Activision Publishing, Inc. = > http://appstore.com/activisionpublishinginc

Chen Фотография и программное обеспечение = > http://appstore.com/chensphotographyandsoftware

Примеры имен приложений

Ocarina = > http://appstore.com/ocarina

Где мой Перри? = > http://appstore.com/wheresmyperry

Brain Challenge = > http://appstore.com/brainchallenge

  • 1
    на самом деле это единственное, что по-прежнему работает надежно для Mac Store по крайней мере
  • 0
    Полезно знать об этом, но, к сожалению, на iOS это перенаправляет через Safari (и выдает ужасное сообщение «Cannot Verify Server Identity»).
Показать ещё 1 комментарий
28

Этот код создает ссылку в App Store на iOS

NSString *appName = [NSString stringWithString:[[[NSBundle mainBundle] infoDictionary]   objectForKey:@"CFBundleName"]];
NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"itms-apps://itunes.com/app/%@",[appName stringByReplacingOccurrencesOfString:@" " withString:@""]]];

Замените itms-приложения на http на Mac:

NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"http:/itunes.com/app/%@",[appName stringByReplacingOccurrencesOfString:@" " withString:@""]]]; 

Открыть URL-адрес на iOS:

[[UIApplication sharedApplication] openURL:appStoreURL];

Mac:

[[NSWorkspace sharedWorkspace] openURL:appStoreURL];
  • 0
    Это работает, но вы также должны удалить специальные символы, такие как тире, из названия приложения.
  • 0
    Спасибо @ 3 оборота и @BlackRider
Показать ещё 2 комментария
27

Просто измените 'itunes' на 'phobos' в ссылке на приложение.

http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8

Теперь он сразу откроет App Store

  • 5
    Кажется, это больше не работает с 3.0.
  • 3
    developer.apple.com/iphone/library/qa/qa2008/qa1629.html говорит, что это работает ...
Показать ещё 2 комментария
25

Чтобы иметь прямую ссылку без перенаправления:

  • Используйте средство создания ссылок iTunes http://itunes.apple.com/linkmaker/, чтобы получить реальную прямую ссылку.
  • Замените http:// на itms-apps://
  • Откройте ссылку с [[UIApplication sharedApplication] openURL:url];

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

Источник: https://developer.apple.com/library/ios/#qa/qa2008/qa1629.html

  • 6
    +1 для itunes.apple.com/linkmaker
  • 3
    +1 для itunes.apple.com/linkmaker, каждый тест на ссылку в устройстве не в симуляторе, я тратил время на тестирование симулятора.
Показать ещё 1 комментарий
15

Это отлично работало для меня, используя только APP ID:

 NSString *urlString = [NSString stringWithFormat:@"http://itunes.apple.com/app/id%@",YOUR_APP_ID];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];

Число перенаправлений - ZERO.

  • 3
    у меня работает на iOS 6.0.1 :)
12

В нескольких ответах предлагается использовать 'itms' или 'itms-apps', но эта практика специально не рекомендована Apple. Они предлагают только следующий способ открыть App Store:

Листинг 1 Запуск App Store из приложения iOS

NSString *iTunesLink = @"https://itunes.apple.com/us/app/apple-store/id375380948?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

См. https://developer.apple.com/library/ios/qa/qa1629/_index.html последний обновленный март 2014 года с этого ответа.

Для приложений, поддерживающих iOS 6 и выше, Apple предлагает механизм приложения для представления App Store: SKStoreProductViewController

- (void)loadProductWithParameters:(NSDictionary *)parameters completionBlock:(void (^)(BOOL result, NSError *error))block;

// Example:
SKStoreProductViewController* spvc = [[SKStoreProductViewController alloc] init];
spvc.delegate = self;
[spvc loadProductWithParameters:@{ SKStoreProductParameterITunesItemIdentifier : @(364709193) } completionBlock:^(BOOL result, NSError *error){ 
    if (error)
        // Show sorry
    else
        // Present spvc
}];

Обратите внимание, что на iOS6 блок завершения может не вызываться, если есть ошибки. Это, похоже, ошибка, которая была решена в iOS 7.

11

Если вы хотите установить связь с приложениями разработчика, а имя разработчика имеет знаки препинания или пробелы (например, Development Company, LLC), введите свой URL-адрес следующим образом:

itms-apps://itunes.com/apps/DevelopmentCompanyLLC

В противном случае он возвращает "Этот запрос не может быть обработан" в iOS 4.3.3

  • 1
    Если это не работает для вас, попробуйте следующий синтаксис: itms-apps: //itunes.com/apps/ChuckSmith/id290402113, заменив мое имя вашей компанией и мой ID на ваш Artist ID, который вы можете получить по ссылке iTunes создатель: itunes.apple.com/linkmaker
  • 0
    Вы также можете попытаться закодировать эти «специальные» символы - т.е. заменить «.» с "% 2E"
Показать ещё 1 комментарий
10

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

  • 0
    Это мне помогает, потому что ссылка в моем itunes-connect не работает, а в генераторе это работает. благодарю вас
8

Это работает и напрямую связывается с ios5

NSString *iTunesLink = @"http://itunes.apple.com/app/baseball-stats-tracker-touch/id490256272?mt=8";  
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];
7

Это простой и короткий способ перенаправления/соединения другого существующего приложения в магазине приложений.

 NSString *customURL = @"http://itunes.apple.com/app/id951386316";

 if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:customURL]])
 {
       [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
 } 
3

Для Xcode 9.1 и Swift 4:

  1. Импорт StoreKit:
import StoreKit

2. соответствовать протоколу

SKStoreProductViewControllerDelegate

3. Реализовать протокол

func openStoreProductWithiTunesItemIdentifier(identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) -> Void in

        if loaded {
            // Parent class of self is UIViewContorller
            self?.present(storeViewController, animated: true, completion: nil)
        }
    }   
}

3,1

func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
    viewController.dismiss(animated: true, completion: nil)
}
  1. Как пользоваться:
openStoreProductWithiTunesItemIdentifier(identifier: "here_put_your_App_id")

Замечания:

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

  • 1
    Я делаю то же самое, работает на устройстве. Нет успеха
  • 2
    да это не работает для меня тоже!
3

Не менее iOS 9 и выше

  • Открыть непосредственно в App Store

Приложение

itms-apps://itunes.apple.com/app/[appName]/[appID]

Список приложений для разработчиков

itms-apps://itunes.apple.com/developer/[developerName]/[developerID]
3

Создание ссылки может стать сложной проблемой при поддержке нескольких ОС и нескольких платформ. Например, WebObjects не поддерживается в iOS 7 (некоторые из них), некоторые созданные вами ссылки откроют другой магазин страны, а затем пользователь и т.д.

Существует библиотека с открытым исходным кодом, называемая iLink, которая может вам помочь.

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

Скопируйте 2 файла библиотеки в ваш проект (iLink.h и iLink.m).

На вашем appDelegate.m:

#import "iLink.h"

+ (void)initialize
{
    //configure iLink
    [iLink sharedInstance].globalPromptForUpdate = YES; // If you want iLink to prompt user to update when the app is old.
}

и в том месте, где вы хотите открыть страницу рейтинга, например, просто используйте:

[[iLink sharedInstance] iLinkOpenAppPageInAppStoreWithAppleID: YOUR_PAID_APP_APPLE_ID]; // You should find YOUR_PAID_APP_APPLE_ID from iTunes Connect 

Не забудьте импортировать iLink.h в тот же файл.

Существует очень хороший документ для всей библиотеки, а пример - для iPhone и Mac.

3

Я могу подтвердить, что если вы создаете приложение в iTunes connect, вы получаете свой идентификатор приложения перед отправкой.

Таким образом..

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

NSURL *appStoreURL = [NSURL URLWithString:@"itms-apps://itunes.apple.com/app/id123456789"];
    if ([[UIApplication sharedApplication]canOpenURL:appStoreURL])
        [[UIApplication sharedApplication]openURL:appStoreURL];

Работает с лечением

1

Согласно последнему документу Apple, вам необходимо использовать

appStoreLink = "https://itunes.apple.com/us/app/apple-store/id375380948?mt=8"  

или же

SKStoreProductViewController 
  • 0
    Можете ли вы обновить свою ссылку, пожалуйста? Это кажется довольно интересным, если это не сработает.
  • 0
    Связанный документ не упоминает itms: или itms-apps: Ссылки, использующие эту схему, прекрасно работают на моих устройствах под управлением iOS 12.
Показать ещё 1 комментарий
1

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

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

Если у вас нет идентификатора магазина приложений, вы можете создать URL-адрес на основе этой документации https://developer.apple.com/library/ios/qa/qa1633/_index.html

+ (NSURL *)appStoreURL
{
    static NSURL *appStoreURL;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        appStoreURL = [self appStoreURLFromBundleName:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]];
    });
    return appStoreURL;
}

+ (NSURL *)appStoreURLFromBundleName:(NSString *)bundleName
{
    NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"itms-apps://itunes.com/app/%@", [self sanitizeAppStoreResourceSpecifier:bundleName]]];
    return appStoreURL;
}

+ (NSString *)sanitizeAppStoreResourceSpecifier:(NSString *)resourceSpecifier
{
    /*
     https://developer.apple.com/library/ios/qa/qa1633/_index.html
     To create an App Store Short Link, apply the following rules to your company or app name:

     Remove all whitespace
     Convert all characters to lower-case
     Remove all copyright (), trademark () and registered mark () symbols
     Replace ampersands ("&") with "and"
     Remove most punctuation (See Listing 2 for the set)
     Replace accented and other "decorated" characters (ü, å, etc.) with their elemental character (u, a, etc.)
     Leave all other characters as-is.
     */
    resourceSpecifier = [resourceSpecifier stringByReplacingOccurrencesOfString:@"&" withString:@"and"];
    resourceSpecifier = [[NSString alloc] initWithData:[resourceSpecifier dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES] encoding:NSASCIIStringEncoding];
    resourceSpecifier = [resourceSpecifier stringByReplacingOccurrencesOfString:@"[!¡\"#$%'()*+,-./:;<=>¿?@\\[\\]\\^_`{|}~\\s\\t\\n]" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, resourceSpecifier.length)];
    resourceSpecifier = [resourceSpecifier lowercaseString];
    return resourceSpecifier;
}

Проходит этот тест

- (void)testAppStoreURLFromBundleName
{
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Nuclear"].absoluteString, @"itms-apps://itunes.com/app/nuclear", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Magazine+"].absoluteString, @"itms-apps://itunes.com/app/magazine", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Karl & CO"].absoluteString, @"itms-apps://itunes.com/app/karlandco", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"[Fluppy fuck]"].absoluteString, @"itms-apps://itunes.com/app/fluppyfuck", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Pollos Hérmanos"].absoluteString, @"itms-apps://itunes.com/app/polloshermanos", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Niños and niñas"].absoluteString, @"itms-apps://itunes.com/app/ninosandninas", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Trond, MobizMag"].absoluteString, @"itms-apps://itunes.com/app/trondmobizmag", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"!__SPECIAL-PLIZES__!"].absoluteString, @"itms-apps://itunes.com/app/specialplizes", nil);
}
0

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

Когда я последний раз посещал, мне удалось заставить его работать в формате:

itms-apps://itunes.apple.com/developer/developer-name/id123456789

Это больше не работает, но удаление имени разработчика делает:

itms-apps://itunes.apple.com/developer/id123456789
0

Попробуйте этот путь

http://itunes.apple.com/lookup?id= "ваш идентификатор приложения здесь" return json.От этого найдите ключ " trackViewUrl" и Значение - желаемый URL. используйте этот url (просто замените https:// на itms-apps://). Это работает отлично.

Например, если ваш идентификатор приложения - xyz, перейдите по этой ссылке http://itunes.apple.com/lookup?id=xyz

Затем найдите url для ключа " trackViewUrl". Это URL-адрес вашего приложения в магазине приложений и использование этого URL-адреса в xcode. Попробуйте это

NSString *iTunesLink = @"itms-apps://itunes.apple.com/us/app/Your app name/id Your app ID?mt=8&uo=4";
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню