如何在iOS和iOS扩展之间共享Xamarin.Forms项目中的首选项



我正试图在PushNotification.Extension项目中使用Preferences.Get(Xamarin.Essentials(获取字符串(UserID(,但由于Preferences.Set发生在Xamarin iOS项目中,我在扩展项目中总是得到一个空字符串。

有没有办法在iOS项目和iOS扩展之间共享这种偏好?

public string UserID
{
get
{
return Preferences.Get(nameof(UserID), UserIDDefault);
}
set
{
Preferences.Set(nameof(UserID), value);
}
}

根据Apple文档,请按照步骤启用数据共享。

  1. 启用App Groups功能,请参阅Xamarin.iOS.中的应用程序组功能

  2. 将应用程序添加到应用程序组。

  3. 使用NSUserDefaults并使用扩展包标识符的名称初始化它。

//Save 
var defaults = new NSUserDefaults(@"com.example.domain.MyShareExtension");
defaults.SetString("value","Mykey");
defaults.Synchronize();
//Get
var defaults = new NSUserDefaults(@"com.example.domain.MyShareExtension");
var value = defaults.ValueForKey("Mykey");

"NSUserDefaults(字符串(";对我不起作用。在Xamarin iOS文档中,此构造函数被标记为已弃用!看见https://learn.microsoft.com/en-us/dotnet/api/foundation.nsuserdefaults?view=xamarin-ios-sdk-12

但是当我使用";NSUserDefaults(字符串,NSUserDefaultsType(";它运行得很完美。

相关内容

  • 没有找到相关文章

最新更新