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

Беспроводное распределение приложений iphone - проблема с протоколом itms-services

Я следил за всеми направлениями из Apple и некоторым другим блогом posts. Я заархивировал приложение, сделал файлы .plist и .ipa, поместил их на сервер и связал с ними. Я могу установить профиль подготовки просто отлично. Но когда я нажимаю на ссылку для установки приложения (в сафари на iphone), ничего не происходит. Нет сообщения об ошибке. Ничего. Вот как выглядит ссылка:

<a href="itms-services://?action=download-manifest&url=http://mydomain.com/test/myApp.plist">Install the app</a>

Любая идея, почему это не работает? Кажется, протокол itms-services просто мертв. MIME-типы прекрасны (я могу указать файл plist в адресной строке и отображать его как текст).

4b9b3361

Ответ 1

У меня были подобные симптомы, когда у меня было место в именах файлов манифеста и файла архива приложения. Я удалил из них все пробелы, и для меня работала беспроводная установка. Похоже, ваш манифест не имеет места, поэтому, возможно, ваш файл приложения?

Ответ 2

Ответ на самом деле очень прост: URL-адрес должен быть "с двойным экранированием", т.е.

itms-services://?action=download-manifest&url=https://example.com/My%2520App.plist

Это связано с тем, что значение становится не привязанным к https://example.com/My%20App.plist перед тем, как быть обработанным как другой URL. Это освобождается сервером на example.com до пробела.

Парсер не обрабатывает + специально: ...&url=https://.../test/a+b приводит к появлению "GET /test/a+b HTTP/1.1" в журналах Apache. (Неразумно предполагать, что все строки запроса application/x-www-form-urlencoded, это стандартизировано только в HTML.)

Кстати, похоже, что itms-services использует +[NSURL URLWithString:] для проверки URL-адресов: url=.../My%20App.plist не приводит к запросу, потому что [NSURL URLWithString:@"https://.../My App.plist"] возвращает nil. Тем не менее, в NSURL существует давняя ошибка: она будет избегать одного символа недействительного (BMP) в конце вместо того, чтобы возвращать нуль. Мои тестовые примеры

  • url=.../test/%3c приводит к журналу "GET /test/< HTTP/1.1" (это определенно неверный HTTP!)
  • url=.../test/%0a приводит к ошибке на устройстве, но не сообщению журнала (поскольку Apache рассматривает его как отклоненный запрос)
  • url=.../test/%0d приводит к журналу "GET /test/\r HTTP/1.1"

Ответ 3

itms-services - это идентификатор, по которому apple/iphone определит, что он должен проверить сертификат, и он должен установить.

Чтобы проверить профиль обеспечения перед установкой файла ipa, он подключится к "ax.init.itunes.apple.com" и "ocsp.apple.com".

Если вы используете какое-либо подключение к интрасети, проверьте, доступны ли эти ссылки или нет? если нет, вы не можете установить приложение через эфир.

& минимальная ОС на устройстве должна быть 4.0

Ответ 4

Я использовал IIS 6.0, а страница index.html загружалась, но когда пользователь нажал на ссылку .plist с яблочного устройства (i.e) iphone 4, я продолжал получать "не могу подключиться к www.mywebsite.com". Решение помимо добавления MIME-типа состояло в том, чтобы предоставить общий доступ к веб-ресурсам, где был .plist файл, и наиболее важно: изменить доступ к безопасности файла манифеста .plist. дал полный контроль над пользователями Windows по умолчанию

Ответ 6

Похоже, у вас есть несколько указателей на то, что может быть проблемой, в следующий раз: проверьте консоль устройства от Xcode Organizer, она обычно содержит полезную информацию о неудачном распределении OTA.

Ответ 7

Убедитесь, что все URL-адреса полностью защищены. В том числе для файлов png.

Ответ 8

У меня была та же проблема, что и выше. После проверки всех вышеперечисленных и сбоев, я понял, что когда я архивировал свое приложение, я не добавлял URL-адрес приложения в настройки, поэтому этот URL-адрес никогда не был в моем файле plist. Убедитесь, что когда вы просматриваете свой файл plist, там находится URL приложения.

Ответ 9

Как и многие другие, я также столкнулся с этим демоном проблемы. В моем случае проблема заключалась в том, что файл plist был неправильно сформирован. Убедитесь, что файл соответствует точной схеме, описанной в документации: http://developer.apple.com/library/ios/#featuredarticles/FA_Wireless_Enterprise_App_Distribution/Introduction/Introduction.html

Ответ 10

Для любого, кто заинтересован в динамическом создании своего plist, этот пример: PHP:

$appUrl='itms-services://?action=download-manifest&url=http://server/iOSpList.php?'.
                'url%3D'.$app['url'].
                '%26bundle%3D'.$app['bundle'].
                '%26version%3D'.$app['version'].
                '%26name%3D'.$app['name'];

Кроме того, убедитесь, что тип mime возвращается как application/xml.

Ответ 11

Я встретил эту проблему точно так, как вы описали, и моя проблема оказалась упущенной "http://" в URL-адресе. После того, как я добавил эту часть в поле url в файле .plist, все работало нормально. Надеюсь, это поможет!

Ответ 12

У меня были подобные проблемы при распространении моего приложения с использованием профиля подготовки AdHoc. Я попытался удалить старые профили, создать новые профили, перезапустить Xcode, очистить и перестроить, проверить имена путей URL и т.д. Приложение будет установлено на некоторых устройствах, но не на других.

Что сработало для меня, так это изменение версии приложения и создание нового номера.

Ответ 13

Я обнаружил, что "не могу использовать index.html" для ios 6 для установки приложения. Исправлено изменением с 'index.html' на 'dev.html'. надежда поможет кому-то

Ответ 14

Я пробовал в одно и то же время, поэтому я не уверен, какой из них был хорошим.

Создал идентификатор приложения wildcard (имя wildcard, идентификатор пакета *), создал профиль для этого приложения и подписал ipa с этим профилем.

Зарегистрировано одно устройство на портале инициализации.

назвал файл, в котором я связал приложение dev.html вместо index.html

Ответ 15

Правильное решение - заменить пробелы на "+" (плюс), поскольку... url =... означает, что это параметр строки запроса, и они должны быть закодированы как параметр данных формы при кодировании для URL-адресов.

Отсюда W3.org - Формы в документах HTML:

"Управляющие имена и значения экранируются. Символы пробела заменяются на" + ", а затем зарезервированные символы экранируются, как описано в [RFC1738]"

P.S. Это решило ту же проблему, с которой мы столкнулись во время разработки icenium.com. Вы можете проверить наличие соглашения AdHoc и посмотреть, как он работает для проектов с пробелами в именах.

Ответ 16

Если вы отправляете ссылку с электронного письма, вы НЕ МОЖЕТЕ использовать форматирование HTML в письме. Вы должны использовать форматирование "богатого текста"

Не знаю, почему, но вот как это (по крайней мере с Outlook)