2015-01-09 4 views
2

Я хотел бы синхронизировать приложение данных ядра с пользователем с другим идентификатором iCloud, и я пытаюсь выяснить самый изящный способ сделать это. Я не хочу, чтобы данные синхронизировались со всеми пользователями, но вы хотите синхронизировать их между членами семьи. Из исследований, которые я сделал, я не думаю, что могу это сделать, используя синхронизацию iCloud Core Data, поскольку он синхронизируется только между устройствами с тем же идентификатором iCloud. Я просмотрел this stackoverflow answer и немного прочитал об Ансамблях, Parcelkit и TICoreDataSync, Parse и т. Д., Но мне не ясно, сможет ли какой-либо из этих параметров синхронизировать с несколькими пользователями. У кого-нибудь есть хороший способ синхронизации приложения Core Data с несколькими пользователями?Синхронизация основных данных с несколькими пользователями

ответ

1

Ансамбли и TiCoreDataSync способ доставки работа. Они могут использовать синхронизацию файлов Dropbox, поэтому в принципе они должны работать с общими папками Dropbox. Я не думаю, что это основное предназначение, поэтому я предлагаю связаться с разработчиками и/или сделать хорошее тестирование самостоятельно, прежде чем предположить, что это действительно сработает.

Вам нужно будет подумать о пользовательском опыте. Как минимум, ваши пользователи будут нуждаться в учетных записях Dropbox и должны будут настроить общую папку до начала синхронизации данных таким образом.

Parcelkit, вероятно, не будет работать. Он использует API хранилища данных Dropbox, который, в отличие от других служб Dropbox, не поддерживает совместные данные.

Услуги, сделать поддержку такого рода обмена exist--, например, Parse и Firebase - но убедитесь, что тщательно проанализировать свои цены перед их использованием. Также, конечно, было несколько проектов, у которых есть свой собственный серверный сервер, но это, очевидно, требует наличия в команде кого-то, кто может выполнять такую ​​работу.

+0

Спасибо за информацию, я могу проверить все эти варианты дальше. Для Parse я провел некоторое расследование, и похоже, что все, что я там делаю, потребует от меня добавления дополнительного кода и накладных расходов для загрузки данных в Parse с именами полей анализа и т. Д. Есть ли еще один вариант, о котором вы знаете в Parse, что больше автоматически управляет основными объектами данных в конце Parse? –

+0

Правильно, Parse - это общий задний конец, но его работа с Core Data зависит от вас. Есть фреймворк с открытым исходным кодом под названием [FTASync] (https://github.com/itsniper/FTASync), но я его не пробовал. –

+0

Спасибо, я проверю все это. –

0

Я просматриваю одно и то же для своего приложения, и я думаю, что вы можете сделать довольно незащищенную версию того, что вы используете, используя общую папку в облачном наборе, как упоминалось в этом вопросе (не принято ответа на время публикации): Private data sharing using CloudKit

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

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

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

Надеется, что это, или любые насмешки в комментариях, указует вам в правильном направлении:)

1

Вы должны думать о других типах устройств (Android, по крайней мере), если вы хотите, чтобы ваше приложение будет идущим больше пользователей.

Я делаю то же самое сейчас следующим образом:

  1. Setup онлайновую базу данных с соответствующими веб-сервисами (осторожно с реализацией по вопросам безопасности - DB никогда не должны подвергаться воздействию ничем, кроме веб-служб).
  2. Создайте класс для связи с сервером (используя методы класса с обработкой безопасности, такие как аутентификация и авторизация).
  3. Используйте этот класс в своем приложении для связи с сервером (операции SQL выполняются на сервере).

Чтобы интегрироваться с CoreData, вам необходимо создать модель в своем приложении, аналогичную структуре в бэкэнд-базе данных. Затем вам нужно создать аналогичный класс для приложения, использующего только локальные CoreData.

Может потребоваться класс более высокого уровня, если вы хотите убедиться, что операции выполняются как на сервере, так и на локальном хранилище данных.

Кроме того, вы должны реализовать множество условий, чтобы убедиться, что данные, записанные локально, после проверки того, что они хранятся в Интернете (или создать механизм для выполнения различных операций, которые будут выполняться позже).

Другой способ, если вы знакомы с уведомлениями: Использование структурированных уведомлений между устройствами для работы с данными для того, чтобы держать все в синхронизации с другими пользователями. Проблема с этим - «Автономия» операций. Если две операции были выполнены примерно в одно и то же время, вы должны найти способ убедиться, что порядок операций выполнен правильно (возможно, временная метка или что-то еще).