Надежно открывающие ссылки в App Store из UIWebView - PullRequest
16 голосов
/ 21 сентября 2009

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

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

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

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

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

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

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

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

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

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

Спасибо.

Ответы [ 5 ]

13 голосов
/ 22 сентября 2009

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

Основная суть такова:

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

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

3 голосов
/ 22 сентября 2009

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

2 голосов
/ 06 февраля 2011

В дополнение к документации для разработчиков , я думаю, у них должен быть случай, когда 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;
}
1 голос
/ 08 октября 2009

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

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

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

self.iTunesLink = [NSURL URLWithString:testLink];

[self openReferralURL:iTunesLink];
1 голос
/ 22 сентября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...