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); } } }
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(); }
// 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; } } }
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 (); }