Подтвердить что ты не робот

Надежное открытие ссылок в App Store из UIWebView

У меня есть приложение, которое будет отображать веб-страницы в UIWebView. На страницах, которые он показывает, могут содержаться ссылки на другие приложения для iPhone в App Store.

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

Есть ли способ убедиться, что при нажатии на ссылку в App Store внутри моего UIWebView приложение App Store на iPhone откроется и покажет приложение?

То, что я видел в своих тестах, заключается в том, что существует несколько типов ссылок, которые могут привести к созданию страницы в App Store:

  • ссылки phobos - phobos.apple.com/etc и т.д. и т.д.
  • ссылки itunes.com/app/appname
  • рефералы/партнерские ссылки
  • любой, о котором я не знаю

Когда я открываю любую из этих ссылок в браузере для рабочего стола, они будут работать и в итоге откроют iTunes. Когда я открываю любую из этих ссылок из iPhone, UIWebView проходит через несколько переадресаций, и в итоге произойдет одна из двух вещей:

  • Переадресация не работает должным образом, и я заканчиваю тем, что страница не загружала вызов метода
  • Открывается работа перенаправления и приложение iTunes, выполняется поиск имени приложения, после чего я получаю сообщение от iTunes, объясняющее, что он не может подключиться к хранилищу.

Единственный раз, когда я смог открыть приложение App Store, - это прямая ссылка iTunes на приложение без каких-либо реферальных или переадресаций.

Очевидно, что для реферальных или партнерских ссылок я не хочу лишать идентификатор реферала или идентификатор партнера. Я не должен лишать их реферала, если это была их ссылка, которая была нажата.

Поэтому любая помощь будет принята с благодарностью.

Спасибо.

4b9b3361

Ответ 1

Я нашел этот Технический Q & A от Apple, который отвечает на мой вопрос:

Основной смысл таков:

phobos.apple.com правильно построенные ссылки перенаправляются непосредственно в приложение App Store. Ссылки itunes.apple.com должны быть преобразованы в ссылки phobos. реферальные/партнерские ссылки должны быть пройдены с использованием NSURLConnection, и конечным итоговым URL будет ссылка phobos, которая может быть использована.

Спасибо за помощь ребятам.

Ответ 2

В моих тестах я получил только phobos.apple.com ссылки для автоматического перенаправления на AppStore (без перенаправления Safari).

Ответ 3

Дополнение к документации разработчика, я думаю, что они должны иметь дело, когда redirectResponse есть nil. Мне потребовалось некоторое время, чтобы выяснить, что не так.

// Save the most recent URL in case multiple redirects occur
// "iTunesURL" is an NSURL property in your class declaration
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response {
    if (response) {
        self.iTunesURL = [response URL];
    }
    else {
        self.iTunesURL = [request URL];
    }

    return request;
}

Ответ 4

Если вы еще не протестировали это на реальном устройстве, могу сказать, что iPhone Simulator имеет проблемы с перенаправлением этих ссылок в App Store (возможно, потому, что у Simulator его нет). Запуск приложения на устройстве приведет к разному поведению в этой конкретной области, поэтому убедитесь, что вы его тестируете.

Ответ 5

Я пытался сделать то же самое. Я хочу разместить ссылку на полную версию своего приложения в бесплатной версии. Я только что подтвердил, что метод, используемый в документе, работает. ТОЛЬКО на самом устройстве. Никогда не доверяйте симулятору!

Добавьте материал в документ и назовите его следующим образом:

NSString *testLink = @"http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284417350&mt=8";   

self.iTunesLink = [NSURL URLWithString:testLink];

[self openReferralURL:iTunesLink];