헬스 커넥트 매치메이킹 API 가이드입니다.
개요
매치메이킹 API를 사용하면 앱이 읽을 권한이 있는 건강 데이터를 쓸 수 있는 다른 앱과 기기를 앱에서 검색할 수 있습니다. 이렇게 하면 사용자가 즐겨찾는 데이터 소스를 앱에 더 쉽게 연결할 수 있습니다.
매치메이킹 화면은 헬스 커넥트 호환 앱과 기기를 검색합니다. 그런 다음 앱의 필수 읽기 권한을 이러한 앱과 기기의 쓰기 기능과 상호 참조합니다. 이 화면에는 앱에서 읽을 수 있는 지정된 레코드 유형 중 하나 이상에 대해 쓰기 권한을 선언했지만 아직 부여하지 않은 앱과 기기가 표시됩니다.
시작하기 전에
이 가이드에서는 앱에서 헬스 커넥트를 이미
구성했고
인스턴스를 사용할 수 있다고 가정합니다.HealthConnectClient
헬스 커넥트 사용 가능 여부 확인
헬스 커넥트를 사용하기 전에 앱에서 사용자 기기에 헬스 커넥트가 있는지 확인해야 합니다. 헬스 커넥트가 사용자 기기에 설치되어 있지 않거나 사용 중지되어 있을 수 있습니다.
HealthConnectClient.getSdkStatus()를 사용하여
사용 가능 여부를 확인합니다. 헬스 커넥트를 사용할 수 없는 경우 사용자에게 Google Play 스토어에서 헬스 커넥트를 설치하거나 업데이트하라는 메시지를 표시합니다.
기능 이용 가능 여부 확인
사용자 기기가 헬스 커넥트에서 매치메이킹을 지원하는지 확인하려면 FEATURE_MATCHMAKING의 사용 가능 여부를 확인하세요.
if (healthConnectClient
.features
.getFeatureStatus(
HealthConnectFeatures.FEATURE_MATCHMAKING
) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
// Feature is available
} else {
// Feature isn't available
}
구현
매치메이킹 흐름은 MatchmakingRequest를 사용하여 시작됩니다. 이 요청은 앱에서 수집할 레코드 유형을 정의하고 앱 또는 기기와 같은 특정 데이터 소스를 포함하거나 제외할 수 있도록 합니다.
recordTypes:Record클래스 집합(예:StepsRecord::class)입니다. 비어 있으면 흐름에서 앱에 읽기 권한이 있는 모든 레코드 유형을 고려합니다.includedDataSources: 독점적으로 포함할DataOrigin객체 집합입니다.excludedDataSources: 제외할DataOrigin객체 집합입니다.
다음 단계에 따라 매치메이킹 API를 애플리케이션에 통합하세요.
매치메이킹 가능 여부 확인
매치메이킹 진입점을 표시하기 전에 checkIfMatchmakingIsPossible()을 사용하여 요청된 레코드 유형에 관련 매칭 앱 또는 기기가 있는지 확인합니다.
suspend fun checkMatchmakingPossible(healthConnectClient: HealthConnectClient) {
val request = MatchmakingRequest(recordTypes = setOf(StepsRecord::class))
val response = healthConnectClient.checkIfMatchmakingIsPossible(request)
if (response.isMatchmakingPossible) {
// Relevant apps or devices found. Show entry point to launch flow.
} else {
// Handle case where no new data sources are available
}
}
매치메이킹 가능 여부를 지속적으로 확인하는 것이 좋습니다.
사용자는 나중에 상호 호환되는 데이터 유형이 있는 앱을 추가로 설치하거나 기기를 연결할 수 있습니다. 일반적인 방법은 앱이 시작될 때마다 확인하는 것입니다. true를 반환하면 매치메이킹 흐름을 시작하는 진입점을 표시합니다.
매치메이킹 흐름 시작
매치메이킹이 가능한 경우 createMatchmakingIntent()를 사용하여 헬스 커넥트 흐름을 시작하는 Intent
를 가져온 다음 활동 결과
API를 사용하여 시작합니다.
// Create the matchmaking launcher
val matchmakingLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result ->
if (result.resultCode == Activity.RESULT_OK) {
// Matchmaking finished successfully.
// User successfully granted at least one permission.
} else {
// User canceled flow or didn't grant permissions.
}
}
fun launchMatchmaking(healthConnectClient: HealthConnectClient) {
val request = MatchmakingRequest(recordTypes = setOf(StepsRecord::class))
val intent = healthConnectClient.createMatchmakingIntent(request)
matchmakingLauncher.launch(intent)
}
이 인텐트를 시작하면 헬스 커넥트에서 사용자가 호환되는 앱과 기기를 확인하고 앱과 데이터를 공유하도록 연결할 수 있는 화면을 표시합니다.