使用多个包含项时在代码中标识iCloud容器

时间:2019-06-26 11:57:59

标签: icloud

我想在我的应用程序中使用多个com.apple.developer.icloud-container-identifiers。一个用于数据的正常同步,另一个用于共享跨应用程序解锁(因此,请购买一次并解锁多个应用程序)。开发人员门户中的设置已完成,我将两个相关的容器都添加到了第一个应用程序中,一个用于正常数据同步,另一个应由多个应用程序用来共享购买信息。但是我找不到识别使用哪个容器的方法。如何选择正确的代码?

到目前为止,我尝试在调试和调查对象时在代码中找到有用的信息。但是到目前为止没有运气。此外,文档和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中还是什么都没关系。我想任何提示都是有帮助的。

0 个答案:

没有答案