Как сделать ссылку на приложение в магазине приложений - PullRequest
668 голосов
/ 12 января 2009

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

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

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

Есть идеи? Что такое схема URL для магазина приложений?

Ответы [ 22 ]

12 голосов
/ 09 июля 2011

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

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

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

11 голосов
/ 25 марта 2013

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

9 голосов
/ 07 января 2012

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

NSString *iTunesLink = @"http://itunes.apple.com/app/baseball-stats-tracker-touch/id490256272?mt=8";  
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];
8 голосов
/ 09 января 2015

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

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

 if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:customURL]])
 {
       [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
 } 
5 голосов
/ 21 ноября 2017

Для 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")

Примечание:

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

4 голосов
/ 10 августа 2014

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

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

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

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

В вашем приложении Delegate.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.

4 голосов
/ 18 марта 2014

Я могу подтвердить, что если вы создадите приложение в 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];

Работает угощение

4 голосов
/ 08 марта 2017

Как минимум iOS 9 и выше

  • Открыть прямо в App Store

Приложение

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

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

itms-apps://itunes.apple.com/developer/[developerName]/[developerID]
3 голосов
/ 19 декабря 2017

Согласно последнему документу Apple Вам нужно использовать

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

или

SKStoreProductViewController 
2 голосов
/ 30 ноября 2018

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

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

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

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

itms-apps://itunes.apple.com/developer/id123456789
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...