تتضمّن معظم التطبيقات التي تتكامل مع Health Connect مخزن بيانات خاصًا بها يمكن استخدامه كمصدر موثوق. يوفّر Health Connect طرقًا للحفاظ على مزامنة تطبيقك.
تأكّد من أنّ تطبيقك ينفّذ ما يلي:
- خلاصات البيانات الجديدة أو المعدَّلة من مخزن بيانات تطبيقك إلى Health Connect.
- يسحب تغييرات البيانات من Health Connect، والتي تنعكس في مخزن بيانات التطبيق.
- يتم حذف البيانات من Health Connect عند حذفها في مخزن بيانات تطبيقك.
في كل حالة، تأكَّد من توافق عملية المزامنة مع تطبيق Health Connect ومخزن بيانات تطبيقك.
بيانات الخلاصة في Health Connect
الجزء الأول من عملية المزامنة هو خلاصة البيانات من مخزن بيانات تطبيقك إلى مخزن بيانات Health Connect.
إعداد بياناتك
تحتوي السجلات في مخزن بيانات التطبيق عادةً على التفاصيل التالية:
- مفتاح فريد، مثل
UUID
. - نسخة أو طابع زمني
صمِّم مخزن بيانات تطبيقك لتتبع البيانات التي تم تغذيتها سابقًا بتطبيق Health Connect. لتحقيق ذلك، قم بتطبيق المنطق التالي:
- قدِّم قائمة بالتغييرات ورمزًا مميزًا يمكن استخدامه لاسترداد السجلات التي لها تعديلات منذ إصدار آخر رمز مميّز.
- يمكنك تتبُّع آخر مرة تم فيها تعديل البيانات المصدَّرة.
هذه الخطوات ضرورية لضمان إرسال البيانات الجديدة أو المعدَّلة فقط إلى تطبيق Health Connect.
كتابة البيانات في Health Connect
لإدخال البيانات في Health Connect، يمكنك تنفيذ الخطوات التالية:
- احصل على قائمة بالإدخالات الجديدة أو المعدَّلة من مخزن بيانات التطبيق.
- وأنشِئ عنصر
Record
مناسبًا لكل إدخال لهذا النوع من البيانات. على سبيل المثال، يمكنك إنشاء عنصرWeightRecord
للبيانات ذات الصلة بالوزن. حدِّد عنصر
Metadata
مع كلRecord
باستخدام المفتاح الفريد وتفاصيل الإصدار من مخزن بيانات تطبيقك. وإذا لم يتم تحديد إصدارات لبياناتك، يمكنك استخدام القيمةLong
للطابع الزمني الحالي كبديل.val record = WeightRecord( metadata = Metadata( clientRecordId = "<Your record's Client ID>", clientRecordVersion = <Your record's version> ), weight = weight, time = time, zoneOffset = zoneOffset )
يمكنك ترقية بيانات Health Connect باستخدام
insertRecords
. تعني زيادة البيانات أنّه يتم استبدال أي بيانات حالية في Health Connect ما دامت قيمclientRecordId
متوفّرة في مخزن بيانات Health Connect، وكانت القيمة "clientRecordVersion
" أعلى من القيمة الحالية. وبخلاف ذلك، تتم كتابة البيانات التي تم تأكيدها كبيانات جديدة.healthConnectClient.insertRecords(arrayListOf(record))
للتعرّف على الاعتبارات العملية لتغذية البيانات، اطّلِع على أفضل الممارسات لكتابة البيانات.
أرقام تعريف Store Health Connect
بعد إنشاء نسخة احتياطية من سجلّاتك في Health Connect، على مخزن بيانات التطبيق
تخزين id
Health Connect لكل سجلّ. ويسمح هذا لتطبيقك بالتحقق مما إذا كان كل تغيير وارد يتطلب إنشاء سجل جديد أو تعديل سجل حالي بعد سحب البيانات.
تعرض الدالة insertRecords
InsertRecordsResponse
التي تحتوي على قائمة من قيم id
.
يمكنك استخدام الرد للحصول على أرقام تعريف السجلّ وتخزينها.
val response = healthConnectClient.insertRecords(arrayListOf(record))
for (recordId in response.recordIdsList) {
// Store recordId to your app's datastore
}
سحب البيانات من Health Connect
يتمثل الجزء الثاني من عملية المزامنة في سحب أي تغييرات في البيانات من Health Connect إلى مخزن بيانات تطبيقك. يمكن أن تشمل تغييرات البيانات التحديثات وعمليات الحذف.
الحصول على الرمز المميز للتغييرات
للحصول على قائمة بالتغييرات التي يمكن سحبها من Health Connect، يحتاج تطبيقك إلى تتبُّع الرموز المميّزة للتغييرات. ويمكنك استخدامها عند طلب التغييرات لعرض كل من قائمة التغييرات في البيانات، ورمز التغييرات المميز الجديد الذي سيتم استخدامه في المرة القادمة.
للحصول على الرمز المميّز التغييرات، يمكنك طلب رمز getChangesToken
وتقديم أنواع البيانات المطلوبة.
val changesToken = healthConnectClient.getChangesToken(
ChangesTokenRequest(recordTypes = setOf(WeightRecord::class))
)
التحقّق من تغييرات البيانات
الآن بعد أن حصلت على الرمز المميّز للتغييرات، استخدِمه للاطّلاع على جميع التغييرات. نقترح إنشاء حلقة تكرار للاطّلاع على جميع التغييرات التي يتم من خلالها التحقق من ما إذا كانت هناك تغييرات متاحة في البيانات. في ما يلي الخطوات التي يجب اتّباعها:
- يمكنك الاتصال بـ
getChanges
باستخدام الرمز المميّز للحصول على قائمة التغييرات. - تحقَّق مما إذا كان كل تغيير من نوعه
UpsertionChange
أوDeletionChange
، ونفِّذ العمليات اللازمة.- بالنسبة إلى
UpsertionChange
، لا تنفّذ التغييرات التي لم تأتي من تطبيق الاتصال إلا للتأكّد من أنك لا تعيد استيراد البيانات.
- بالنسبة إلى
- حدِّد الرمز المميز التالي للتغييرات كرمز مميّز جديد.
- كرِّر الخطوات من 1 إلى 3 إلى أن تنتهي أي تغييرات.
- يمكنك تخزين الرمز المميّز التالي وحجزه لاستيراده في المستقبل.
suspend fun processChanges(token: String): String {
var nextChangesToken = token
do {
val response = healthConnectClient.getChanges(nextChangesToken)
response.changes.forEach { change ->
when (change) {
is UpsertionChange ->
if (change.record.metadata.dataOrigin.packageName != context.packageName) {
processUpsertionChange(change)
}
is DeletionChange -> processDeletionChange(change)
}
}
nextChangesToken = response.nextChangesToken
} while (response.hasMore)
// Return and store the changes token for use next time.
return nextChangesToken
}
للتعرّف على الاعتبارات العملية لسحب البيانات، يمكنك الاطّلاع على أفضل الممارسات لمزامنة البيانات.
معالجة تغييرات البيانات
اعكس التغييرات التي طرأت على مخزن بيانات تطبيقك. بالنسبة إلى UpsertionChange
، استخدِم id
وlastModifiedTime
من metadata
إلى تصدير السجلّ.
بالنسبة إلى DeletionChange
، استخدِم id
المقدَّمة لحذف السجلّ.
حذف البيانات من Health Connect
عندما يحذف مستخدم بياناته من تطبيقك، تأكَّد من إزالة البيانات أيضًا من Health Connect. استخدِم deleteRecords
لإجراء ذلك. يتطلب ذلك قائمة بقيم id
وclientRecordId
، ما يسهّل تجميع بيانات متعددة لحذفها.