我正试图在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文档,请按照步骤启用数据共享。
-
启用
App Groups
功能,请参阅Xamarin.iOS.中的应用程序组功能 -
将应用程序添加到应用程序组。
-
使用
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(";它运行得很完美。