Если я сделаю два приложения для iPhone, как я могу / должен делиться пользовательскими данными (не контактами и тому подобным) между ними?
Спасибо!
Если я сделаю два приложения для iPhone, как я могу / должен делиться пользовательскими данными (не контактами и тому подобным) между ними?
Спасибо!
Это можно сделать двумя разными способами.
1) Данные, которыми вы должны поделиться, непостоянны. Другими словами, вам нужно запустить одно приложение с фрагментом данных, с которым оно может что-то делать. В этом случае вы должны зарегистрировать специальную схему URL-адресов для каждого приложения.
Дополнительную информацию о схемах URL-адресов можно найти у Крейга Хокенберри в его [отредактированном] сообщении в блоге.
2) Данные, которыми вы должны поделиться, являются постоянными. Другими словами, вам нужно что-то вроде файла данных, который оба приложения могут читать и писать. Насколько мне известно, для этого нет безопасного способа, кроме хранения ваших данных на удаленном сервере. Если вам нужны данные, доступные без подключения к данным, вам нужно будет найти способ синхронизации данных между отдельными приложениями и удаленным сервером.
В дополнение к тому, что уже было упомянуто, документация iPhone по подписи кода, похоже, подразумевает, что приложения, подписанные с одной и той же идентификацией, могут получать доступ к одним и тем же элементам Keychain. Если вам нужно хранить относительно небольшие объемы данных (пароли и т. Д.), Это может быть полезным методом.
Приложения могут совместно использовать каталог контейнера в iCloud.
Из Документ Apple по настройке прав iCloud:
Поле «Контейнеры iCloud» определяет список каталогов контейнеров, к которым ваше приложение может получить доступ в хранилище iCloud пользователя. (Это поле соответствует праву com.apple.developer.ubiquity-container-identifiers.) Строки, которые вы добавляете в этот список, должны соответствовать идентификаторам пакетов для приложений, созданных вашей командой. Xcode использует идентификатор пакета текущего приложения, чтобы указать первую строку; вы можете изменить его на другой идентификатор пакета, если хотите, чтобы несколько приложений использовали общий каталог контейнера. Вы также можете добавить дополнительные идентификаторы пакетов для других приложений вашей команды.
a> предполагает, что вы также можете использовать буферы обмена с настраиваемыми именами для обмена информацией между приложениями. Я понимаю, что это более старый пост, но я подумал, что укажу на него, потому что он высоко ценится в результатах Google. :)
(Документация также предполагает, что NSUserDefaults
может быть здесь полезен, но у меня прочитайте в другом месте, что на самом деле это не так.)
Я могу придумать способ взлома: запись в адресную книгу и чтение из нее с помощью API. , сохраняя данные в доступных полях (возможно, + преобразование NSData для пользовательского изображения). Изменить: я успешно реализовал преобразование NSData и сохранение объектов внутри отображаемого изображения контакта, что сделало их недоступными для редактирования из приложения контактов.