Azure Mobile App离线同步首次执行时不会返回

时间:2017-01-25 03:22:10

标签: azure xamarin xamarin.forms azure-mobile-services

感谢我的XF + Azure移动应用+离线同步中有关问题的任何帮助。我有一个使用Xamarin表单开发的移动应用程序,具有以下流程:

常用启动流程A:

  1. 创建azure服务对象(MobileServiceClient)
  2. 创建数据库存储对象(MobileServiceSQLiteStore)
  3. 通过DefineTable()
  4. 将实体注册到sqlite表
  5. MobileServiceClient.SyncContext.InitializeAsync()
  6. 检查缓存的身份验证令牌
  7. 分支流程B:找到无效/无代码(首次启动)

    1. 显示登录页面(XF)
    2. 通过MobileServiceClient.InvokeApiAsync()
    3. 执行自定义身份验证
    4. 从响应中提取GWT身份验证令牌(此处省略了失败的方案)
    5. 缓存身份验证令牌以供将来使用(带有令牌到期信息)
    6. 分支流C:找到有效令牌(后续启动)

      1. 从令牌(MobileServiceUser)
      2. 创建azure服务用户
      3. 将用户与azure服务对象相关联 MobileServiceClient.CurrentUser = MobileServiceClient.CurrentUser.MobileServiceAuthenticationToken =
      4. 执行同步 MobileServiceClient.SyncContext.PushAsync() MobileServiceClient.GetSyncTable()。PullAsync()
      5. 我的问题是,当我确实流A-> B-> C时,我的同步不会从PushAsync()返回。 一旦我强制关闭我的应用程序并重新启动到流程A-> C,一切都将正常工作(PushAsync()完成,PullSync()从远程检索数据)。

        我还尝试删除"冗余"步骤#12中的PushAsync(),但仍然面临同步从PullAsync()返回的同一问题。

        我怀疑这与线程有关(虽然我非常使用async / await,这些与线程无关)因为偶尔会有相同的过程(首次启动+第一次同步)将能够工作(正确返回)。

        一些参考材料:

        Synchronizing Offline Data with Azure Mobile Apps

        Enable offline sync for your Xamarin.Forms mobile app

        Offline Data Sync in Azure Mobile Apps

0 个答案:

没有答案