[закрыто] coreData, cloudKit, резервное копирование


#1

Теперь я ещё больше запуталась … вот смотрите, например мы с вами создаем приложение-напоминалку. У него есть 2 поля, которые заполняются и сохраняются в корДату - это сама дата + какой-то текст. При сохранении создается на основании даты - локальное уведомление. Регистрации у приложения нет. Человек его просто скачивает и пользуется. Мы хотим, чтобы если вдруг человек сменит телефон или сделает ресет, или просто решит приложение переустановить, то все данные, которые были введены в приложение - автоматически подгрузились из резервной копии. При этом не нужна синхронизация на разных устройствах.

Вопрос, как такое сделать … по факту нам нужны и данные и уведомления, но без использования сторонних продуктов, типа firebase. В настройках телефона есть вкл/выкл Резервной копии всего телефона, но это не спасет от “просто переустановки приложения” … так же в настройках есть iCloud Drive и мне кажется нужно как-то его использовать, но как тогда быть с уведомлениями (в теории, когда копию подгружаем - можно пробежаться по ней и пересоздать уведомления) … Но сейчас главный вопрос, как правильно, без костылей, выбрать способ решения такого вопроса.


#2

Да, очень не хватает особенно по icloud documents - запись и чтение фалов из icloud юзера.

Чтобы не плодить тем, спрошу здесь:
по cloudkit в целом есть инфа в инете (на английском много). А вот про такой раздел как icloud documents - почти ничего нет вменяемого даже на английском. Кто работал с сохранением файлов в icloud пользователя (резеврное копирование локальных данных приложения) и чтения этих файлов, поделитесь ссылками на метариалы или кодом :blush: - там разок увидеть реальный код с небольшими комментами по этапам и всё понятно будет ))


#3

Может Вы подскажите, а где, хотя бы на английском, найти информацию о том, как сохранить данные из корДаты в облако и потом можно было эти данные вернуть. Смысл в чем. Вот пользуюсь я таблицей, делаю комментарии к заказам, много разной информации к товарам, нужно, чтобы она автоматически сохранялась в облако, чтобы если вдруг сломался телефон или новый купила, чтобы можно было установить приложение и оно автоматически подгрузило инфо из этого сохранения. Или захотела удалить приложение и потом переустановить заново. Синхронизации на разных устройствах не нужно, просто резервная копия нужно, чтобы сохранялась и восстанавливалась, если приложение установилось из-под того же apple id.


#4

А не проще будет использовать БД Firebase?


#5

Это получается, что решение от яблока сложнее, чем сторонний продукт? Думаю, что если бы так было, то кого-то уже убили бы и расчленили прям ещё при Джобсе


#6

Просто то что хотите вы, это обычно делается с помощью одной общей базы данных, которая обычно находится на сервере и никакие синхронизации не требуются.
Вы же скорее всего от не знания и малого опыта принялись делать все через кор дату. Локальные базы данных предназначены чтобы хранить в них данные для конкретного пользователя, его личные настройки, что бы каждый раз не дергать сервер. Т.е. те данные, которые нужны только на телефоне. Все зависит от потребностей.
Ваш текущей случай будет немного “геморойным”. Но такой вариант тоже возможен.


#7

Тогда я вообще ничего не понимаю, как так. Есть же много приложений, у которых в платной версии поддержка iCloud. После этого переустановив приложение данные автоматом подтягиваются из iCloud. Неужели нет простого решения этого вопроса? Как-то же они это делают? Во все возможных записных книжках, заметках, таск-менеджерах и тд…


#8

Я бы это назвал исключением. Скажем приложения по типу записных книжек не требуют стороннего хранилища и тем более какого-то сервера. В таком случае все можно делать через кор дату, хранить бекап приложения в клауде. Разных случаев тут много и для каждого могут быть свои методы хранения.

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


#9

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


#10

созданные заказы видит только тот кто их создал?


#11

Да, именно так :wink:


#12

#13

да даже не знаю - везде есть, стоит только набрать cloudKit swift в поиске в ютубе. У тех же Брайана Адвента, Кило Локо


#14

для кордаты для начала наверное проще cloudKit - там очень похоже на кордату. Для файербейза надо будет отдельный логин делать, что неудобно для пользователя, а с cloudKit всё автоматом будет, если пользователь вошёл в эппл айди. Но, simonova, помните, что при использовании cloudKit все данные пользователей будут сохраняться в ВАШ дашбоард на аккаунт разработчика…а там бесплатный трафик и объем ограничен (10гБ - хранение ассетов (250мб на одного юзера), 100мб - под базу данных (2,5мб на одного ;)), 2гБ - трафика (50мб на юзера)) тарифы. Хотя там от вида базы зависит - публичная или нет. Надо разбираться )) Я думаю вам бесплатного тарифа хватит вполне для вашей БД ключ-значение.


#15

как бекэнд БД - firebase в целом и firestore в частности мне показалось намного проще, чем cloudKit. Ну и возможностей больше намного у комплекса сервисов firebase.


#16

А зачем мне хранить у себя данные, у каждого же пользователя есть облако свое собственное по эпплАйди … вот пусть там и хранит каждый своё добро. Вот если зайти в Настройки - apple ID - iCloud -> почти в самом низу есть iCloud Drive. Если его включить, то можно разрешить программам хранить данные, я так понимаю это облако пользователя. Потому что когда в какой-то программе я его выключила (но из самой программы, а через настройки, как описано выше), то зайдя в программу она сразу мне выдала сообщение, что iCloud выключен и нужно включить.


#17

это уже icloud documents и туда записывать можно только файлы. В cloudKit вы можете сразу писать из кор-даты ключ-значение. Это разные вещи (насколько я понял :smiley:). Ну и cloudKit полезен если, например, надо чем-то делиться или сообщения можно там организовать…


[решено, но это не точно] Приложение для ограниченного круга пользователей
#18

В общем похоже никто ничего толком и не понимает по этой теме (( каким способом это лучше организовать


#19

На удивление на русском Стэковерфлоув тоже почти нет инфы. Есть на английском меленько - сегодня покапаюсь


#20

Получилось что-нибудь найти?