Matchmaking API

헬스 커넥트 매치메이킹 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)
}

이 인텐트를 시작하면 헬스 커넥트에서 사용자가 호환되는 앱과 기기를 확인하고 앱과 데이터를 공유하도록 연결할 수 있는 화면을 표시합니다.

헬스 커넥트와 데이터를 공유할 수 있는 앱 목록이 표시된 매치메이킹 화면
그림 1. 사용자에게 공유하려는 데이터를 쓸 수 있는 앱이 표시됩니다.

헬스 커넥트와 데이터를 공유할 수 있는 앱 목록이 표시된 매치메이킹 화면

데이터 공유를 허용하거나 허용하지 않는 헬스 커넥트 권한 화면
그림 2. 사용자가 앱에 헬스 커넥트에서 데이터를 읽을 수 있는 권한을 부여합니다.

데이터 공유를 허용하거나 허용하지 않는 헬스 커넥트 권한 화면