我的漫游数据不会在设备之间同步

时间:2016-05-02 12:34:38

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

我制作了一个UWP应用程序。我使用roamingdata.I保存设置:

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. 

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

1 个答案:

答案 0 :(得分: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的设备之间不会发生漫游。如果安装使用各种设备的新应用程序其他设备上的版本号,新安装的应用程序将同步与最高版本号关联的应用程序数据。

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

  5. 这些是可能导致漫游数据无法在设备之间同步的一些可能原因。有关详细信息,请查看Store and retrieve settings and other app data中的漫游数据