Обмен данными UDP между приложениями (фон / передний план или многозадачность с разделенным экраном) в iOS
Я пишу исследовательское приложение, которое использует определенный датчик, который передает данные по UDP. Существуют различные коммерческие приложения, которые используют этот датчик, и мы надеемся, что сможем запустить как наше приложение, так и существующее приложение рядом.
В прошлом (iOS 8 и ниже) мы запускали наше приложение в фоновом режиме для записи данных, а другое приложение - на переднем плане. К сожалению, кажется, что только одно приложение могло связываться с входящими данными UDP (что имеет смысл), однако, учитывая будущие возможности приложения "бок о бок", мне было интересно, есть ли какое-либо решение для обмена данными между приложениями.
Единственное, о чем я мог подумать, это как-то заставить наше приложение перехватывать данные и пересылать их в другое приложение, но я не знаю, возможно ли это в iOS, и даже если бы это было так, как вы бы определили " у кого "есть блокировка на потоке UDP.
Документация Apple по адресу: https://developer.apple.com/library/prerelease/ios/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad/index.html, по-видимому, не предлагает много информации.
1 ответ
Я не уверен, будет ли это применяться в вашем случае использования, но вы можете использовать CloudKit для отправки данных в пользовательский контейнер приложения. В разделе возможностей вашего второго приложения вы можете получить доступ к общему контейнеру.
Из Руководства по дизайну iCloud:
Когда вы включаете возможность документов iCloud или CloudKit, Xcode настраивает ваше приложение для доступа к контейнеру iCloud, имя которого основано на идентификаторе пакета приложения. Большинству приложений необходим только доступ к контейнеру по умолчанию. Если ваши приложения обмениваются данными друг с другом, включите опцию "Указать пользовательские идентификаторы контейнеров" и добавьте один или несколько идентификаторов контейнеров, которые вы используете для обмена данными.
Источник от Apple ~ см. Оригинал для более подробной информации
Поделиться контейнерами между приложениями
При желании настройте приложение на использование нескольких контейнеров или предоставьте доступ к контейнеру другим приложениям. Например, вы можете использовать одно приложение для внутреннего создания типов записей и записей программно для возврата базы данных в известное состояние. Это приложение должно использовать тот же контейнер, что и приложение для конечного пользователя, которое вы разрабатываете и тестируете. Для этого вы разрешаете первому приложению использовать контейнер по умолчанию для второго приложения или создавать настраиваемый контейнер, который используется обоими приложениями. Приложения для iOS и Mac также можно настроить на использование одних и тех же контейнеров.
Добавить контейнеры в приложение
Выберите существующий идентификатор контейнера, используемый другим приложением, или создайте новый.
Чтобы добавить контейнер в приложение
На панели "Возможности" в настройках iCloud выберите "Указать пользовательские контейнеры".
Когда вы ранее выбрали сервис CloudKit, XCode создал идентификатор контейнера по умолчанию для вашего приложения, который совпадает с идентификатором пакета. Галочка появляется рядом с идентификатором контейнера по умолчанию.
При необходимости нажмите кнопку "Обновить" под таблицей "Контейнеры", чтобы загрузить контейнеры из Центра участников, которые используются другими приложениями. В строке идентификатора контейнера, который вы хотите добавить, установите флажок. Xcode обновляет список идентификаторов контейнеров в файле разрешений.
На приведенном ниже снимке экрана показано приложение "Куратор" и "Галерея", совместно использующее контейнер приложения "Галерея" по умолчанию.
Создание пользовательских контейнеров
Или создайте пользовательский контейнер, который будет использоваться несколькими приложениями.
Важно: только администраторы команды могут создавать контейнеры. Если вы частное лицо, вы являетесь командным агентом (с правами администратора) для своей команды из одного человека.
Чтобы создать собственный контейнер
Если выбран "Использовать контейнер по умолчанию", выберите "Указать пользовательские контейнеры".
Нажмите кнопку "Добавить" (+) внизу таблицы. В появившемся диалоговом окне введите идентификатор контейнера, который вы хотите добавить.
Предупреждение: Вы не можете удалить идентификатор контейнера, поэтому тщательно выбирайте идентификатор контейнера.
Идентификатор контейнера начинается с iCloud. за ним следует строка в обратном формате DNS, как в идентификаторе контейнера iCloud.com.example.gkumar1.SharedGallery.
Нажмите ОК.
Xcode добавляет новый идентификатор контейнера в файл разрешений проекта Xcode и в Member Center.
Если вы хотите поделиться новым идентификатором контейнера с другим приложением, добавьте контейнер в приложение, как описано в разделе Добавление контейнеров в приложение.
Проверьте свои шаги
Вы можете просмотреть все идентификаторы контейнеров для вашей команды в настройках iCloud или в Центре участников. В Центре участников вы также можете добавлять контейнеры и редактировать названия контейнеров.
Для просмотра идентификаторов контейнеров в Центре участников
В Центре участников выберите Сертификаты, Идентификаторы и Профили. В разделе "Идентификаторы" выберите "Контейнеры iCloud".