我的漫游数据无法在设备之间同步



我做了一个UWP应用程序。我使用漫游数据。我通过以下方式保存设置:

public static void WriteCode(string pwd)
{
   ApplicationDataContainer RoamingSettings = ApplicationData.Current.RoamingSettings;
   RoamingSettings.Values["Code"] = EncryptHelper.PwdEncrypt(pwd);
}

我通过以下方式阅读设置:

 public static string GetCode()
    {
        ApplicationDataContainer RoamingSettings = ApplicationData.Current.RoamingSettings;
        string str = (String)RoamingSettings.Values["Code"];
        if (!String.IsNullOrEmpty(str))
            return str;
        else
            return EncryptHelper.PwdEncrypt("123");
    }

我完成了申请,上传到windows商店,并通过了检查。然后我在手机上下载这个应用程序。

我更改了手机上的ApplicationData.CurrentRoamingSettings。我在手机上的ApplicationData.CurrentRoamingFolder中写入了一些内容。

接下来,我关闭了手机上的应用程序,并在电脑上下载了该应用程序。但当我在电脑上打开该应用程序时,我发现ApplicationData.CurrentRoamingSettings和ApplicationData.CCurrentRoamingFolder没有任何更改。

我检查了电脑上的C:\Users\XXX\AppData\Local\Packages\XXX\RoamingState,什么都没有。我在电脑上检查了C:\Users\XXX\AppData\Local\Packages\XX\Settings,有漫游锁定和设置.dat。但我再也无法读取我在手机上添加的最新设置和漫游数据了。

我已经等了2个小时,我的电脑上没有变化。

我应该先声明一下:

   1 All the deploy work was done by windows store.
   2 I check my PC application setting after closed the app on phone. I even shut down my mobile phone to observe the change to my PC. 

我的代码出了什么问题?或者漫游数据机制出了什么问题?我需要一个答案,谢谢!

您发布的代码是正确的。然而,漫游数据同步失败有一些可能的原因:

  1. 如果任何用户使用Microsoft帐户登录其设备,都可以从漫游应用程序数据中受益。但是,用户和组策略管理员可以随时关闭设备上的漫游应用程序数据。如果用户选择不使用Microsoft帐户或禁用漫游数据功能,她仍然可以使用您的应用程序,但应用程序数据是每个设备的本地数据。

    请记住,漫游数据与用户的Microsoft帐户相关联。只有当用户使用相同的Microsoft帐户登录到她的设备并在多个设备上安装该应用程序时,漫游数据才会同步。

  2. 不要对依赖即时同步的数据使用漫游。Windows不保证即时同步;如果用户离线或在高延迟网络上,则漫游可能会显著延迟。

    漫游设置不是即时的。在确定何时发送数据时,系统会权衡几个因素。我们可以通过侦听ApplicationData.DataChanged事件来检测新的漫游数据是否已到达本地设备。此事件发生在应用程序数据刚刚完成从云中同步时。每当设备接收到新的漫游数据时,DataChanged事件就会触发,并传入更新的ApplicationData对象。这使我们可以在数据发生变化时对应用程序进行任何调整。

    对于重要的时间关键设置,请使用与RoamingSettings相关的HighPriority设置,如下所示:

    // High Priority setting, for example, last page position in book reader app
    roamingSettings.values["HighPriority"] = "65";
    

    这是漫游设置中的一个特殊密钥,我们可以用于需要立即同步的数据。将HighPriority添加到任何设置都将使其尽快同步。

  3. 不要漫游大量的应用程序数据。一个应用程序可以漫游的应用程序数据量是有限制的;请使用RoamingStorageQuota属性获取此最大值。如果应用程序达到此限制,则在应用程序数据存储的大小不再超过限制之前,任何数据都不能漫游。

    每个设置的名称最多可以是255个字符。每个设置的大小最多可达8K字节,每个组合设置的大小最大可达64K字节。同步引擎可能会限制可以漫游的设置和文件的总大小。跟踪您试图漫游的数据量是很重要的。如果您尝试同步的数据总量超过限制,则设备之间不会同步任何数据。

  4. 应用程序数据仅在具有相同版本号的已安装应用程序之间漫游。例如,版本2上的设备将在彼此之间转换数据,版本3上的设备也将这样做,但在运行版本2的设备和运行版本3的设备之间不会发生漫游。如果您在其他设备上安装了使用各种版本号的新应用程序,则新安装的应用程序将同步与最高版本号相关的应用程序数据。

    如果您在漫游日期中使用版本控制,请确保您使用的是正确的版本。

这些可能是导致漫游数据在设备之间不同步的原因。有关更多信息,请在商店中查看漫游数据并检索设置和其他应用程序数据。

最新更新