예제 #1
0
        public void SetValue(string key, object anyValue)
        {
            Type valueType = anyValue.GetType();

            if (valueType == typeof(string))
            {
                UserDefaults.SetString((string)anyValue, key);
            }
            else if (valueType == typeof(int))
            {
                UserDefaults.SetInt((int)anyValue, key);
            }
            else if (valueType == typeof(bool))
            {
                UserDefaults.SetBool((bool)anyValue, key);
            }
            else if (valueType == typeof(float))
            {
                UserDefaults.SetFloat((float)anyValue, key);
            }
            else if (valueType == typeof(double))
            {
                UserDefaults.SetDouble((double)anyValue, key);
            }
            else if (valueType == typeof(long))
            {
                UserDefaults.SetValueForKey(new NSNumber((long)anyValue), new NSString(key));
            }
            else
            {
                Log.Error(INCORRECT_VALUE_TYPE_ERROR);
            }
            UserDefaults.Synchronize();
        }
        /// <summary>
        /// Checks whether the app was launched from the share extension. If it is, the CropViewController is launched without user input.
        /// </summary>
        private void CheckLaunchFromShareExtension()
        {
            if (((AppDelegate)UIApplication.SharedApplication.Delegate).LaunchedFromShareExtension)
            {
                // reset to false to prevent this from executing when the user returns to home page
                ((AppDelegate)UIApplication.SharedApplication.Delegate).LaunchedFromShareExtension = false;

                NSUserDefaults sharedDefaults = new NSUserDefaults(Constants.AppGroupIdentifier, NSUserDefaultsType.SuiteName);
                NSData         imageData      = sharedDefaults.DataForKey(Constants.ShareExtensionImageKey);
                sharedDefaults.SetValueForKey(new NSData(), new NSString(Constants.ShareExtensionImageKey));

                try
                {
                    UIImage image = new UIImage(imageData);

                    //NOTE EXIF data is not retrieved
                    NSUrl url = null;

                    LaunchCropViewController(image, url, this.NavigationController);
                }
                catch (Exception e)
                {
                    // If data was not able to be retrieved
                    var alert = UIAlertController.Create("Error Launching from Share Extension",
                                                         "An unexpected error occured.",
                                                         UIAlertControllerStyle.Alert);
                    alert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
                    PresentViewController(alert, true, null);
                }
            }
        }
예제 #3
0
        protected override void doSave(string dataId, string dataValue)
        {
            NSUserDefaults prefs = NSUserDefaults.StandardUserDefaults;

            prefs.SetValueForKey(new NSString(dataValue), new NSString(dataId));
            prefs.Synchronize();
        }
        /// <summary>
        /// Saves the shared image into App Group's NSUserDefaults, and launches containing application.
        /// </summary>
        private void ImportButton_TouchUpInside(object sender, EventArgs eventArgs)
        {
            // Use the UserDefaults from the App Group in order to share data to containing app
            NSUserDefaults sharedDefaults = new NSUserDefaults(ShareExtensionConstants.AppGroupIdentifier, NSUserDefaultsType.SuiteName);

            // Store shared image as NSData into NSUserDefaults
            sharedDefaults.SetValueForKey(uiImage.AsPNG(), new NSString(ShareExtensionConstants.NSUserDefaultsKeyForImage));

            // Launch containing application using UrlScheme. Containing app MUST implement this UrlScheme
            UIApplication.SharedApplication.OpenUrl(new NSUrl(ShareExtensionConstants.UrlScheme + ShareExtensionConstants.NSUserDefaultsKeyForImage));

            this.ExtensionContext?.CompleteRequest(new NSExtensionItem[0], null);
        }
        public override void WillTerminate(UIApplication application)
        {
            // Called when the application is about to terminate. Save data, if needed. See also DidEnterBackground.

            // Release the resources used by the AI models
            ReleaseModel();

            // Reset LaunchedFromShareExtension flag
            LaunchedFromShareExtension = false;

            // Remove any images that may exist from previous launches from share extension
            NSUserDefaults sharedDefaults = new NSUserDefaults(Constants.AppGroupIdentifier, NSUserDefaultsType.SuiteName);

            sharedDefaults.SetValueForKey(new NSData(), new NSString(Constants.ShareExtensionImageKey));
        }
        public override void TouchesEnded(NSSet touches, UIEvent evt)
        {
            base.TouchesEnded(touches, evt);

            var defs = new NSUserDefaults("group.com.xamarin.todaysharing", NSUserDefaultsType.SuiteName);

            if (defs.ValueForKey(new NSString("key")) != null)
            {
                defs.RemoveObject("key");
                View.BackgroundColor = UIColor.DarkGray;
            }
            else
            {
                defs.SetValueForKey(new NSString("value"), new NSString("key"));
                View.BackgroundColor = UIColor.Green;
            }
            defs.Synchronize();
        }
예제 #7
0
 // Writes the data to `NSUserDefaults`
 protected void WriteData()
 {
     UserDefaultsAccessQueue.DispatchAsync(() =>
     {
         try
         {
             NSData encodedData             = NSKeyedArchiver.ArchivedDataWithRootObject(ManagedDataBackingInstance);
             IgnoreLocalUserDefaultsChanges = true;
             UserDefaults.SetValueForKey(encodedData, (NSString)StorageDescriptor.Key);
             IgnoreLocalUserDefaultsChanges = false;
             NotifyClientsDataChanged();
         }
         catch (Exception e)
         {
             throw new Exception($"Could not save data. Reason: {e.Message}");
         }
     });
 }
        private void SetItem(string key, object value)
        {
            if (value == null)
            {
                if (IsRoaming)
                {
                    _store.Remove(key);
                }
                else
                {
                    _defaults.RemoveObject(key);
                }
            }
            else
            {
                TypeCode code = Type.GetTypeCode(value.GetType());
                switch (code)
                {
                case TypeCode.String:
                    if (IsRoaming)
                    {
                        _store.SetString(key, value.ToString());
                    }
                    else
                    {
                        _defaults.SetString(value.ToString(), key);
                    }
                    break;

                case TypeCode.Int32:
                    if (IsRoaming)
                    {
                        _store.SetLong(key, (long)value);
                    }
                    else
                    {
                        _defaults.SetInt((int)value, key);
                    }
                    break;

                case TypeCode.Double:
                    if (IsRoaming)
                    {
                        _store.SetDouble(key, (double)value);
                    }
                    else
                    {
                        _defaults.SetDouble((double)value, key);
                    }
                    break;

                case TypeCode.Single:
                    if (IsRoaming)
                    {
                        _store.SetDouble(key, (double)value);
                    }
                    else
                    {
                        _defaults.SetFloat((float)value, key);
                    }
                    break;

                case TypeCode.Boolean:
                    if (IsRoaming)
                    {
                        _store.SetBool(key, (bool)value);
                    }
                    else
                    {
                        _defaults.SetBool((bool)value, key);
                    }
                    break;

                default:
                    if (IsRoaming)
                    {
                        _store.SetValueForKey(IOSTypeConverter.ConvertToNSObject(value), new NSString(key));
                    }
                    else
                    {
                        _defaults.SetValueForKey(IOSTypeConverter.ConvertToNSObject(value), new NSString(key));
                    }
                    break;
                }
            }
        }
예제 #9
0
        public void RespondToChangeEvent(object sender, CheckPointDataChangedEventArgs args)
        {
            ToastNotificationType type;

            switch (args.ActionOccurred) {
            case ActionType.Deleted:
                type = ToastNotificationType.Error;
                break;
            case ActionType.Written:
                type = ToastNotificationType.Warning;
                break;
            default:
                type = ToastNotificationType.Info;
                break;
            }

            var ud = new NSUserDefaults(AppGroupPathProvider.SuiteName, NSUserDefaultsType.SuiteName);
            ud.SetValueForKey(DateTime.Now.ToNSDate(), new NSString("MRU"));
            ud.Synchronize();

            notify (args.Result.ToString(), string.Format ("{0} {1}", args.Entity, args.ActionOccurred.ToString ()), type);
            if (args.ConditionallyRefreshData)
                this.ConditionallyRefreshData (true);
            if (args.RespondToModelChanges&!args.ConditionallyRefreshData)
                this.RespondToModelChanges ();
        }