Uygulama İşlemleri'ni Android widget'larıyla entegre etme

Şekil 1. Şunun için widget başlatılıyor: GET_EXERCISE_OBSERVATION

Çoğu amaç için en iyi yanıt, basit bir yanıt, kısa ve öz kullanıcıya onay veya hızlı etkileşimli bir deneyim sunmaktır. Bir Google Asistan'da bu tür amaçları yerine getirmek için Android uygulama widget'ı.

Bu rehberde, widget'ları kullanarak Asistan kullanıcı sorgularını nasıl karşılayacağınız ve Uygulama İşlemleri ile Asistan için widget deneyiminizi iyileştirin Widget'lar Uzantı kitaplığı.

Avantajlar

Widget'lar, Android'e yerleştirilebilecek minyatür uygulama görünümleridir bir yüzey. Uygulama İşlemleri ile widget'larınızı Asistan'da görüntülenmeye uygun hale getirerek etkilerini görebilirsiniz:

  1. Keşif: Widget'ları kullanıcıların özelliklerine göre proaktif olarak görüntüleyin doğal dil sorguları kullanır.
  2. Etkileşim: Widget'ları eller serbest bağlamlarda görüntüleyin. Örneğin: Asistan, kilit ekranında ve açık olduğunda kişisel sonuçlar sağlar Android Auto.
  3. Saklama: Kullanıcıların gösterilen widget'ları sabitlemesine izin verin Asistan'ı kendi başlatıcılarına getirir. Sabitleme işlevi için Widget'lar Uzantı kitaplığı.

Asistan, widget'ları nasıl görüntüler?

Kullanıcılar Asistan'da widget'ları iki şekilde çağırabilir:

  • Adını kullanarak açık bir şekilde widget isteme.
  • Asistan'a şunu tetikleyen bir sorgu söyleyerek: yerleşik amaç (BII) veya özel amaç widget'ları nasıl karşılarsınız?

Uygunsuz çağrı

Kullanıcılar, yüklü herhangi bir uygulamanın widget'larını açıkça çağırmak için Asistan'dan istekte bulunabilir bazı bilgiler verebilirsiniz:

  • "Ok Google, ExampleApp widget'ını göster."
  • "ÖrnekUygulamadaki widget'lar."

Asistan, bu widget'ları genel girişle gösterir: "ExampleApp diyor ki, widget gelsin." Asistan, istenen widget'ları yerel olarak döndürse de bu çağrı yöntemi ile uygulama geliştiricisinin herhangi bir işlem yapması gerekmez. Kullanıcının widget'la ilgili istekte bulunabilmesi için açık bilgiye sahip olması gerekir. Alıcı: daha basit hale getirmek için, bölüm.

Niyet karşılama

Widget'larınızı doğal görünüm yerine kullanarak bulmanızı kolaylaştırır Kullanıcıların Asistan'da gerçekleştirdiği dil sorguları. Örneğin, bir widget'ı kullanarak GET_EXERCISE_OBSERVATION BII'yi "Ok Google, bu hafta üç kilometrede kaç kilometre koştum" diye sorarak Örnek Uygulama?" Keşfi basitleştirmenin yanı sıra, widget'ları kullanarak Uygulama İşlemleri şu avantajları sağlar:

  • Parametre erişimi: Asistan, çıkarılan intent parametrelerini sağlar kullanıcı sorgusundan widget'ınıza uygulayabilirsiniz. özelleştirilmiş yanıtlar.
  • Özel TTS girişleri: Bir metin okuma (TTS) dizesi sağlayabilirsiniz Asistan'ın widget'ınızı görüntülerken bunu duyurması için.
  • Widget sabitleme: Asistan, widget'ın yanında bir Bu widget'ı ekle düğmesini görüntüler kullanıcıların widget'larınızı başlatıcılarına kolayca sabitlemelerini sağlar.
ziyaret edin.

Widget karşılamayı uygulayın

Amaçlarınıza yönelik widget karşılamayı uygulamak için aşağıdaki adımları izleyin:

  1. Şu sayfada açıklanan adımları uygulayarak Android widget'ını uygulayın: Basit bir widget oluşturun.
  2. Uygulamanızın shortcuts.xml kaynak dosyasına <app-widget> öğesini, sipariş karşılama ayrıntıları ve BII <parameter> etiketleri. Güncelleme widget'ını kullanabilirsiniz.
  3. Gerekli Widget Uzantısı kitaplığını ekleyin. Böylece Asistan, BII adlarını ve parametrelerini widget'larınıza iletir. Ayrıca, özel TTS tanıtımları ve widget sabitleme işlevi görür.

Aşağıdaki bölümde shortcuts.xml için <app-widget> şeması açıklanmaktadır.

Widget şeması

<app-widget> öğeleri, içinde karşılamalar olarak tanımlanır shortcuts.xml öğesinde <capability> öğe. Şunlar gerekir: özellikleri (isteğe bağlı olarak belirtilmediği sürece):

"shortcuts.xml" etiketiİçinde bulunduğu yer:Özellikler
<app-widget> <capability>
  • android:identifier
  • android:targetClass
<parameter> <app-widget>
<extra> <app-widget>
  • android:name (yalnızca TTS için geçerlidir)
  • android:value (isteğe bağlı)

Widget şeması açıklaması

<app-widget>

Üst düzey widget karşılama öğesi.

Özellikler:

  • android:identifier: bu sipariş karşılamanın tanımlayıcısı. Bu değer, <app-widget> ve <intent> karşılama sürecinde benzersiz olmalıdır öğeleri <capability> içinde tanımlanır.
  • android:targetClass: AppWidgetProvider için tam sınıf adı düşünmelisiniz.

<parametre>

BII parametresini, intent <parameter> değeriyle eşler. Sıfır veya Her <app-widget> öğesi için daha fazla parametre. Asistan, sipariş karşılama sırasında parametreleri, widget örneği için ekstraları anahtar/değer çiftleri olarak güncelleyerek geçirir, şu biçimle:

  • Anahtar: Parametre için tanımlanan android:key.
  • Değer: BII'nin kullanıcının ses girişinden çıkardığı değer.

Bu ek özelliklere, ilgiligetAppWidgetOptions() AppWidgetManager nesnesi; şu adı içeren bir Bundle döndürür: tetikleyici BII'yi ve parametrelerini içerir. Görüntüleyin Ayrıntılar için parametre değerlerini ayıklayın.

BII parametresi eşleştirme hakkında daha fazla bilgi için Parametre verileri ve eşleştirme.

<ekstra>

Şunun için özel bir TTS girişinin kullanıldığını belirten isteğe bağlı etiket widget'ı tıklayın. Bu etiket için aşağıdaki özellik değerleri gereklidir:

  • android:name: "hasTts"
  • android:value: "true"

Örnek kod

shortcuts.xml dosyasından alınan aşağıdaki örnekte bir widget gösterilmektedir için sipariş karşılama yapılandırması GET_EXERCISE_OBSERVATION BII özelliği:

<capability android:name="actions.intent.GET_EXERCISE_OBSERVATION">
  <app-widget
    android:identifier="GET_EXERCISE_OBSERVATION_1"
    android:targetClass="com.exampleapp.providers.exampleAppWidgetProvider"
    android:targetPackage="com.exampleapp">
    <parameter
      android:name="exerciseObservation.aboutExercise.name"
      android:key="exercisename">
    </parameter>
    <extra android:name="hasTts" android:value="true"/>
  </app-widget>
</capability>

Birden fazla <app-widget> öğesi belirtebilir veya Özellik başına <app-widget> ve <intent> öğe. Bu yaklaşım sayesinde Farklı parametre kombinasyonlarına göre özelleştirilmiş bir deneyim sağlar kullanıcılar tarafından sağlanır. Örneğin, kullanıcı bir ayrılma konumu belirtmezse kullanıcılarınızı uygulamanızda, doğrulamalarını ve alma ve bırakma konumlarını ayarlama seçenekleri. Bkz. Daha fazla bilgi için yedek amaçlar bölümü tanımlamayla ilgili daha fazla bilgi edinebilirsiniz.

Parametre değerlerini ayıklama

Aşağıdaki örnek AppWidgetProvider sınıfında özel işlev updateAppWidget(), widget seçenekleri Bundle:

Kotlin

package com.example.exampleapp

//... Other module imports
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension

/**
 * Implementation of App Widget functionality.
 */
class MyAppWidget : AppWidgetProvider() {
    override fun onUpdate(
        context: Context,
        appWidgetManager: AppWidgetManager,
        appWidgetIds: IntArray
    ) {
        // There might be multiple widgets active, so update all of them
        for (appWidgetId in appWidgetIds) {
            updateAppWidget(context, appWidgetManager, appWidgetId)
        }
    }

    private fun updateAppWidget(
        context: Context,
        appWidgetManager: AppWidgetManager,
        appWidgetId: Int
    ) {
        val widgetText: CharSequence = context.getString(R.string.appwidget_text)

        // Construct the RemoteViews object
        val views = RemoteViews(context.packageName, R.layout.my_app_widget)
        views.setTextViewText(R.id.appwidget_text, widgetText)

        // Extract the name and parameters of the BII from the widget options
        val optionsBundle = appWidgetManager.getAppWidgetOptions(appWidgetId)
        val bii = optionsBundle.getString(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_BII) // "actions.intent.CREATE_TAXI_RESERVATION"
        val params = optionsBundle.getBundle(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_PARAMS)
        if (params != null && params.containsKey("dropoff")) {
            val dropoffLocation = params.getString("dropoff")
            // Build your RemoteViews with the extracted BII parameter
            // ...
        }
        appWidgetManager.updateAppWidget(appWidgetId, views)
    }
}

Java

package com.example.exampleapp;

//... Other module imports
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension;

/**
 * Implementation of App Widget functionality.
 */
public class MyAppWidget extends AppWidgetProvider {

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        // There might be multiple widgets active, so update all of them
        for (int appWidgetId : appWidgetIds) {
            updateAppWidget(context, appWidgetManager, appWidgetId);
        }
    }

    private static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {

        CharSequence widgetText = context.getString(R.string.appwidget_text);

        // Construct the RemoteViews object
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_app_widget);
        views.setTextViewText(R.id.appwidget_text, widgetText);

        // Extract the name and parameters of the BII from the widget options
        Bundle optionsBundle = appWidgetManager.getAppWidgetOptions(appWidgetId);
        String bii =
                optionsBundle.getString(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_BII); // "actions.intent.CREATE_TAXI_RESERVATION"
        Bundle params =
                optionsBundle.getBundle(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_PARAMS);

        if (params != null && params.containsKey(("dropoff"))){
            String dropoffLocation = params.getString("dropoff");
            // Build your RemoteViews with the extracted BII parameter
            // ...
        }

        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
}

Widget'lar Uzantı kitaplığı

Uygulama İşlemleri Widget'ları Uzantısı kitaplığı, uygulamanızın sesli Asistan deneyimleri oluşturun. Bu kitaplık sayesinde widget'larınız tetikleyici BII'den alınan önemli sipariş karşılama bilgileri (BII dahil) name ve kullanıcı sorgusundan çıkarılan intent parametreleridir.

Bu Maven kitaplığı, özel metin okuma (TTS) girişi sunmanıza olanak tanır Böylece Asistan, her widget için gösterilen içeriğin özetini duyurabilir. kullanıcılara görsel olarak sunulur. Ayrıca başlatıcı sabitlemeyi etkinleştirir. Kullanıcıların Asistan'da görüntülenen widget'ları başlatıcılarına kaydetmeleri kolay ekranları.

İlk olarak kitaplığın bağımlılıklar bölümüne Uygulama modülünüz için build.gradle dosyası:

dependencies {
    //...
    implementation "com.google.assistant.appactions:widgets:0.0.1"
}

Özel tanıtımlar

Widget'lar Uzantı kitaplığını içe aktardıktan sonra özel TTS sağlayabilirsiniz widget'larınız için tanıtımları kullanıma sunduk. Tanımınızı widget'a eklemek için AppWidgetProvider, IDE'nizde sınıfı açın ve Widget'lar uzantısını içe aktarın kitaplık:

Kotlin

import com.google.assistant.appactions.widgets.AppActionsWidgetExtension

Java

import com.google.assistant.appactions.widgets.AppActionsWidgetExtension;
Daha sonra, giriş dizelerinizi tanımlamak ve widget'ını bu "ExampleAppWidget" bölümünde gösterildiği gibi:

Kotlin

package com.example.exampleapp

//... Other module imports
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension

/**
 * Implementation of App Widget functionality.
 */
object MyAppWidget : AppWidgetProvider() {
    fun updateAppWidget(
        context: Context?,
        appWidgetManager: AppWidgetManager,
        appWidgetId: Int
    ) {
        val appActionsWidgetExtension = AppActionsWidgetExtension.newBuilder(appWidgetManager)
            .setResponseSpeech("Hello world") // TTS to be played back to the user
            .setResponseText("Hello world!") // Response text to be displayed in Assistant
            .build()

        // Update widget with TTS
        appActionsWidgetExtension.updateWidget(appWidgetId)

        // Update widget UI
        appWidgetManager.updateAppWidget(appWidgetId, views)
    }
}

Java

package com.example.exampleapp;

//... Other module imports
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension;

/**
 * Implementation of App Widget functionality.
 */
public class MyAppWidget extends AppWidgetProvider {

  static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
    int appWidgetId) {

    AppActionsWidgetExtension appActionsWidgetExtension = AppActionsWidgetExtension.newBuilder(appWidgetManager)
      .setResponseSpeech("Hello world")  // TTS to be played back to the user
      .setResponseText("Hello world!")  // Response text to be displayed in Assistant
      .build();

      // Update widget with TTS
      appActionsWidgetExtension.updateWidget(appWidgetId);

      // Update widget UI
      appWidgetManager.updateAppWidget(appWidgetId, views);
    }

}

TTS stil önerileri

Özel widget'ınızı optimize etmek için aşağıdaki stil önerilerini kullanın TTS ve görüntülenen istemler.

Öneri Önerilen Önerilmez
Kısaltmalar
TTS istemlerinde kısaltma kullanın. Kısaltma sesi olmayan mesajlar yüz yüze ve robotik yapıdalar. Konuşulan kelimeler Mesela "yapılamaz" ve "yapmayın" kulağa cezalı ve sert gelebilir.
ResponseSpeech (TTS)
Maalesef rezervasyon bulamıyorum.

ResponseText
Maalesef rezervasyon bulamıyorum.
ResponseSpeech (TTS)
Maalesef rezervasyon bulamıyorum.

ResponseText
Maalesef rezervasyon bulamıyorum.
Virgül
Üç veya daha fazla öğeden oluşan listelerde seri virgül kullanarak anlaşılırlık sağlayın. Seri virgül olmazsa, listenizdeki her bir öğe şöyle olabilir: veya grup halinde okuyabilir. Örneğin, "fulyalar, papatyalar ayçiçekleri tasarlıyor." "papatyalar ve ayçiçekleri" kulağa bir araya geliyormuş gibi geliyor. "Nergisler, papatyalar ve ayçiçekleri"nde üçü de açık bir şekilde ayrıdır.
ResponseSpeech (TTS)
En popüler olanları sarı güller, nergisler, papatyalar ve ayçiçekleridir.

ResponseText
En popüler olanları sarı güller, nergisler, papatyalar ve ayçiçekleridir.
ResponseSpeech (TTS)
En popüler olanları sarı güller, nergisler, papatyalar ve ayçiçekleridir.

ResponseText
En popüler olanları sarı güller, nergisler, papatyalar ve ayçiçekleridir.
Sayılar
Görsel içeriğin daha kolay okunabilmesi için metin yerine sayıları kullanın.
ResponseSpeech (TTS)
Tansiyonun 80'den 100'ün üzerinde.

ResponseText
Tansiyonun 100/80.
ResponseSpeech (TTS)
Tansiyonun 100/80.

ResponseText
Tansiyonun seksen yüz üstünde.
Semboller
Görsel içeriği zenginleştirmek için metin yerine özel simgeler kullanın. bir bakışta görülebilir.
ResponseSpeech (TTS)
Son alışverişin 24,65 liraydı.

ResponseText
Son alışverişin 24,65 liraydı.
ResponseSpeech (TTS)
Son alışverişin yirmi dört dolar altmış beş sentti.

ResponseText
Son alışverişin yirmi dört dolar altmış beş sentti.
Şıklıklardan kaçının
Nicelikler, yanıtların uzak ve resmi hissetmesini sağlar. Bunları bırakın ve samimi ve gayri resmî olması gerekir.
ResponseSpeech (TTS)
Siparişiniz teslim edildi.

ResponseText
Siparişiniz teslim edildi.
ResponseSpeech (TTS)
Elbette, bunu söyleyebilirim. Siparişiniz teslim edildi.

ResponseText
Elbette, bunu söyleyebilirim. Siparişiniz teslim edildi.
Ünlem işaretleri kullanmaktan kaçının
Bağırıyor gibi algılanabilir.
ResponseSpeech (TTS)
Bugün 2,4 mil koştun.

ResponseText
Bugün 2,4 mil koştun.
ResponseSpeech (TTS)
Bugün 2,5 mil koştunuz!

ResponseText
Bugün 2,5 mil koştunuz!
Süre
Rakam kullanın: "5:15", "beş-on beş" yerine veya "beşten çeyrek sonra" gibi. 12 saatlik biçim için ÖÖ veya ÖS'yi kullanın.
ResponseSpeech (TTS)
Teslimatınız 08:15'e kadar elinize ulaşacaktır.

ResponseText
Teslimatın saat 08:15'te elinize ulaşacak.
ResponseSpeech (TTS)
Teslimatın bugün sabah 8'i geçtikten sonra 15 dakika içinde elinize ulaşacak.

ResponseText
Teslimatın bugün sabah 8'i geçtikten sonra 15 dakika içinde elinize ulaşacak.
Monologlardan uzak durmayın
Bilgilendirici olun ancak yanıtları kısa ve öz tutun. Ağır efor sarf etmeyin net bir kullanıcı faydası olmayan ayrıntılara yer verir.
ResponseSpeech (TTS)
Geçen ay 159 saat enerji kullandınız.

ResponseText
Geçen ay 159 saat enerji kullandınız.
ResponseSpeech (TTS)
Enerji tasarrufu gezegen ve çevre için çok önemlidir. Geçen ay 159 saat enerji kullandınız. Bu ay 58 saat kullandınız enerji.

ResponseText
Enerji tasarrufu gezegen ve çevre için çok önemlidir. Geçen ay 159 saat enerji kullandınız. Bu ay 58 saat kullandınız enerji.
Kısa ve basit kelimeler kullanın
En geniş çekiciliği olan sade ve basit bir dil sayesinde herkes tarafından erişilebilir. insanlarla tanışma fırsatı buldum.
ResponseSpeech (TTS)
Son kan şekeri ölçümünün 126 oldu.

ResponseText
Son kan şekeri ölçümünüz 126 mg/dL oldu.
ResponseSpeech (TTS)
Sondan bir önceki kan şekeri seviyesi 126'ydı.

ResponseText
Sondan bir önceki kan şekeri seviyesi 126'ydı.

Launcher sabitleme

Widget'lar Uzantı kitaplığı, Bu widget'ı ekle düğmesinin gösterilmesini sağlar Asistan'da widget'ınızla. Sabitlemeyi etkinleştirmek için aşağıdaki alıcıyı ekleyin AndroidManifest.xml tanımı:

<application>
  <receiver android:name="com.google.assistant.appactions.widgets.pinappwidget.PinAppWidgetBroadcastReceiver"
    android:exported="false">
    <intent-filter>
      <action android:name="com.google.assistant.appactions.widgets.COMPLETE_PIN_APP_WIDGET" />
    </intent-filter>
  </receiver>
  <service
    android:name=
    "com.google.assistant.appactions.widgets.pinappwidget.PinAppWidgetService"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
      <action
        android:name="com.google.assistant.appactions.widgets.PIN_APP_WIDGET" />
    </intent-filter>
  </service>
</application>

Envanter uygunluğu

Satır içi envanteri veya web envanterini destekleyen BBI'ler bu kapsamı genişletebilir. envanterinizin bir kısmını sunar.

Satır içi envanter

Örnek bir shortcuts.xml dosyasından alınan aşağıdaki kod, START_EXERCISE BII özelliği satır içi envanter ve widget karşılama için yapılandırıldı:

<capability
  android:name="actions.intent.START_EXERCISE">
  <app-widget
    android:identifier="START_EXERCISE_1"
    android:targetClass="com.example.exampleapp.StartExerciseAppWidgetProvider">
    <parameter
      android:name="exercise.name"
      android:key="exerciseName"
      app:shortcutMatchRequired="true">
    </parameter>
  </app-widget>
</capability>

<shortcut android:shortcutId="RunningShortcut">
  <intent
    android:action="android.intent.action.VIEW"
    android:targetClass="com.example.exampleapp.StartExcerciseActivity" />
  <capability-binding
    android:capability="actions.intent.START_EXERCISE"
    android:parameter="exercise.name"
    android:value="running;runs" />
</shortcut>

Önceki örnekte, bir kullanıcı şu şekilde bu özelliği tetiklediğinde: Asistan, "ÖrnekUygulama ile çalıştırmaya başla", <app-widget> isteği karşılama aşağıdaki anahtar/değer çiftini içeriyor:

  • Anahtar = “exerciseName”
  • Değer = “RunningShortcut”

Web envanteri

Örnek bir shortcuts.xml dosyasından alınan aşağıdaki kod, web envanteri ve widget karşılama için etkinleştirildi:

<shortcuts>
  <capability
    android:name="actions.intent.START_EXERCISE">
    <app-widget
      android:identifier="START_EXERCISE_1"
      android:targetClass="com.example.exampleapp.CreateTaxiAppWidgetProvider">
      <parameter
        android:name="exercise.name"
        android:key="exerciseName"
        android:mimeType="text/*">
        <data android:pathPattern="https://exampleapp.com/exercise/.*" />
      </parameter>
    </app-widget>
  </capability>
</shortcuts>

Uygulama İşlemlerini Test Etme

Google Asistan eklentisinin bir özelliği olan Uygulama İşlemleri Test Aracı'nı Android Studio'yu kullanarak widget'ları fiziksel veya sanal bir cihazda test edebilirsiniz. Kullanılacak aşağıdaki adımları uygulayın:

  1. Test cihazınızı, çalışan uygulamanıza bağlayın.
  2. Android Studio'da Araçlar > Uygulama İşlemleri > Uygulama İşlemleri Testi aracını kullanın.
  3. Önizleme oluştur'u tıklayın.
  4. Android Studio'yu kullanarak uygulamanızı test cihazınızda çalıştırın.
  5. Uygulama İşleminizi test etmek için test cihazınızdaki Asistan uygulamasını kullanın. Örneğin, şöyle bir şey diyebilirsin: "Ok Google, kaç kilometre koşmuşum Örnek Uygulama'da ne yapmalıyım?"
  6. Aşağıdaki işlemler için uygulamanızın davranışını gözlemleyin veya Android Studio hata ayıklayıcısını kullanın: istenen eylem sonucunu doğrulayabilirsiniz.

Kalite yönergeleri

Bu bölümde, projenizin her aşamasıyla ilgili olarak widget'larla entegre edebiliyorsunuz.

Widget'lardaki içerikler

  • (Zorunlu) Widget'larınızda reklam göstermeyin.
  • Widget içeriğinin amacının gerçekleştirilmesine odaklanmak. Şunları Yapmayın: tek bir widget ile birden fazla amacı yerine getirmeye çalışmak veya alakasız içerik eklemek.

Kimlik doğrulamayı işleme

  • (Zorunlu) Kullanıcı işlemleri akışını tamamlamak için kullanıcı kimlik doğrulaması gerektiğinde kullanıcının uygulamada devam etmesi gerektiğini açıklayan bir widget döndürecektir. Google Asistan'daki satır içi kullanıcı kimlik doğrulaması Uygulama için desteklenmiyor İşlemler'i tıklayın.
  • Kullanıcılar, uygulamanızın widget kullanarak veri göstermesine izin veriyorsa bir hata widget'ı görebilirsiniz.

Yedek amaçlar

  • (Zorunlu) shortcuts.xml hizmetinizde her zaman bir yedek sağlayın Ayrıca, uygulamanızın widget'ı yerine <intent> ne kadar önemli olduklarını gördük. Yedek intent, gerekli olmayan bir <intent> öğesidir <parameter> değerleri.

    Bu şekilde, Asistan aşağıdaki durumlarda bir işlemi gerçekleştirebilir: Kullanıcı sorgusu, diğer istek karşılamanın gerektirdiği parametreleri içermiyor özellikte tanımlanan öğelerdir. Bunun istisnası, Söz konusu özellik için gerekli parametrelerdir. Bu durumda, projenin tamamlanması gerekiyor.

  • Uygulamanızı ilgili ekrana açmak için yedek intent'i kullanın. değil.

Örnek bir shortcuts.xml dosyasından alınan aşağıdaki kod, Bir birincili destekleyen <intent> yedekli <capability> <app-widget> sipariş karşılama:

<shortcuts>
  <capability
    android:name="actions.intent.CREATE_TAXI_RESERVATION">
    <!-- Widget with required parameter, specified using the "android:required" attribute. -->
    <app-widget
      android:identifier="CREATE_TAXI_RESERVATION_1"
      android:targetClass="com.example.myapplication.CreateTaxiAppWidgetProvider">
      <parameter
        android:name="taxiReservation.dropoffLocation.name"
        android:key="dropoff"
        android:required="true">
      </parameter>
    </app-widget>
    <!-- Fallback intent with no parameters required to successfully execute. -->
    <intent
      android:identifier="CREATE_TAXI_RESERVATION_3"
      android:action="myapplication.intent.CREATE_TAXI_RESERVATION_1"
      android:targetClass="com.example.myapplication.TaxiReservationActivity">
    </intent>
  </capability>
</shortcuts>

Google Play veri açıklaması

Bu bölümde, Google Ads son sürümü tarafından toplanan son kullanıcı verileri Widget'lar Uzantı kitaplığı.

Bu SDK, geliştirici tarafından sağlanan ve Google Asistan tarafından, Asistan'ın konuşmasını kullanarak kullanıcıya duyurulur teknolojisidir. Bu bilgiler Google tarafından saklanmaz.

Uygulama işlemleri de istemci uygulaması meta verilerini aşağıdaki amaçlarla toplayabilir:

  • Farklı SDK sürümlerinin kullanım oranlarını izlemek için
  • Uygulamalardaki SDK özelliklerinin kullanımını ölçmek için.