Приложения iOS совместно используют каталоги документов

#iphone #ios

#iPhone #iOS

Вопрос:

Возможно ли, чтобы два приложения получали доступ к документам друг в друге, учитывая, что у них одинаковый начальный идентификатор пакета. Я знаю, что можно совместно использовать элементы в связке ключей с приложениями, которые совместно используют начальный идентификатор пакета (смотрите здесь).

Допустим, у вас было приложение, у которого была бесплатная версия и платная версия. Возможно ли, что после того, как кто-то обновился с бесплатной версии на платную, вы могли бы перенести их данные на платную версию?

Ответ №1:

Вы не можете совместно использовать каталоги документов между приложениями. Но открыты и другие каналы связи.

Связка ключей — это одна из возможностей, как вы упомянули.

Другим могут быть пользовательские схемы URL. Может быть, что-то вроде этого:

  1. Бесплатное приложение регистрирует возможность открывать URL-адреса с помощью freeapp:// scheme. Аналогичным образом приложение Pro регистрирует возможность открывать URL-адреса с помощью proapp:// scheme. Используйте запись «Типы URL» в информационном списке.
  2. Pro app проверяет, есть ли [UIApplication canOpenURL:@"freeapp://goPro"] == YES
  3. Если значение true, приложение pro вызывает [UIApplication openURL:@"freeapp://goPro"]
  4. Это запускает бесплатное приложение, которое должно быть реализовано handleOpenURL из UIApplication .
  5. Бесплатное приложение объединяет необходимые данные в URL-адрес. При желании вы можете использовать параметры, подобные HTTP. Вы также можете создать словарь и сериализовать его в длинную шестнадцатеричную строку с помощью NSCoding .
  6. Бесплатное приложение передает данные обратно в профессиональное приложение с помощью [UIApplication openURL:@"proapp://YOUR_DATA_IN_WHATEVER_FORMAT"]
  7. Приложение pro получает URL-адрес в своей переопределенной реализации handleOpenURL from UIApplication и выполняет необходимый перенос данных.

Очевидно, вы хотите использовать более уникальные схемы URL, чем приведенные выше.

Однако подумайте о последствиях для безопасности, связанных с возможностью ввода данных такого типа в ваше приложение с использованием URL-адресов. Вероятно, это нормально для многих целей, но я уверен, что если бы приложение Facebook предоставляло способ взлома настроек вашей учетной записи с помощью URL-адреса, некоторые люди сочли бы забавным размещать facebookapp://reset_my_account ссылки повсюду.

Бонусный совет: схемы URL также очень удобны для устранения разрыва между машинным кодом и веб-представлениями. У меня было несколько приложений со встроенным веб-представлением, показывающим страницу на сервере под моим контролем. Веб-страница может взаимодействовать с приложением, задав местоположение документа из JS. Приложение может перехватить запрос в делегате веб-просмотра и ответить на веб-просмотр с помощью stringByEvaluatingJavaScriptFromString .