2016-05-02 3 views
3

Я сделал приложение UWP. Я использую roamingdata.I сохранить настройку следующим образом:мои данные о роуминге dosen't синхронизация между устройствами

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"); 
    } 

Я завершаю приложение и загрузить на окна магазина и прошли проверку. Затем я загружаю это приложение на свой телефон.

Я изменяю 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 \ Настройки на моем ПК, там был 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

Код, который вы опубликовали, является правильным. Тем не менее, есть некоторые возможные причины отказа в роуминге синхронизации данных:

  1. Любой пользователь может извлечь выгоду из роуминга данных приложения, если они используют учетную запись Microsoft, чтобы войти в их устройстве. Однако пользователи и администраторы групповых политик могут в любое время отключить данные о роуминге на устройстве. Если пользователь не хочет использовать учетную запись Microsoft или отключает возможности данных роуминга, она все равно сможет использовать ваше приложение, но данные приложения будут локальными для каждого устройства.

    Имейте в виду, что данные о роуминге связаны с учетной записью пользователя Microsoft. Данные роуминга будут синхронизироваться только в том случае, если пользователь войдет в свои устройства с использованием одной и той же учетной записи Microsoft и установит приложение на несколько устройств.

  2. Не используйте роуминг для данных, которые основаны на мгновенной синхронизации. Windows не гарантирует мгновенную синхронизацию; роуминг может быть значительно задержан, если пользователь находится в автономном режиме или в сети с высокой задержкой.

    Роуминг настроек не является мгновенным. При определении того, когда отправлять данные, система весит несколько факторов. Мы можем обнаружить, появились ли новые данные о роуминге на локальном устройстве, прослушивая событие ApplicationData.DataChanged. Это событие происходит, когда данные приложения только что завершили синхронизацию из облака. В любое время, когда устройство получает новые данные роуминга, событие DataChanged будет срабатывать, передавая обновленный объект ApplicationData. Это позволяет нам вносить какие-либо корректировки в наше приложение, когда данные были изменены.

    Для важных, критических по времени настройки, используйте HighPriority настройки, связанные с RoamingSettings, как следующее:

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

    Это специальный ключ в настройках роуминга, которые мы можем использовать для данных нам нужно немедленно синхронизировать. Добавление HighPriority к любой настройке позволит синхронизировать ее как можно быстрее.

  3. Не перемещайте большие наборы данных приложения. Существует ограничение на количество данных приложения, которое может перемещаться в приложении; используйте RoamingStorageQuota property, чтобы получить этот максимум. Если приложение попадает в этот предел, данные не могут перемещаться, пока размер хранилища данных приложения больше не будет превышать лимит.

    Имя каждой настройки может содержать не более 255 символов. Каждый параметр может иметь размер до 8 Кбайт, и каждый составной параметр может иметь размер до 64 Кбайт. Механизм синхронизации может ограничивать общий размер настроек и файлов, которые могут перемещаться. Важно следить за количеством данных, которые вы пытаетесь совершить. Если общий объем данных, которые вы пытаетесь синхронизировать, превышает предел, ничего не будет синхронизироваться между устройствами.

  4. Данные приложения перемещаются только между установленными приложениями с тем же номером версии. Например, устройства на версии 2 будут переводить данные между собой, а устройства на версии 3 будут делать то же самое, но не будет роуминга между устройством, работающим под управлением версии 2, и устройством, работающим версии 3. Если вы установите новое приложение, в котором используются различные номера версий на других устройствах, недавно установленное приложение синхронизирует данные приложения, связанные с самым высоким номером версии.

    Если вы используете версию в роуминге, убедитесь, что вы имеете дело с правильной версией.

Это несколько возможных причин, по которым данные роуминга могут не синхронизироваться между устройствами. Для получения дополнительной информации, пожалуйста, проверьте Данные о роуминге в Store and retrieve settings and other app data.

Смежные вопросы