如何在 iOS 和 iOS 扩展之间共享 Xamarin.Forms 项目中的首选项?
How to share Preferences in a Xamarin.Forms project between an iOS and iOS extensions?
我正在尝试在 PushNotification.Extension
项目中使用 Preferences.Get
(Xamarin.Essentials) 获取字符串 (UserID),但由于 Preferences.Set
发生在 Xamarin 中iOS 项目,我总是在扩展项目中得到一个空字符串。
有没有办法在 iOS 项目和 iOS.extension 之间共享此首选项?
public string UserID
{
get
{
return Preferences.Get(nameof(UserID), UserIDDefault);
}
set
{
Preferences.Set(nameof(UserID), value);
}
}
根据Apple docs,请按照步骤启用data-sharinig。
启用 App Groups
功能,refer to App Group Capabilities in 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");
我正在尝试在 PushNotification.Extension
项目中使用 Preferences.Get
(Xamarin.Essentials) 获取字符串 (UserID),但由于 Preferences.Set
发生在 Xamarin 中iOS 项目,我总是在扩展项目中得到一个空字符串。
有没有办法在 iOS 项目和 iOS.extension 之间共享此首选项?
public string UserID
{
get
{
return Preferences.Get(nameof(UserID), UserIDDefault);
}
set
{
Preferences.Set(nameof(UserID), value);
}
}
根据Apple docs,请按照步骤启用data-sharinig。
启用
App Groups
功能,refer to App Group Capabilities in 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");