Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

모바일 앱(안드로이드)

Nearby Connections API에서 기기 이름이 다르게 나오는 이유

Billcorea 2025. 7. 25. 15:26
반응형

 

📡 Nearby Connections API에서 기기 이름이 다르게 나오는 이유

nearyby 예시

 

Android에서 Nearby Connections API를 사용하다 보면, 상대 기기의 이름이 Pixel 6이나 SM-G991N 같은 모델명이 아닌, 이상한 문자열이나 내가 설정한 것과 다른 이름으로 나오는 경우가 있습니다.

이번 글에서는 그 이유와 함께, 어떻게 하면 내 의도대로 기기 이름을 설정하고 표시할 수 있는지 알아보겠습니다.


📌 문제 상황

기기 간 연결을 요청할 때 사용하는 아래의 코드에서:

connectionsClient.requestConnection(
    Build.MODEL,         // 👈 상대방에게 보이는 내 이름
    endpointId,
    connectionLifecycleCallback
)

여기서 사용된 Build.MODEL은 기기의 모델명입니다. 예를 들어, 삼성 갤럭시 A 시리즈는 SM-A536N 같은 이름으로 나타날 수 있습니다.

따라서 상대방이 ConnectionInfo.endpointName으로 받은 값은 이처럼 친숙하지 않은 기기 모델명이 되는 거죠.


🔍 근본 원인

endpointName은 기기 스스로가 지정하는 값이기 때문입니다. 즉, Nearby 연결을 시작할 때 아래 코드에서 우리가 넘긴 값이 상대방에게 보이게 됩니다:

connectionsClient.startAdvertising(
    Build.MODEL,  // 👈 이 값이 endpointName이 됨
    serviceId,
    connectionLifecycleCallback,
    advertisingOptions
)

즉, 기기 이름처럼 보이는 endpointName은 사실 내가 직접 지정한 문자열</strong이며, 시스템이 자동으로 정해주는 게 아닙니다.


✅ 해결 방법

1. 사용자 지정 이름 사용하기

사용자가 설정한 닉네임 또는 앱 내에서 정의한 이름을 사용할 수 있습니다:

val userDeviceName = "홍길동의 폰"

connectionsClient.startAdvertising(
    userDeviceName,     // 사용자 지정 이름
    serviceId,
    connectionLifecycleCallback,
    advertisingOptions
)

이렇게 하면 상대방의 ConnectionInfo.endpointName에는 홍길동의 폰이 표시됩니다.

2. 시스템에 등록된 기기 이름 가져오기

아래 방법으로 설정된 기기 이름을 불러올 수도 있습니다:

val defaultName = Settings.Global.getString(
    context.contentResolver,
    "device_name"
) ?: Build.MODEL
TIP: 일부 기기에서는 이 값이 null일 수 있으므로 Build.MODEL을 기본값으로 지정하는 것이 좋습니다.

📬 정리

  • endpointName은 자동으로 설정되는 기기 이름이 아님
  • 내가 startAdvertising() 또는 requestConnection()에서 넘긴 문자열이 그대로 사용됨
  • 보다 친숙한 이름을 위해 사용자가 설정한 값 또는 Settings.Global에서 기기 이름을 불러오는 방식 권장

🎯 예시 결과 화면

📱 startAdvertising("DY의 Galaxy")를 호출하면 상대방 기기에서는:

connectionInfo.endpointName == "DY의 Galaxy"

이처럼 보다 직관적이고 의미 있는 이름으로 표시됩니다.


작성자: 빌코리아. · 정리 도움: ChatGPT

반응형