我制作了一个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机制有什么问题?我需要一个答案,谢谢!
答案 0 :(得分:1)
您发布的代码是正确的。但是,漫游数据同步失败可能有一些原因:
如果用户使用Microsoft帐户登录其设备,则任何用户都可以从漫游应用数据中受益。但是,用户和组策略管理员可以随时关闭设备上的漫游应用程序数据。如果用户选择不使用Microsoft帐户或禁用漫游数据功能,她仍然可以使用您的应用,但应用数据可以是每个设备的本地数据。
请记住,漫游数据与用户的Microsoft帐户相关联。只有当用户使用相同的Microsoft帐户登录其设备并在多个设备上安装该应用程序时,漫游数据才会同步。
不要将漫游用于依赖于即时同步的数据。 Windows不保证即时同步;如果用户处于脱机状态或高延迟网络,漫游可能会显着延迟。
漫游设置不是即时的。在确定何时发送数据时,系统会权衡几个因素。我们可以通过收听 ApplicationData.DataChanged 事件来检测新漫游数据是否已到达本地设备。当应用数据刚刚从云端同步时,会发生此事件。设备每次接收到新的漫游数据时,都会触发DataChanged事件,并传入更新的ApplicationData对象。这样,我们就可以在数据发生变化时对我们的应用进行任何调整。
对于重要的时间关键设置,请使用与RoamingSettings相关联的 HighPriority 设置,如下所示:
// High Priority setting, for example, last page position in book reader app
roamingSettings.values["HighPriority"] = "65";
这是我们可以用于需要立即同步的数据的漫游设置中的特殊键。将HighPriority
添加到任何设置都会使其尽快同步。
不要漫游大量的应用数据。应用可能会漫游的应用数据量有限制;使用 RoamingStorageQuota 属性来获得此最大值。如果应用程序达到此限制,则在应用程序数据存储的大小不再超过限制之前,任何数据都无法漫游。
每个设置的名称最多可以包含255个字符。每个设置的大小最多为8K字节,每个复合设置的大小最多为64K字节。同步引擎可能会限制可以漫游的设置和文件的总大小。跟踪您尝试漫游的数据量非常重要。如果您尝试同步的数据总量超出限制,则设备之间不会同步任何内容。
应用数据仅在具有相同版本号的已安装应用之间漫游。例如,版本2上的设备将在彼此之间转换数据,而版本3上的设备将执行相同操作,但在运行版本2的设备和运行版本3的设备之间不会发生漫游。如果安装使用各种设备的新应用程序其他设备上的版本号,新安装的应用程序将同步与最高版本号关联的应用程序数据。
如果您在漫游日期使用版本控制,请确保您正在处理正确的版本。
这些是可能导致漫游数据无法在设备之间同步的一些可能原因。有关详细信息,请查看Store and retrieve settings and other app data中的漫游数据。