기기 찾기 개요
찾기 API는 연결된 기기가 찾기 알림을 내도록 하거나, 기기가 앱에 iPhone 찾기를 요청했을 때 응답하는 데 사용합니다.
두 흐름은 방향이 반대이며 서로 다른 API를 사용합니다.
| 흐름 | 시작 주체 | 앱에서 처리할 작업 | 완료 신호 |
|---|---|---|---|
| 기기 찾기 | 호스트 앱 | DeviceFindAPI를 통해 연결된 기기의 펌웨어 정의 찾기 알림을 시작하거나 중지합니다. | 명령 completion이 접수 여부를 보고합니다. 지원되는 기기는 이후 deviceDidReportFound를 호출할 수 있습니다. |
| iPhone 찾기 | 연결된 기기 | delegate 콜백에 응답하여 iPhone에서 소리, 진동 또는 UI를 시작하거나 중지합니다. | 사용자가 iPhone을 찾으면 FindPhoneStateReportingAPI를 통해 완료를 보고합니다. |
기능 개요
기기 찾기
시작 finding operation on connected AIBuds device
중지 Find Device
중지 finding operation on connected AIBuds device
iPhone을 찾았다고 알리기
보고서 device-originated find-iPhone request has been resolved
AI를 활용해 구현
AI로 구현
AI로 이 워크플로 구현
공식 “AIBuds 기기 찾기 구현” 스킬을 사용해 앱에 맞게 구현하세요.
https://docs-aibuds.github.io/ko/skills/implement-aibuds-find-workflow을 읽고 지침을 따르세요. 이 스킬로 “AIBuds 기기 찾기 구현”을 이 iOS 프로젝트에 구현하고 검증하세요.시작하기
찾기 기능은 다음 순서로 사용하세요.
- 기기 연결 — 대상 AIBuds 기기를 사용할 수 있는 상태로 연결합니다.
- 방향 선택 — 앱에서 기기를 찾을지, 기기가 보낸 iPhone 찾기 요청에 응답할지 결정합니다.
- 프로토콜 및 기능 지원 확인 — 기기 찾기 명령에는
DeviceFindAPI를 사용하고supportsFindDevice == true인지 확인합니다. iPhone을 찾았음을 보고할 때는FindPhoneStateReportingAPI를 사용합니다. - 올바른 종료 신호 처리 — 명령이 접수되었다는 응답을 실제 기기나 iPhone을 찾았다는 의미로 해석하지 마세요.
핵심 개념
기기 찾기
- 기기 찾기 시작: 연결된 기기에 찾기 알림 시작을 요청합니다.
- 기기 찾기 중지: 연결된 기기에 찾기 알림 중지를 요청합니다.
- 기기 발견 이벤트: 지원되는 경우
deviceDidReportFound(_:)은 기기가 별도로 보내는 종료 이벤트입니다.
DeviceFindAPI는 이미 연결된 기기에서 동작합니다. 관련 컨트롤을 표시하거나 명령을 보내기 전에 supportsFindDevice를 확인하세요. 연결된 기기가 이 기능을 보고하지 않으면 속성은 false가 됩니다. Bluetooth 기기 검색이나 주변 기기 스캔은 수행하지 않습니다.
iPhone 찾기
deviceDidRequestStartFindingPhone(_:)은 앱에 iPhone 측 알림 시작을 요청합니다.deviceDidRequestStopFindingPhone(_:)은 앱에 해당 알림 중지를 요청합니다.- 사용자가 iPhone을 찾으면
notifyPhoneFound(_:)을 호출하여 요청한 기기에 완료를 보고합니다.
프로토콜 참고
기기 찾기 명령은 DeviceFindAPI를 통해 사용합니다.
- Swift
- Objective-C
guard let device = device as? DeviceFindAPI else {
print("Device does not support DeviceFindAPI")
return
}
guard device.supportsFindDevice else {
print("Connected device does not support find-device commands")
return
}id<AIBudsDeviceFindAPI> device = (id<AIBudsDeviceFindAPI>)self.device;
if (![device conformsToProtocol:@protocol(AIBudsDeviceFindAPI)]) {
NSLog(@"Device does not support AIBudsDeviceFindAPI");
return;
}
if (!device.supportsFindDevice) {
NSLog(@"Connected device does not support find-device commands");
return;
}반대 방향인 iPhone 찾기 흐름에서는 기기의 요청을 받은 뒤 FindPhoneStateReportingAPI를 사용합니다.
- Swift
- Objective-C
guard let reporter = device as? FindPhoneStateReportingAPI else {
print("Device cannot receive an iPhone-found report")
return
}id<AIBudsFindPhoneStateReportingAPI> reporter =
(id<AIBudsFindPhoneStateReportingAPI>)self.device;
if (![reporter conformsToProtocol:@protocol(AIBudsFindPhoneStateReportingAPI)]) {
NSLog(@"Device cannot receive an iPhone-found report");
return;
}권장 사항
- 두 방향 구분: iPhone 측 알림 구현에
DeviceFindAPI를 사용하지 마세요. - 프로토콜 및 기능 지원 확인: 선택한 흐름에 필요한 프로토콜을 확인하고, 기기 찾기 컨트롤을 표시하기 전에
supportsFindDevice를 확인하세요. - 접수와 완료 구분: 성공 completion은 명령 처리가 완료되었음을 의미하며 대상을 실제로 찾았다는 의미는 아닙니다.
- 중지 경로 제공: 사용자가 실행 중인 기기 또는 iPhone 알림을 중지할 수 있게 하세요.
- 메인 큐에서 UI 변경: 콜백에서 수행하는 UIKit 변경은 메인 큐로 전달하세요.
참고
- 기기 찾기 명령을 사용하려면 대상 기기가 연결되어 통신 가능한 상태여야 합니다.
- 기기 측 소리, 진동 또는 기타 알림 동작은 펌웨어에서 정의합니다.
- iPhone 찾기 요청에 사용하는 iPhone 측 소리, 진동 및 UI는 앱에서 구현합니다.
supportsFindDevice == false는 기능이 지원되지 않거나 기기가 해당 기능을 보고하지 않았음을 의미할 수 있습니다.- 두 프로토콜 모두 신뢰할 수 있는 활성 상태나 지속 시간 속성을 제공하지 않습니다.