Assistant के लिए काम का कॉन्टेंट ऑप्टिमाइज़ करना

Android 6.0 Marshmallow की मदद से, उपयोगकर्ताओं के लिए Assistant की मदद से ऐप्लिकेशन इस्तेमाल करने का नया तरीका उपलब्ध कराया गया है ऐप्लिकेशन, जैसे कि Google Assistant पर टैप करें. Assistant एक टॉप-लेवल विंडो है. इसे उपयोगकर्ता, कॉन्टेक्स्ट के हिसाब से देखने के लिए देख सकते हैं मौजूदा गतिविधि के लिए सही कार्रवाइयां. इन कार्रवाइयों में, इस पर मौजूद दूसरे ऐप्लिकेशन के डीप लिंक शामिल हो सकते हैं डिवाइस.

लोग, होम बटन को दबाकर रखते हुए या यह कहकर Assistant को चालू कर सकते हैं: कीफ़्रेज़ होना चाहिए. जवाब में, सिस्टम एक टॉप-लेवल विंडो खोलता है, जो कॉन्टेक्स्ट के हिसाब से काम की कार्रवाइयां.

Google Assistant जैसा कोई असिस्टेंट ऐप्लिकेशन, असिस्टेंट ओवरले विंडो को Now on Tap नाम की सुविधा, जो Android प्लैटफ़ॉर्म-लेवल की फ़ंक्शनलिटी के साथ काम करती है. सिस्टम इससे उपयोगकर्ता Assistant ऐप्लिकेशन चुन सकता है. यह Assistant, Android का Assist API.

यह गाइड बताती है कि Assistant को बेहतर बनाने के लिए Android ऐप्लिकेशन, Android के Assist API का इस्तेमाल कैसे करते हैं उपयोगकर्ता अनुभव मिलता है. मीडिया ऐप्लिकेशन बनाने का तरीका जानने के लिए, ताकि Assistant लॉन्च कर सके और कंट्रोल करना है, तो Google Assistant और मीडिया ऐप्लिकेशन देखें.

Assistant का इस्तेमाल किया जा रहा है

पहली इमेज में, Assistant के साथ आम तौर पर उपयोगकर्ता का इंटरैक्शन दिखाया गया है. जब उपयोगकर्ता देर तक दबाए रखता है होम बटन दबाने पर, Assist API कॉलबैक शुरू हो जाते हैं स्रोत ऐप्लिकेशन में (पहला चरण). Assistant, ओवरले विंडो को रेंडर करती है (दूसरे और तीसरे चरण) इसके बाद, उपयोगकर्ता कार्रवाई करने के लिए उसे चुनता है. Assistant चुनी गई कार्रवाई को पूरा करती है, जैसे कि (डेस्टिनेशन) रेस्टोरेंट ऐप्लिकेशन के डीप लिंक के साथ किसी इंटेंट को ट्रिगर करना (चौथा चरण).

पहली इमेज. टैप पर Now सुविधा के साथ Assistant के इंटरैक्शन का उदाहरण Google ऐप्लिकेशन

उपयोगकर्ता सेटिंग > ऐप्लिकेशन > डिफ़ॉल्ट ऐप्लिकेशन > सहायता करें और बोलकर फ़ोन को निर्देश देना. उपयोगकर्ता, सिस्टम के विकल्प बदल सकते हैं. जैसे, ऐक्सेस करना स्क्रीन की सामग्री को टेक्स्ट के रूप में दिखाया है और स्क्रीनशॉट को ऐक्सेस किया है, जैसा कि दूसरी इमेज में दिखाया गया है.

दूसरी इमेज. सहायता करें और बोलकर फ़ोन को निर्देश देने की सेटिंग

सोर्स ऐप्लिकेशन

यह पक्का करने के लिए कि आपका ऐप्लिकेशन उपयोगकर्ता के लिए जानकारी के स्रोत के तौर पर Assistant के साथ काम करता है, आपको सिर्फ़ सुलभता सुविधाओं के सबसे सही तरीके फ़ॉलो करना ज़रूरी है तरीके शामिल करें. इस सेक्शन में, ज़्यादा जानकारी देने का तरीका बताया गया है Assistant के उपयोगकर्ता अनुभव और स्थितियों को बेहतर बनाने में मदद करने के लिए जिन्हें खास हैंडलिंग की ज़रूरत होती है, जैसे कि कस्टम व्यू.

ज़्यादा जानकारी शेयर करें Assistant के साथ

टेक्स्ट और स्क्रीनशॉट के अलावा, आपका ऐप्लिकेशन दूसरे लोगों के साथ अन्य जानकारी जोड़ें. उदाहरण के लिए, आपका संगीत ऐप मौजूदा एल्बम की जानकारी को भेजने का विकल्प चुन सकता है, ताकि Assistant मौजूदा गतिविधि के हिसाब से बेहतर कार्रवाइयों के सुझाव दें. ध्यान दें कि Assist API उन्हें मीडिया कंट्रोल उपलब्ध नहीं कराने हैं. मीडिया कंट्रोल जोड़ने के लिए, यह देखें Google Assistant और मीडिया ऐप्लिकेशन.

Assistant को ज़्यादा जानकारी देने के लिए, आपका ऐप्लिकेशन वैश्विक ऐप्लिकेशन कॉन्टेक्स्ट ऐसा करने के लिए ऐप्लिकेशन लिसनर को रजिस्टर करें और गतिविधि कॉलबैक के साथ गतिविधि-खास जानकारी उपलब्ध कराता है, जैसा कि यहां दिखाया गया है इमेज 3:

तीसरी इमेज. असिस्ट एपीआई के लाइफ़साइकल सीक्वेंस का डायग्राम

दुनिया भर में ऐप्लिकेशन के इस्तेमाल के बारे में जानकारी देने के लिए, यह ऐप्लिकेशन Application.OnProvideAssistDataListener और उसे रजिस्टर करता है registerOnProvideAssistDataListener() का इस्तेमाल करके. गतिविधि के हिसाब से जानकारी देने के लिए, onProvideAssistData() को ओवरराइड करता है और onProvideAssistContent(). गतिविधि के दो तरीकों को वैकल्पिक ग्लोबल इवेंट के बाद कॉल किया जाता है कॉलबैक को शुरू किया जाता है. कॉलबैक मुख्य थ्रेड पर काम करते हैं, इसलिए उन्हें ऐसा करना चाहिए तुरंत पूरा करें. कॉलबैक सिर्फ़ तब शुरू किए जाते हैं, जब गतिविधि चल रही हो.

जानकारी देना

जब उपयोगकर्ता Assistant को चालू करता है, onProvideAssistData() को पूरा ACTION_ASSIST इंटेंट मौजूदा ऐप्लिकेशन को AssistStructure के इंस्टेंस के तौर पर दिखाया गया है. आप यह तरीका बदल सकते हैं बंडल में जो भी आप चाहें, वह असिस्ट इंटेंट का EXTRA_ASSIST_CONTEXT हिस्सा.

कॉन्टेंट का ब्यौरा देना

आपका ऐप्लिकेशन, onProvideAssistContent() को लागू कर सकता है कॉन्टेंट से जुड़ी जानकारी देकर Assistant के उपयोगकर्ता अनुभव को बेहतर बनाने के लिए मौजूदा गतिविधि से जुड़े होते हैं. ऐप्लिकेशन के कॉन्टेंट के बारे में बताने के लिए, Schema.org में तय किया गया सामान्य शब्दावली JSON-LD ऑब्जेक्ट के ज़रिए सबमिट किया जाता है. नीचे दिए गए उदाहरण में, एक संगीत ऐप्लिकेशन उस संगीत एल्बम के बारे में बताने के लिए स्ट्रक्चर्ड डेटा जो फ़िलहाल उपयोगकर्ता है देख रहे हैं:

Kotlin

override fun onProvideAssistContent(assistContent: AssistContent) {
    super.onProvideAssistContent(assistContent)

    val structuredJson: String = JSONObject()
            .put("@type", "MusicRecording")
            .put("@id", "https://example.com/music/recording")
            .put("name", "Album Title")
            .toString()

    assistContent.structuredData = structuredJson
}

Java

@Override
public void onProvideAssistContent(AssistContent assistContent) {
  super.onProvideAssistContent(assistContent);

  String structuredJson = new JSONObject()
       .put("@type", "MusicRecording")
       .put("@id", "https://example.com/music/recording")
       .put("name", "Album Title")
       .toString();

  assistContent.setStructuredData(structuredJson);
}

उपयोगकर्ताओं के अनुभव को बेहतर बनाने के लिए, onProvideAssistContent(), इससे ये फ़ायदे मिल सकते हैं:

ध्यान दें: पसंद के मुताबिक टेक्स्ट चुनने की सुविधा का इस्तेमाल करने वाले ऐप्लिकेशन को, इन चीज़ों की ज़रूरत पड़ सकती है onProvideAssistContent() लागू करने के लिए और setClipData() पर कॉल करें.

डिफ़ॉल्ट रूप से लागू करें

अगर onProvideAssistData() या onProvideAssistContent() नहीं है कॉलबैक लागू किया जाता है, तो सिस्टम अब भी आगे बढ़ता है और Assistant के लिए अपने-आप इकट्ठा होने वाली जानकारी, जब तक कि विंडो को सुरक्षित के तौर पर फ़्लैग किया गया है. जैसा कि इमेज 3 में दिखाया गया है, सिस्टम इन कामों के लिए onProvideStructure() और onProvideVirtualStructure() के डिफ़ॉल्ट तरीके का इस्तेमाल करता है टेक्स्ट इकट्ठा करने और क्रम के हिसाब से जानकारी देखने जैसे काम करता है. अगर आपका व्यू कस्टम पैरामीटर को लागू करता है टेक्स्ट ड्रॉइंग, उपलब्ध कराने के लिए onProvideStructure() को बदलें असिस्टेंट के तौर पर, setText(CharSequence) पर कॉल करके उपयोगकर्ता को टेक्स्ट दिखाया जाएगा.

ज़्यादातर मामलों में, सुलभता सहायता लागू करने से असिस्टेंट के तौर पर उपलब्ध कराया जाता है. सुलभता सहायता लागू करने के लिए, सबसे सही तरीकों के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन बनाने का तरीका इन्हें ऐक्सेस किया जा सकता है. इनमें ये चीज़ें शामिल हैं:

  • android:contentDescription एट्रिब्यूट सबमिट करें.
  • कस्टम व्यू के लिए, AccessibilityNodeInfo को भरें.
  • कंपनी या ब्रैंड पक्का करें कि कस्टम ViewGroup ऑब्जेक्ट सही तरीके से कॉन्फ़िगर किए गए हों एक्सपोज़ करना अपने बच्चों को सुरक्षित रखते हैं.

असिस्टेंट से मिले व्यू शामिल नहीं हैं

संवेदनशील जानकारी को मैनेज करने के लिए, आपका ऐप्लिकेशन, Assistant से मौजूदा व्यू को बाहर रख सकता है WindowManager के FLAG_SECURE लेआउट पैरामीटर को सेट करके. आपको इसके लिए FLAG_SECURE को स्पष्ट रूप से सेट करना होगा गतिविधि से बनाई गई हर विंडो, जिसमें डायलॉग भी शामिल हैं. आपका ऐप्लिकेशन, बाहर रखने के लिए setSecure() की मदद से बनाया गया है. कोई नहीं असिस्टेंट से सभी व्यू को बाहर रखने के लिए ग्लोबल (ऐप्लिकेशन-लेवल) सिस्टम का इस्तेमाल करता है. नोट जोड़ें जिसके लिए FLAG_SECURE, Assist API कॉलबैक को नहीं रोकता है जा रही है. FLAG_SECURE का इस्तेमाल करने वाली गतिविधि अब भी साफ़ तौर पर दिख सकती है ऊपर बताए गए कॉलबैक का इस्तेमाल करके, किसी Assistant ऐप्लिकेशन को जानकारी दें इस गाइड का इस्तेमाल करें.

ध्यान दें: एंटरप्राइज़ खातों (Android for Work) के लिए, तो एडमिन इसे बंद कर सकता है DevicePolicyManager एपीआई के setScreenCaptureDisabled() तरीके का इस्तेमाल करके, वर्क प्रोफ़ाइल के लिए Assistant का डेटा इकट्ठा करने की सुविधा.

बोलकर की जाने वाली बातचीत

Assist API कॉलबैक को भी शुरू किया जाता है कीफ़्रेज़ पहचान करना. ज़्यादा जानकारी के लिए, देखें बोलकर Actions दस्तावेज़.

ज़ेड-ऑर्डर पर ध्यान देना

एक सहायक, लाइटवेट ओवरले विंडो का इस्तेमाल करता है. यह विंडो, मौजूदा गतिविधि. क्योंकि उपयोगकर्ता किसी भी समय Assistant को चालू कर सकता है, स्थायी लिंक न बनाएं सिस्टम अलर्ट विंडो, जो ओवरले विंडो में रुकावट डालती हैं, जैसा कि चौथी इमेज.

चौथी इमेज. असिस्ट लेयर Z-ऑर्डर

यदि आपका ऐप्लिकेशन का उपयोग करता है सिस्टम अलर्ट विंडो का इस्तेमाल करके, उन्हें तुरंत हटा सकते हैं, क्योंकि उन्हें स्क्रीन पर उपयोगकर्ता अनुभव को खराब करता है.

डेस्टिनेशन ऐप्लिकेशन

Assistant ऐप्लिकेशन, डेस्टिनेशन ऐप्लिकेशन ढूंढने के लिए, आम तौर पर डीप लिंकिंग का इस्तेमाल करते हैं. अपने ऐप्लिकेशन एक संभावित डेस्टिनेशन ऐप्लिकेशन है, तो डीप लिंकिंग की सुविधा जोड़ने के बारे में सोचें. मैचिंग मौजूदा उपयोगकर्ता संदर्भ और डीप लिंक या ओवरले विंडो (पहली इमेज में तीसरे चरण में दिखाई गई है) सिर्फ़ Google Assistant को लागू करने के लिए है. इसके लिए उदाहरण के लिए, Google Assistant ऐप्लिकेशन इन कामों के लिए डीप लिंकिंग और ऐप्लिकेशन लिंक का इस्तेमाल करता है डेस्टिनेशन ऐप्लिकेशन पर ट्रैफ़िक लाने में मदद मिलती है.

अपनी Assistant को लागू करना

आप चाहें, तो अपनी Assistant की सुविधा को लागू किया जा सकता है. जैसा कि इमेज में दिखाया गया है 2 पर, उपयोगकर्ता अपने ऐक्टिव असिस्टेंट ऐप्लिकेशन को चुन सकता है. कॉन्टेंट बनाने Assistant ऐप्लिकेशन को VoiceInteractionSessionService और VoiceInteractionSession को लागू करने की जानकारी देनी होगी, जैसा कि में बताया गया है यह VoiceInteraction उदाहरण का इस्तेमाल करें. इसके लिए, BIND_VOICE_INTERACTION की अनुमति की भी ज़रूरत होती है. इसके बाद, Assistant ये काम कर सकती है: टेक्स्ट और व्यू हैरारकी (व्यू और व्यू) का वह क्रम पाएं जो onHandleAssist() में AssistStructure के इंस्टेंस के तौर पर दिखाया गया है. इसे onHandleScreenshot() से स्क्रीनशॉट मिलता है.