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

2024-01-15

我做了一个 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.Current.RoamingSettings。我向手机上的 ApplicationData.Current.RoamingFolder 写入一些内容。

接下来,我关闭了手机上的应用程序,并将该应用程序下载到了我的电脑上。但是当我在电脑上打开应用程序时,我发现 ApplicationData.Current.RoamingSettings 和 ApplicationData.Current.RoamingFolder 没有改变任何内容。

我检查了我电脑上的 C:\Users\XXX\AppData\Local\Packages\XXX\RoamingState,没有任何内容。我检查了我电脑上的C:\Users\XXX\AppData\Local\Packages\XX\Settings,有roaming.lock和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 不保证即时同步;如果用户离线或处于高延迟网络中,漫游可能会显着延迟。

    设置漫游不是即时的。系统在确定何时发送数据时会权衡几个因素。我们可以通过监听来检测是否有新的漫游数据到达本地设备应用程序数据.数据更改 http://msdn.microsoft.com/library/windows/apps/windows.storage.applicationdata.datachanged.aspx事件。当应用程序数据刚刚完成从云端的同步时,会发生此事件。每当设备收到新的漫游数据时,DataChanged 事件就会触发,并传入更新的 ApplicationData 对象。这使我们可以在数据发生变化时对应用程序进行任何调整。

    对于重要的、时间紧迫的设置,请使用高优先级相关设置漫游设置 https://msdn.microsoft.com/library/windows/apps/br241624像下面这样:

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

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

  3. 不要漫游大量应用数据。应用程序可以漫游的应用程序数据量是有限制的;使用漫游存储配额 https://msdn.microsoft.com/library/windows/apps/br241625属性来获得这个最大值。如果应用程序达到此限制,则在应用程序数据存储的大小不再超过该限制之前,任何数据都无法漫游。

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

  4. 应用程序数据仅在具有相同版本号的已安装应用程序之间漫游。例如,版本 2 上的设备将在彼此之间传输数据,版本 3 上的设备也会执行相同的操作,但运行版本 2 的设备和运行版本 3 的设备之间不会发生漫游。在其他设备的版本号上,新安装的应用程序将同步与最高版本号关联的应用程序数据。

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

以下是可能导致漫游数据在设备之间不同步的一些可能原因。欲了解更多信息,请检查漫游数据 in 存储和检索设置和其他应用程序数据 https://msdn.microsoft.com/en-us/windows/uwp/app-settings/store-and-retrieve-app-data#Roaming_data.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的漫游数据无法在设备之间同步 的相关文章

随机推荐