检索应用程序用户设置/首选项的本地存储和最快方法的最佳方法是什么? [关闭]

问题描述 投票:-5回答:4

我是Xamarin的新手。

在我的Xamarin Forms应用程序中,我只想在满足条件的情况下通过推送通知通知用户(即使应用程序在后台)。用户在注册时由用户选择条件。

目前,我使用SQL Lite在手机上本地存储该选项。

在我的应用程序中,我通知用户的速度至关重要。在接收到通知时我必须检查该条件,因此我将用户的选择从本地数据库中拉出来以查看是否要通知它们,但这可能需要几秒钟。

是否有更快的方法来检索该选择/条件,这是一种替代方法,而不仅仅是将其存储在本地db文件中?这些首选项必须适用于PCL以及Android和iOS项目。

先感谢您。

xamarin.forms push-notification xamarin.ios xamarin.android
4个回答
1
投票

Xamarin Forms有一个内置的Properties字典,可用于存储简单类型

bool myKey;

// retrieve value
if (Application.Current.Properties.Exists("mykey")) {
  myKey = (bool)Application.Current.Properties["mykey"];
}

//set value if it already exists in Dictionary
Application.Current.Properites["mykey"] = myKey;
// or add it if it doesn't
Application.Current.Properties.Add("mykey",myKey);

// properties will auto-save, but you can force save with
await Application.Current.SavePropertiesAsync();

1
投票

您可以使用@MichaelMontero提到的SharedPreferences。您需要将其实现到Android / iOS / UWP。然后使用依赖服务将其检索到您的shared / pcl / netstandard代码。

通过Android简单实现它:

void SetValue(string key, string value)
{
    var settings = Application.Context.GetSharedPreferences("PreferenceName", FileCreationMode.Private);
    var holder = settings.Edit();

    holder.PutString(key, value);
}

string GetValue(string key)
{
     var settings = Application.Context.GetSharedPreferences("PreferenceName", FileCreationMode.Private);
     return settings.GetString(key, string.Empty);
}

您可以研究将其实现到iOS / UWP,因为它们具有不同类型的实现。


1
投票

由于您不需要任何数据结构,因此更快,更简单的方法是Shared preferences


0
投票

受到你们家伙的回答的启发,我研究并最终使用了微软的Xamarin Essentials NuGet软件包。它目前是预发行版,只有在NuGet包中检查解决方案中的预发布选项时才能看到它。

看起来非常容易使用,到目前为止PCL和Android中都有首选项。我还没有尝试过iOS。链接在这里:

https://docs.microsoft.com/en-us/xamarin/essentials/?context=xamarin/xamarin-forms

您所做的只是存储键值对:

private void SaveUserPreferences (string value1, string value2, string value3)
        {
            Preferences.Set("Key1",value1);
            Preferences.Set("Key2",value2);
            Preferences.Set("Key3",value3);
            ...............................
        }

为了在添加“使用Xamarin.Essentials”后在类中检索它们(例如在Android项目中)

var preferenceValue = Preferences.Get("key", "defaultValueIfNotExists");

要安装Android,请确保在所有Activity类中添加此项。例如,在MainActivity.cs中:

protected override void OnCreate(Bundle bundle) 
{
    //...
    base.OnCreate(savedInstanceState);
    Xamarin.Essentials.Platform.Init(this, bundle); // add this line to your code
}

iOS没有什么需要做的。

还要确保将其安装在所有项目中。

希望它也能帮助其他人。

© www.soinside.com 2019 - 2024. All rights reserved.