تمكين المزامنة في وضع عدم الاتصال لتطبيق Android للجوال

نظرة عامة

يغطي هذا البرنامج التعليمي ميزة المزامنة في وضع عدم الاتصال في Azure Mobile Apps for Android. تسمح المزامنة في وضع عدم الاتصال للمستخدمين النهائيين بالتفاعل مع تطبيق جوال - عرض البيانات أو إضافتها أو تعديلها - حتى في حالة عدم وجود اتصال بالشبكة. يتم تخزين التغييرات في قاعدة بيانات محلية. بمجرد عودة الجهاز إلى الاتصال بالإنترنت ، تتم مزامنة هذه التغييرات مع الواجهة الخلفية البعيدة.

إذا كانت هذه هي تجربتك الأولى مع Azure Mobile Apps، فيجب عليك أولا إكمال البرنامج التعليمي إنشاء تطبيق Android. إذا لم تستخدم مشروع خادم البدء السريع الذي تم تنزيله، فيجب إضافة حزم ملحق الوصول إلى البيانات إلى مشروعك. لمزيد من المعلومات حول حزم ملحقات الخادم، راجع العمل مع حزمة SDK لخادم الواجهة الخلفية .NET لتطبيقات Azure للأجهزة المحمولة.

لمعرفة المزيد حول ميزة المزامنة دون اتصال، راجع الموضوع مزامنة البيانات دون اتصال في Azure Mobile Apps.

تحديث التطبيق لدعم المزامنة في وضع عدم الاتصال

باستخدام المزامنة في وضع عدم الاتصال، يمكنك القراءة إلى جدول مزامنة والكتابة منه (باستخدام واجهة iObileServiceSyncTable )، والتي تعد جزءا من قاعدة بيانات SQLite على جهازك.

لدفع التغييرات وسحبها بين الجهاز وخدمات Azure للأجهزة المحمولة، يمكنك استخدام سياق مزامنة (MobileServiceClient.SyncContext)، والذي تقوم بتهيئته باستخدام قاعدة البيانات المحلية لتخزين البيانات محليا.

  1. في TodoActivity.java، قم بالتعليق على التعريف الحالي لإصدار mToDoTable جدول المزامنة وقم بإلغاء التعليق عليه:

     private MobileServiceSyncTable<ToDoItem> mToDoTable;
    
  2. onCreate في هذه الطريقة، قم بالتعليق على التهيئة mToDoTable الحالية لهذا التعريف وإلغاء التعليق عليه:

     mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);
    
  3. في refreshItemsFromTable التعليق على تعريف results هذا التعريف وعدم التعليق عليه:

     // Offline Sync
     final List<ToDoItem> results = refreshItemsFromMobileServiceTableSyncTable();
    
  4. التعليق على تعريف refreshItemsFromMobileServiceTable.

  5. إلغاء التعليق على تعريف refreshItemsFromMobileServiceTableSyncTable:

     private List<ToDoItem> refreshItemsFromMobileServiceTableSyncTable() throws ExecutionException, InterruptedException {
         //sync the data
         sync().get();
         Query query = QueryOperations.field("complete").
                 eq(val(false));
         return mToDoTable.read(query).get();
     }
    
  6. إلغاء التعليق على تعريف sync:

     private AsyncTask<Void, Void, Void> sync() {
         AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>(){
             @Override
             protected Void doInBackground(Void... params) {
                 try {
                     MobileServiceSyncContext syncContext = mClient.getSyncContext();
                     syncContext.push().get();
                     mToDoTable.pull(null).get();
                 } catch (final Exception e) {
                     createAndShowDialogFromTask(e, "Error");
                 }
                 return null;
             }
         };
         return runAsyncTask(task);
     }
    

اختبار التطبيق

في هذا القسم، يمكنك اختبار السلوك باستخدام WiFi قيد التشغيل، ثم إيقاف تشغيل WiFi لإنشاء سيناريو غير متصل بالإنترنت.

عند إضافة عناصر بيانات، يتم الاحتفاظ بها في مخزن SQLite المحلي، ولكن لا تتم مزامنتها مع خدمة الجوال حتى تضغط على الزر تحديث . قد يكون للتطبيقات الأخرى متطلبات مختلفة فيما يتعلق بالوقت الذي تحتاج فيه البيانات إلى المزامنة ، ولكن لأغراض العرض التوضيحي ، يطلب هذا البرنامج التعليمي من المستخدم طلبها صراحة.

عند الضغط على هذا الزر، تبدأ مهمة خلفية جديدة. يقوم أولا بدفع جميع التغييرات التي تم إجراؤها على المتجر المحلي باستخدام سياق المزامنة ، ثم يسحب جميع البيانات التي تم تغييرها من Azure إلى الجدول المحلي.

اختبار غير متصل بالإنترنت

  1. ضع الجهاز أو جهاز المحاكاة في وضع الطائرة. يؤدي هذا إلى إنشاء سيناريو غير متصل بالإنترنت.

  2. أضف بعض عناصر ToDo أو ضع علامة على بعض العناصر على أنها مكتملة. قم بإنهاء الجهاز أو المحاكي (أو أغلق التطبيق بالقوة) وأعد تشغيله. تحقق من استمرار التغييرات على الجهاز لأنها محفوظة في متجر SQLite المحلي.

  3. عرض محتويات جدول Azure TodoItem إما باستخدام أداة SQL مثل SQL Server Management Studio أو عميل REST مثل Fiddler أو Postman. تحقق من عدم مزامنة العناصر الجديدة مع الخادم

    + For a Node.js backend, go to the [Azure portal](https://portal.azure.com/), and in your Mobile App backend click **Easy Tables** > **TodoItem** to view the contents of the `TodoItem` table.
    + For a .NET backend, view the table contents either with a SQL tool such as *SQL Server Management Studio*, or a REST client such as *Fiddler* or *Postman*.
    
  4. قم بتشغيل WiFi في الجهاز أو جهاز المحاكاة. بعد ذلك، اضغط على الزر تحديث .

  5. عرض بيانات TodoItem مرة أخرى في مدخل Azure. يجب أن تظهر TodoItems الجديدة والمتغيرة الآن.

الموارد الإضافية