Надежное открытие ссылок в 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 на приложение без каких-либо реферальных или переадресаций.
Очевидно, что для реферальных или партнерских ссылок я не хочу лишать идентификатор реферала или идентификатор партнера. Я не должен лишать их реферала, если это была их ссылка, которая была нажата.
Поэтому любая помощь будет принята с благодарностью.
Спасибо.
Ответы
Ответ 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];