मुख्य कंटेंट तक स्किप करें

डिवाइस ढूँढने की सुविधा

Find APIs का उपयोग या तो जुड़े हुए डिवाइस पर उसे ढूँढने का संकेत शुरू कराने के लिए करें, या जब डिवाइस ऐप से iPhone ढूँढने को कहे तब उसका जवाब देने के लिए।

ये दो विपरीत दिशाओं में चलने वाले workflow हैं और इनके APIs अलग हैं:

Workflowशुरुआत कौन करता हैऐप की ज़िम्मेदारीपूरा होने का संकेत
डिवाइस ढूँढेंहोस्ट ऐपDeviceFindAPI से जुड़े डिवाइस का firmware-defined संकेत शुरू या बंद करें।Completion command स्वीकार होने की सूचना देता है। समर्थित डिवाइस बाद में deviceDidReportFound भेज सकता है।
iPhone ढूँढेंजुड़ा हुआ डिवाइसDelegate callbacks मिलने पर iPhone पर ध्वनि, vibration या UI शुरू/बंद करें।उपयोगकर्ता के iPhone ढूँढ लेने पर FindPhoneStateReportingAPI से परिणाम डिवाइस को बताएँ।

सुविधा का सारांश

AI की सहायता से लागू करें

AI से बनाएँ

इस वर्कफ़्लो को AI से लागू करें

आधिकारिक “AIBuds खोज वर्कफ़्लो लागू करें” स्किल से वर्कफ़्लो को अपने ऐप के अनुसार लागू करें।

https://docs-aibuds.github.io/hi/skills/implement-aibuds-find-workflow को पढ़ें और निर्देशों का पालन करें। इस स्किल से “AIBuds खोज वर्कफ़्लो लागू करें” को इस iOS प्रोजेक्ट में लागू करें और परिणाम सत्यापित करें।
आधिकारिक स्किल देखें

शुरुआत करें

डिवाइस ढूँढने की सुविधा उपयोग करने के लिए:

  1. डिवाइस से जुड़ें — लक्ष्य AIBuds डिवाइस के साथ उपयोग योग्य connection बनाएँ।
  2. दिशा चुनें — तय करें कि ऐप डिवाइस ढूँढ रहा है या डिवाइस से आए find-iPhone अनुरोध का जवाब दे रहा है।
  3. Protocol और capability support जाँचें — डिवाइस ढूँढने के commands के लिए DeviceFindAPI उपयोग करें और supportsFindDevice == true होना सुनिश्चित करें; iPhone मिल जाने की सूचना देने के लिए FindPhoneStateReportingAPI उपयोग करें।
  4. सही अंतिम संकेत संभालें — Command स्वीकार होने को डिवाइस या iPhone वास्तव में मिल जाने का प्रमाण न मानें।

मुख्य अवधारणाएँ

डिवाइस ढूँढें

  • डिवाइस ढूँढें: जुड़े डिवाइस से locate indication शुरू करने का अनुरोध करता है।
  • डिवाइस ढूँढना रोकें: जुड़े डिवाइस से वह indication बंद करने का अनुरोध करता है।
  • डिवाइस मिलने का event: समर्थित होने पर deviceDidReportFound(_:) डिवाइस से आने वाला अलग terminal event है।

DeviceFindAPI पहले से जुड़े डिवाइस पर काम करता है। Controls दिखाने या command भेजने से पहले supportsFindDevice जाँचें। Connected डिवाइस capability report न करे तो property का default false होता है। यह API Bluetooth discovery या आस-पास के डिवाइस scan नहीं करता।

iPhone ढूँढें

  • deviceDidRequestStartFindingPhone(_:) ऐप से iPhone-side alert शुरू करने को कहता है।
  • deviceDidRequestStopFindingPhone(_:) ऐप से वह alert बंद करने को कहता है।
  • उपयोगकर्ता के iPhone ढूँढ लेने पर अनुरोध करने वाले डिवाइस को परिणाम बताने के लिए notifyPhoneFound(_:) call करें।

Protocol संदर्भ

Locate-device commands DeviceFindAPI के माध्यम से उपलब्ध हैं:

Swift
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
}

विपरीत दिशा वाला find-iPhone workflow, डिवाइस से अनुरोध आने के बाद FindPhoneStateReportingAPI उपयोग करता है:

Swift
guard let reporter = device as? FindPhoneStateReportingAPI else {
    print("Device cannot receive an iPhone-found report")
    return
}

बेहतर तरीके

  1. दोनों दिशाएँ अलग रखें: iPhone-side alert लागू करने के लिए DeviceFindAPI उपयोग न करें।
  2. Protocol और capability support जाँचें: आवश्यक protocol की पुष्टि करें और locate-device controls दिखाने से पहले supportsFindDevice जाँचें।
  3. स्वीकृति और परिणाम अलग रखें: सफल completion केवल command processing की पुष्टि करता है, लक्ष्य वास्तव में मिल जाने की नहीं।
  4. रोकने का विकल्प दें: उपयोगकर्ता को active device या iPhone indication बंद करने दें।
  5. UI को main queue पर अपडेट करें: Callbacks से होने वाले UIKit बदलाव main queue पर भेजें।

ध्यान देने योग्य बातें

  • Locate-device commands के दौरान लक्ष्य डिवाइस connected और reachable रहना चाहिए।
  • डिवाइस की ध्वनि, vibration या अन्य indication का व्यवहार firmware तय करता है।
  • Find-iPhone अनुरोध के लिए iPhone-side ध्वनि, vibration और UI की ज़िम्मेदारी ऐप की है।
  • supportsFindDevice == false का अर्थ feature unsupported होना या डिवाइस द्वारा capability report न किया जाना हो सकता है।
  • दोनों में से कोई protocol authoritative active-state या duration property नहीं देता।