2016-12-16 3 views
0

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

Следующий код работает, чтобы получить доступ к одному из контейнеров, но как переключиться на другую учетную запись, чтобы получить доступ к другому контейнеру?

var container = CKContainer(identifier: "iCloud.com.lastname.firstname.MyAppName") 
var publicDatabase: CKDatabase? 
var currentRecord: CKRecord? 
var publicDB = CKContainer.default().publicCloudDatabase 

Должен ли я делать это с помощью приложения для телефона или мне нужно создать приложение для Mac?

Спасибо!

+0

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

+0

Оба являются общедоступными, создаются с различными приложениями, разными контейнерами. Пример: iCloud.com.myLastName.myFirstName.MyAppName - это один контейнер iCloud.com.friendsLastName.friendsFirstName.someAppName - это другой контейнер. – Grumpy

ответ

1

Приложение не имеет права доступа к контейнеру CloudKit другого приложения от другого разработчика. Это было бы ужасной проблемой безопасности, если бы это было возможно.

Приложение может обращаться к нескольким контейнерам только в том случае, если оба контейнера принадлежат одному разработчику.

Итак, короткий ответ на ваш вопрос заключается в том, что то, что вы хотите сделать, невозможно (к счастью).

+0

Я разработал оба приложения (одно в моей учетной записи и другое в моей учетной записи моих друзей) и имею доступ к обоим контейнерам. У меня есть информация для входа в систему и вы можете получить базу данных облаков для обоих приложений. Проблема в том, что старые данные по-прежнему актуальны в моей учетной записи и требуют много времени, чтобы получить данные снова, и он хочет, чтобы данные были преобразованы в новое приложение, которое теперь находится в его учетной записи. Это потому, что у нас есть одна учетная запись пользователя и не может добавить людей в мою команду? Если бы я мог добавить его в свою команду, я бы получил доступ к обоим счетам? – Grumpy

+0

Наличие логина для учетных записей не имеет значения и не имеет никакого отношения к тому, как ваше приложение имеет доступ к контейнерам CloudKit. Контейнеры должны быть связаны с той же учетной записью разработчика, которая используется для сборки и подписания приложения. – rmaddy

+0

ОК, спасибо! – Grumpy

0

Apple в WWDC 2016 объявила о возможностях совместной работы с базой данных, см. Это видео.

https://developer.apple.com/videos/play/wwdc2016/226/

Деталь общей cloudkit записи говорила вокруг 20minutes в video.In короткие вы можете поделиться определенными записями с другими пользователями по имени. Я еще не использовал новый объект, но он выглядит многообещающим.

Ваш другой вариант - использовать что-то вроде DropBox; создавая общедоступные ссылки на изображения, которые вы хотите использовать, используя свой API.

https://dropbox.github.io/SwiftyDropbox/api-docs/latest/

Что лучше; Я не знаю. Используя мое текущее приложение, и когда дело доходит до небольших фрагментов данных, они одинаковы. Но когда дело доходит до работы с более крупными кусками, говорят активы в cloudKit. Кажется, что DropBox имеет преимущество, поскольку я пишу это [Dec 2016], по крайней мере, это быстрее, заметно быстрее.

1

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

Если у вас есть доступ к обоим аккаунтам разработчиков, есть несколько способов переноса данных:

  • обновление старое приложение, чтобы загрузить данные в локальном хранилище (например, основные данные). Затем скопируйте файл (ы) данных в новое приложение и загрузите его.
  • CloudKit JS или CloudKit Web Services на вашем Mac для копирования данных.
  • одно приложение может использовать CloudKit и CloudKit JS в разных контейнерах.
+0

Это звучит как-то, что я должен попробовать. Было бы неплохо иметь такую ​​утилиту для этого проекта, как и другие. Благодаря! – Grumpy

Смежные вопросы