Я хотел бы отправить профиль конфигурации с моим iPhone-приложением и установить его, если необходимо.
Помните, мы говорим о профиле конфигурации, а не профиле обеспечения.
Во-первых, такая задача возможна. Если вы разместите профиль конфигурации на веб-странице и щелкните по нему из Safari, он будет установлен. Если вы отправляете по электронной почте профиль и нажимаете вложение, оно также будет установлено. "Установленный" в этом случае означает "Инициализируется пользовательский интерфейс установки" - но я даже не мог дойти до этого.
Итак, я работал над теорией о том, что инициация установки профиля включает в себя навигацию к ней в качестве URL-адреса. Я добавил профиль в свой пакет приложений.
A) Сначала я попробовал [sharedApp openURL] с файлом://URL в свой пакет. Нет такой удачи - ничего не происходит.
B) Затем я добавил HTML-страницу в свой пакет, который имеет ссылку на профиль и загрузил его в UIWebView. Нажатие на ссылку ничего не делает. Однако загрузка идентичной страницы с веб-сервера в Safari работает отлично - ссылка доступна для клика, профиль устанавливается. Я предоставил UIWebViewDelegate, отвечая YES на каждый запрос навигации - без разницы.
C) Затем я попытался загрузить одну и ту же веб-страницу из своего пакета в Safari (используя [sharedApp openURL] - ничего не происходит. Я думаю, Safari не может видеть файлы внутри моего пакета приложений.
D) Загрузка страницы и профиля на веб-сервере выполнима, но боль на организационном уровне, не говоря уже о дополнительном источнике сбоев (что, если нет покрытия 3G?).
Итак, мой большой вопрос: ** как программно установить профиль?
И маленькие вопросы: что может сделать ссылку без кликов в UIWebView? Можно ли загрузить файл://URL из моего пакета в Safari? Если нет, есть ли локальное местоположение на iPhone, где я могу разместить файлы, и Safari может их найти?
EDIT on B): проблема заключается в том, что мы привязываемся к профилю. Я переименовал его из .mobileconfig в .xml(потому что это действительно XML), изменил ссылку. И ссылка работала в моем UIWebView. Переименовал его обратно - то же самое. Похоже, что UIWebView неохотно выполняет все приложения - поскольку установка профиля закрывает приложение. Я пытался сказать, что все в порядке - с помощью UIWebViewDelegate - но это не убеждало. Такое поведение для mailto: URL-адресов в интерфейсе UIWebView.
Для URL-адресов mailto: общий способ заключается в том, чтобы перевести их в вызовы [openURL], но это не совсем работает для моего случая, см. сценарий A.
Для itms: URL, однако UIWebView работает как ожидалось...
EDIT2: пытался подавать URL-адрес данных в Safari через [openURL] - не работает, см. здесь: iPhone Open DATA: Url В Safari
EDIT3: нашел много информации о том, как Safari не поддерживает файлы://URL. UIWebView, однако, очень нравится. Кроме того, Safari на симуляторе открывает их просто отлично. Последний бит наиболее расстраивает.
EDIT4: Я не нашел решения. Вместо этого я собрал двухбитовый веб-интерфейс, где пользователи могут заказать профиль, отправленный им по электронной почте.