Определите контейнер iCloud в коде, когда используются несколько контейнеров - PullRequest
0 голосов
/ 26 июня 2019

Я хочу использовать в своем приложении несколько идентификаторов com.apple.developer.icloud-container-identifier. Один для нормальной синхронизации данных и один для совместного использования разблокировки нескольких приложений (поэтому приобретайте один раз и разблокируйте несколько приложений). Настройка на портале для разработчиков завершена, и я добавил в первое приложение оба соответствующих контейнера: один для обычной синхронизации данных и тот, который должен использоваться несколькими приложениями для обмена информацией о покупке. Но я не могу найти способ определить, какой контейнер использовать. Как я могу выбрать правильный код?

До сих пор я пытался найти полезную информацию в коде при отладке и поиске объектов. Но пока без удачи. Кроме того, документация и Google не так полезны прямо сейчас.

Это мой текущий код облачной синхронизации (Xamarin / C #):

    public class CloudSyncService : ICloudSyncService
    {
        public bool SupportCloudSync => true;

        public event CloudDataChanged DataChanged;

        public CloudSyncService()
        {
            NSNotificationCenter.DefaultCenter.AddObserver(NSUbiquitousKeyValueStore.DidChangeExternallyNotification, notification =>
            {
                System.Diagnostics.Debug.WriteLine("Cloud notification received.");
                NSDictionary userInfo = notification.UserInfo;

                var reasonNumber = (NSNumber)userInfo.ObjectForKey(NSUbiquitousKeyValueStore.ChangeReasonKey);
                nint reason = reasonNumber.NIntValue;

                var changedKeys = (NSArray)userInfo.ObjectForKey(NSUbiquitousKeyValueStore.ChangedKeysKey);
                for (uint i = 0; i < changedKeys.Count; i++)
                {
                    var key = changedKeys.GetItem<NSString>(i);
                    DataChanged?.Invoke(this, key);
                }
            });
        }

        public void StoreString(string key, string value)
        {
            var store = NSUbiquitousKeyValueStore.DefaultStore;
            store.SetString(key, value);
            store.Synchronize();
        }

        public string ReceiveString(string key)
        {
            var store = NSUbiquitousKeyValueStore.DefaultStore;
            return store.GetString(key);
        }

        public void Delete(string key)
        {
            var store = NSUbiquitousKeyValueStore.DefaultStore;
            store.Remove(key);
            store.Synchronize();
        }
    }

Если у кого-нибудь есть примеры или идея, где искать конкретный идентификатор контейнера, это было бы здорово. Неважно, если это в Swift / C # / Objective-C или что-то еще. Любой намек полезен, я думаю.

...