W mojej aplikacji chcę udostępniać dane za pośrednictwem iCloud innym użytkownikom iCloud, ale nie z całym światem, ale z wybranymi innymi użytkownikami iCloud.CloudKit share Dane między różnymi kontami iCloud, ale nie ze wszystkimi
Pomyślałem o sposobie, w jaki może to działać, ale nie jestem pewien, czy to zadziała, i czy zapomniałem lub źle zrozumiałem pewne rzeczy.
Załóżmy, że użytkownik A chce móc udostępnić ciąg innym użytkownikom usługi iCloud, ale nie wszystkim. Użytkownik A chce udostępnić "Witaj świecie" użytkownikowi B, ale nie użytkownikowi C, a nie Użytkownikowi D.
Moja aplikacja ma Publiczną bazę danych i typ rekordu, który jest taki sam dla wszystkich. W tym typie rekordu znajduje się pole Typ łańcucha, które jest również takie samo dla wszystkich.
Teraz użytkownik A zapisuje rekord "Hello World" w usłudze iCloud. I tu pojawia się sztuczka: Dodałem do łańcucha unikalny identyfikator, taki jak UUID, aby coś takiego jak "Hello World1230ABD6-3C61-1234-802E-D866F09AC012" zostało przesłane do iCloud.
Teraz Użytkownik A musi powiedzieć Użytkownikowi, że chce udostępnić dane za pomocą swojego UUID, więc Użytkownik A przekazuje je Użytkownikowi B. Teraz identyfikator UUID Użytkownika A zostanie dodany jako Predykat do CKSubscription użytkownika B.
Pozwoli to Użytkownikowi B pobrać ciąg od Użytkownika A, ale Użytkownik C lub Użytkownik D nie otrzyma CKNotification, ponieważ nie mają identyfikatora UUID Użytkownika A w swojej CKSubscription.
Czy to zadziała? A może istnieje inny wzorzec projektowy, który umożliwia współdzielenie/synchronizację za pośrednictwem iCloud z innymi kontami iCloud, ale nie ze wszystkimi (publicznymi)?
P.S. Dane, które chcę udostępnić, nie są poufne, więc nie muszą być naprawdę bezpieczne. Dane po prostu nie są interesujące dla wszystkich (publicznych), więc muszą być udostępniane tylko wybranym innym kontom iCloud ...
Jestem wdzięczny za wszelkie przemyślenia i wskazówki, jak to osiągnąć!
Dzięki
Dzięki za pomoc! Spojrzę na CKReference. Jeszcze jedno pytanie: w moim przypadku mam tylko jeden ciąg, który musi być zsynchronizowany przez użytkownika A i użytkownika B. Nie jest tak, że użytkownik A i użytkownik B muszą dodawać nowe rekordy cały czas, tak jak nowe wpisy czatu w aplikacji czatu przykład ... to brzmi tak, jakbym miał podstawowy atrybut danych, który zarówno użytkownik A, jak i użytkownik B może edytować i będzie zsynchronizowany przy starcie aplikacji ... Czy naprawdę potrzebuję wtedy referencji? Dzięki ! – Kreuzberg
Zarówno użytkownik A jak i użytkownik B muszą wiedzieć, jaki rekord powinni monitorować. Jeśli masz mechanizm, aby uzyskać identyfikator rekordu danego rekordu dla innego użytkownika, byłoby to wystarczająco dobre. Możesz utworzyć własny RecordID. Musisz tylko być pewien, że będzie wyjątkowy. –
Jedno dodatkowe. Przez ostatnie 2 miesiące wystąpił błąd w CloudKit, który uniemożliwi wysyłanie powiadomień o zmianach rekordów. –