Health Connect ile entegre olan çoğu uygulamanın kendi veri deposu vardır. bilgi kaynağı işlevi görür. Health Connect, uygulamanızı kullanmaya devam etmenizi sağlayacak yöntemler sunar senkronize edilir.
Uygulamanızın şunları yaptığından emin olun:
- Uygulamanızın veri deposundaki yeni veya güncellenmiş verileri Health Connect'e aktarır.
- Health Connect'teki veri değişikliklerini alır ve bunlar uygulamanın veri deposundan.
- Uygulamanızın veri deposundan silindikten sonra Health Connect'teki veriler silinir.
Her durumda, senkronizasyon işleminin hem Health Connect hem de Health Connect ile uyumlu hale getirmiş olursunuz.
Health Connect'e veri feed'i verileri
Senkronizasyon sürecinin ilk bölümü, uygulamanızın veri deposundan veri feed'i oluşturmaktır gönderir.
Verilerinizi hazırlama
Uygulamanızın veri deposundaki kayıtlar genellikle aşağıdaki ayrıntılara sahiptir:
UUID
gibi benzersiz bir anahtar.- Sürüm veya zaman damgası.
Uygulamanızın veri deposunu, zaten hangi verilerin aktarıldığını takip edecek şekilde tasarlayın Health Connect. Bunun için aşağıdaki mantığı uygulayın:
- Değişikliklerin listesini ve kayıtları almak için kullanılabilecek bir jeton sağlayın ve Google Analytics 4'te yeni bir sekme açılır.
- Dışa aktarılan verilerin en son ne zaman değiştirildiğini izleyin.
Bu adımlar, yalnızca yeni veya güncellenen verilerin Health Connect.
Health Connect'e veri yazma
Health Connect'e veri aktarmak için aşağıdaki adımları uygulayın:
- Uygulamanızın veri deposundan yeni veya güncellenmiş girişlerin listesini alın.
- Her giriş için söz konusu veri türüne uygun bir
Record
nesnesi oluşturun. Örneğin, ağırlıkla ilgili veriler için birWeightRecord
nesnesi oluşturun. Benzersiz anahtarı ve her bir
Record
ile birMetadata
nesnesi belirtin. uygulamanızın veri deposundaki sürüm ayrıntıları Verilerinizde sürüm oluşturulmamışsa alternatif olarak geçerli zaman damgasınınLong
değerini kullanabilirsiniz.val record = WeightRecord( metadata = Metadata( clientRecordId = "<Your record's Client ID>", clientRecordVersion = <Your record's version> ), weight = weight, time = time, zoneOffset = zoneOffset )
Verileri Health Connect'e yükselt
insertRecords
. Verilerin yükseltilmesi, mevcut tümclientRecordId
olduğu sürece Health Connect'teki verilerin üzerine yazılır. değerleri Health Connect veri deposunda veclientRecordVersion
mevcut değerden daha yüksek. Aksi takdirde, düzeltilen veriler yeni veri olarak kabul edilir.healthConnectClient.insertRecords(arrayListOf(record))
Veri feed'iyle ilgili pratik konuları öğrenmek için, Veri yazma ile ilgili en iyi uygulamaları inceleyin.
Health Connect kimliklerini depolama
Kayıtlarınız Health Connect'e eklendikten sonra uygulamanızın veri deposunun şunları yapması gerekir:
Her kayıt için Health Connect id
depolama alanı kullanılır. Bu sayede uygulamanız,
gelen her değişiklik yeni bir kayıt oluşturulmasını gerektiriyorsa veya
güncelleme işlemini tekrarlamanız gerekir.
insertRecords
işlevi,
id
değerin listesini içeren InsertRecordsResponse
.
Yanıtı kullanarak Kayıt Kimliklerini alın ve depolayın.
val response = healthConnectClient.insertRecords(arrayListOf(record))
for (recordId in response.recordIdsList) {
// Store recordId to your app's datastore
}
Health Connect'ten veri alma
Senkronizasyon sürecinin ikinci bölümü ise, bir senkronizasyondaki veri değişikliklerini Health Connect, uygulamanızın veri deposuna bağlanır. Veri değişiklikleri, güncellemeler ve silme sayısı.
Değişiklik jetonu alma
Health Connect'ten alınacak değişikliklerin listesini almak için uygulamanızın Değişiklik jetonları takibi Aşağıdakiler üzerinde Değişiklik isteğinde bulunurken bunları kullanabilirsiniz: hem veri değişikliklerinin bir listesini hem de sonrasında kullanılacak yeni bir Değişiklikler jetonu döndürür gerekir.
Değişiklik jetonu almak için getChangesToken
numaralı telefonu arayın ve
sağlamalısınız.
val changesToken = healthConnectClient.getChangesToken(
ChangesTokenRequest(recordTypes = setOf(WeightRecord::class))
)
Veri değişikliklerini kontrol etme
Artık bir Değişiklik jetonu aldığınıza göre bu jetonu kullanarak tüm değişiklikleri alabilirsiniz. Tüm Değişikliklerin üzerinden geçmek için bir döngü oluşturmanızı öneririz. mevcut veri değişiklikleri olup olmadığını gösterir. Şu adımları uygulayın:
- Aşağıdakilerin listesini almak için jetonu kullanarak
getChanges
numaralı telefonu arayın Değişiklikler. - Her değişikliği, değişiklik türüne uygun olup olmadığını
UpsertionChange
veyaDeletionChange
ve gerekli işlemleri gerçekleştirir.UpsertionChange
için yalnızca sesli arama uygulamasını kontrol edin.
- Bir sonraki Changes jetonunu yeni jetonunuz olarak atayın.
- Başka değişiklik kalmayana kadar 1-3 arasındaki adımları tekrarlayın.
- Bir sonraki jetonu depolayın ve gelecekteki bir içe aktarma işlemi için ayırın.
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
}
Veri çekmeyle ilgili pratik hususlar hakkında bilgi edinmek için Verilerin senkronizasyonuyla ilgili en iyi uygulamaları inceleyin.
Veri değişikliklerini işleme
Uygulamanızın veri deposundaki değişiklikleri yansıtın. UpsertionChange
için id
kullanın
ve lastModifiedTime
, metadata
noktasından üst kaydına geldi.
DeletionChange
için, kaydı silmek üzere sağlanan id
değerini kullanın.
Health Connect'ten veri silme
Bir kullanıcı kendi verilerini uygulamanızdan sildiğinde, bu verilerin
ayrıca Health Connect'ten de kaldırılmıştır. deleteRecords
kullanın
yardımcı oluyorum. Bu, bir kayıt türü ile id
ve clientRecordId
listesini alır
değerleri toplu hale getirmeyi kolaylaştırır.
timeRangeFilter
gerektiren alternatif deleteRecords
mevcuttur.
Verileri senkronize etmek için en iyi uygulamalar
Aşağıdaki faktörler senkronizasyon işlemini etkiler.
Jetonun son kullanma tarihi
Kullanılmayan bir Changes jetonunun süresi 30 gün içinde sona ereceğinden senkronizasyon yapmanız gerekir bilgi kaybını önleyen bir strateji kullanın. Stratejiniz şu yaklaşımlardan bahsedeceğiz:
- Uygulamanızın veri deposunda, en son kullanılan ve aynı zamanda
Health Connect'ten bir
id
var. - Health Connect'ten belirli bir değerle başlayan kayıtları isteme ve bunları uygulamanızın veri deposuna ekleyin veya güncelleyin.
- Bir dahaki sefere ihtiyacınız olduğunda rezerve etmek için bir Değişiklik jetonu isteyin.
Önerilen Değişiklik yönetimi stratejileri
Uygulamanız geçersiz veya süresi dolmuş Değişiklikler jetonları alıyorsa aşağıdaki proje yönetimi stratejilerinin kullanılması önerilir. mantığınız:
- Tüm verileri okuma ve tekilleştirme. Bu en ideal stratejidir.
- Çocuğunuzun Health Connect'ten en son ne zaman veri okuduğunu gösteren zaman damgasını depolayın.
- Jeton geçerlilik süresi sona erdiğinde, en son zaman damgasındaki veya son 30 gün içinde gösterilir. Ardından, şunu kullanarak bu verileri daha önce okunmuş verilerle tekilleştirin: tanımlayıcılar.
- Veri güncellemeleri için gerekli olduğundan bu kimlikleri tercih etmeniz önerilir.
- Yalnızca son okuma zaman damgasından bu yana okunan veriler. Bu, bazı verilerle sonuçlanır
geçerlilik süresinin dolmasına yakın bir farkla,
birkaç saat ile birkaç gün arasında
sürece daha kısa olabilir.
- Çocuğunuzun Health Connect'ten en son ne zaman veri okuduğunu gösteren zaman damgasını depolayın.
- Jeton sona erdiğinde, bu zaman damgasından sonraki tüm verileri okuyun.
- Silin, ardından son 30 güne ait verileri okuyun. Bu, şirkete daha
ilk entegrasyonda ne olduğuna bakalım.
- Son 30 gün içinde uygulamanın Health Connect'ten okuduğu tüm verileri siler gün.
- Silindikten sonra tüm bu verileri tekrar okuyun.
- Tekilleştirme yapmadan son 30 güne ait verileri okuma. Bu en az ideal
stratejisidir ve kullanıcılara yinelenen veriler gösterilmektedir.
- Uygulamanın okuduğu tüm veriler Health Connect'ten şunun için silinir: son 30 gün.
- Yinelenen girişlere izin verin.
Veri türü değişiklikleri jetonları
Uygulamanız bağımsız olarak birden fazla veri türü tüketiyorsa Her veri türüne ait jetonlar. Yalnızca Bu veri türleri birlikte kullanılırsa veya hiç tüketilmezse Sync API'sini değiştirir.
Ön plan okumaları
Uygulamalar yalnızca ön plandayken Health Connect'teki verileri okuyabilir. Health Connect'teki veriler senkronize edilirken Health Connect'e erişim herhangi bir noktada kesilebilir. Örneğin, uygulamanız kesintilere elverişli olmalıdır. senkronizasyonun ortasındayken, Health Connect'ten yüksek miktarda veri ve uygulama tekrar açıldığında devam edin.
İçe aktarma zamanlamaları
Uygulamanız yeni verilerden haberdar olamayacağı için yeni verileri iki noktada kontrol edin:
- Uygulamanız ön planda her etkin hale geldiğinde. Bu durumda, yaşam döngüsü olayları.
- Uygulamanız ön planda kaldığında düzenli olarak. Kullanıcıları şu durumlarda bilgilendir: Bu da ekranlarını, kullandıkları mesajı yansıtacak şekilde anlamına gelir.