【问题标题】:my roaming data dosen't sync between devices我的漫游数据在设备之间不同步
【发布时间】:2016-05-03 22:23:48
【问题描述】:

我制作了一个 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 中写了一些东西。

接下来我关闭了手机上的应用程序并在我的电脑上下载了该应用程序。但是当我在我的 PC 上打开应用程序时,我发现 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. 

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

【问题讨论】:

    标签: c# windows-phone-8 win-universal-app


    【解决方案1】:

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

    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 版的设备之间不会发生漫游。其他设备上的版本号,新安装的应用会同步最高版本号的应用数据。

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

    这些是可能导致漫游数据在设备之间不同步的一些可能原因。如需更多信息,请查看Store and retrieve settings and other app data中的漫游数据

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 2016-06-18
      • 1970-01-01
      相关资源
      最近更新 更多