![](https://developer.android.com/static/guide/app-actions/images/Fitness4-widget.png?authuser=5&hl=tr)
GET_EXERCISE_OBSERVATION
için bir widget başlatılıyor.
Birçok amaç için en iyi yanıt, kullanıcıya basit bir yanıt, kısa bir onay veya hızlı bir etkileşimli deneyim sunmaktır. Bu tür amaçları yerine getirmek için Google Asistan'da bir Android uygulama widget'ı görüntüleyebilirsiniz.
Bu kılavuzda, widget'ları kullanarak Asistan kullanıcı sorgularını nasıl yerine getirebileceğiniz ve Uygulama İşlemleri Widget Uzantısı kitaplığı ile Asistan için widget deneyiminizi nasıl iyileştireceğiniz ele alınmaktadır.
Avantajlar
Widget'lar, başlatıcı veya kilit ekranı gibi Android yüzeylerine yerleştirilebilen minyatür uygulama görünümleridir. Uygulama İşlemleri sayesinde widget'larınızı Asistan'da görüntülenmeye uygun hale getirerek etkilerini artırırsınız:
- Keşif: Kullanıcıların doğal dil sorgularına yanıt olarak widget'ları proaktif olarak görüntüleyin.
- Etkileşim: Widget'ları eller serbest bağlamlarda (örneğin, Asistan'ın kilit ekranında ve Android Auto'da kişisel sonuçlar sunduğu durumlarda) görüntüleyin.
- Saklama: Kullanıcıların Asistan'da görüntülenen widget'ları başlatıcılarına sabitlemesine izin verin. Sabitleme işlevi için Widget Uzantısı kitaplığı gerekir.
Asistan, widget'ları nasıl gösterir?
Kullanıcılar Asistan'da widget'ları iki şekilde çağırabilir:
- Açıkça adına göre widget isteme.
- Asistan'a, widget karşılama işlemi için yapılandırılmış yerleşik bir amacı (BII) veya özel amacı tetikleyen bir sorgu söylemek.
Uygunsuz çağrı
Kullanıcılar yüklü bir uygulamanın widget'larını açıkça çağırmak için Asistan'a şöyle şeyler sorabilir:
- "Ok Google, OrnekUygulama widget'ını göster."
- "ExampleApp'ten widget'lar."
Asistan, bu widget'ları genel tanıtımla görüntüler: "ÖrnekUygulama, bu widget'ı burada söylüyor." Asistan, bu şekilde istenen widget'ları uygulama geliştiricisinin herhangi bir işlem yapması gerekmeden yerel olarak döndürse de bu çağrı yöntemi, kullanıcının widget'ı isteyebilmesi için widget hakkında net bilgiye sahip olmasını gerektirir. Widget keşfini basitleştirmek için aşağıdaki bölümde ayrıntılı olarak açıklanan intent karşılama yöntemini kullanın.
Amaç karşılama
Kullanıcıların Asistan'da gerçekleştirdikleri doğal dil sorgularını karşılamak için widget'larınızı kullanarak widget'larınızı daha kolay bulabilirsiniz. Örneğin, bir kullanıcı fitness uygulamanızda GET_EXERCISE_OBSERVATION
BII'yi tetiklediğinde "Ok Google, bu hafta Örnek Uygulama'da kaç kilometre koştum?" sorusunu sorarak bir widget'ı döndürebilirsiniz. Widget'ları Uygulama İşlemleri ile entegre etmek, keşfi basitleştirmenin yanı sıra şu avantajları da sunar:
- Parametre erişimi: Asistan, kullanıcı sorgusundan çıkarılan amaç parametrelerini widget'ınıza sağlayarak özelleştirilmiş yanıtlar sağlar.
- Özel TTS tanıtımları: Asistan'ın widget'ınızı görüntülerken duyurması için bir metin okuma (TTS) dizesi sağlayabilirsiniz.
- Widget sabitleme: Asistan, widget'ınızın yakınında bir Bu widget'ı ekle düğmesi görüntüleyerek kullanıcıların widget'larınızı başlatıcılarına kolayca sabitlemelerini sağlar.
Widget karşılamayı uygulayın
Amaçlarınız için widget karşılamayı uygulamak üzere şu adımları izleyin:
- Basit widget oluşturma bölümünde açıklanan adımları izleyerek bir Android widget'ını uygulayın.
- Uygulamanızın
shortcuts.xml
kaynak dosyasında, özelliğinize sipariş karşılama ayrıntılarını ve BII<parameter>
etiketlerini içeren bir<app-widget>
öğesi ekleyin. Widget'ınızı parametreleri işleyecek şekilde güncelleyin. - Asistan'ın, BII adlarını ve parametrelerini widget'larınıza iletebilmesi için gereken Widget Uzantısı kitaplığını ekleyin. Ayrıca, özel TTS tanıtımları ve widget sabitleme işlevselliğini de etkinleştirir.
Aşağıdaki bölümde shortcuts.xml
için <app-widget>
şeması açıklanmaktadır.
Widget şeması
<app-widget>
öğeleri, shortcuts.xml
içindeki <capability>
öğelerinde bulunan karşılamalar olarak tanımlanır. İsteğe bağlı olarak belirtilmediği sürece bu özellikler için aşağıdaki özelliklerin kullanılması gerekir:
"shortcuts.xml" etiketi | Bulunduğu yer | Özellikler |
---|---|---|
<app-widget> |
<capability> |
|
<parameter> |
<app-widget> |
|
<extra> |
<app-widget> |
|
Widget şeması açıklaması
<uygulama-widget>
Üst düzey widget karşılama öğesi.
Özellikler:
android:identifier
: Bu istek karşılamanın tanımlayıcısı. Bu değer,<capability>
içinde tanımlanan<app-widget>
ve<intent>
istek karşılama öğelerinde benzersiz olmalıdır.android:targetClass
: Niyeti yerine getirmek içinAppWidgetProvider
öğesinin tam sınıf adı.
<parametre>
Bir BII parametresini amaç <parameter>
değerine eşler. Her <app-widget>
öğesi için sıfır veya daha fazla parametre tanımlayabilirsiniz. Sipariş karşılama sırasında Asistan, widget örneğinin ekstralarını aşağıdaki biçimde anahtar/değer çiftleri olarak güncelleyerek parametreleri iletir:
- Anahtar: Parametre için tanımlanan
android:key
. - Değer: BII'nin bir kullanıcının ses girişinden çıkardığı değer.
Bu ekstra özelliklere, ilişkili AppWidgetManager
nesnesinde getAppWidgetOptions()
çağrısı yaparak erişebilirsiniz. Bu çağrı, tetikleyici BII'nin adını ve parametrelerini içeren bir Bundle
döndürür. Ayrıntılar için Parametre değerlerini ayıklama bölümüne bakın.
BII parametresi eşleştirme hakkında daha fazla bilgi edinmek için Parametre verileri ve eşleştirme bölümünü inceleyin.
<extra>
Bu widget için özel bir TTS tanıtımının kullanıldığını belirten isteğe bağlı etiket. Bu etiket, aşağıdaki özellik değerlerini gerektirir:
android:name
:"hasTts"
android:value
:"true"
Örnek kod
Aşağıdaki shortcuts.xml
dosyası örneği, GET_EXERCISE_OBSERVATION
BII özelliği için bir widget karşılama yapılandırmasını gösterir:
<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>
öğelerinin bir kombinasyonunu kullanabilirsiniz. Bu yaklaşım, kullanıcıların sağladığı farklı parametre kombinasyonlarına göre özelleştirilmiş bir deneyim sunmanıza olanak tanır. Örneğin, kullanıcı sorgusunda bir bırakma konumu belirtmezse onu uygulamanızda, alma ve bırakma konumlarını ayarlamayla ilgili seçeneklerin gösterildiği etkinliğe yönlendirebilirsiniz. Yedek amaçları tanımlama hakkında daha fazla bilgi için Yedek amaçlar bölümüne bakın.
Parametre değerlerini ayıkla
Aşağıdaki örnek AppWidgetProvider
sınıfında, updateAppWidget()
gizli işlevi Bundle
widget seçeneklerinden BII adını ve parametrelerini ayıklamak için kullanılır:
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 Uzantısı kitaplığı
Uygulama İşlemleri Widget'ları Uzantısı kitaplığı, widget'larınızı sese dayalı Asistan deneyimleri için iyileştirir. Bu kitaplık, widget'larınızın tetikleyici BII'den önemli istek karşılama bilgilerini (BII adı ve kullanıcı sorgusundan çıkarılan intent parametreleri dahil) almasına olanak tanır.
Bu Maven kitaplığı her widget için özel bir metin okuma (TTS) girişi sağlayarak Asistan'ın kullanıcılara görsel olarak oluşturulan içeriğin özetini duyurmasını sağlar. Ayrıca başlatıcı sabitlemeyi sağlayarak kullanıcıların Asistan'da görüntülenen widget'ları başlatıcı ekranlarına kaydetmelerini kolaylaştırır.
Kitaplığı, uygulama modülünüz için build.gradle
dosyasının bağımlılıklar bölümüne ekleyerek başlayın:
dependencies {
//...
implementation "com.google.assistant.appactions:widgets:0.0.1"
}
Özel tanıtımlar
Widget Uzantısı kitaplığını içe aktardıktan sonra, widget'larınız için özel TTS tanıtımları sağlayabilirsiniz. Tanımınızı widget'ın AppWidgetProvider
öğesine eklemek için sınıfı IDE'nizde açın ve Widget Uzantısı kitaplığını içe aktarın:
Kotlin
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension
Java
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension;
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
TTS ve görüntülenen istemler için özel widget tanıtımlarınızı optimize etmek amacıyla aşağıdaki stil önerilerini kullanın.
Öneri | Önerilen | Önerilmez |
---|---|---|
SıkıştırmalarTTS istemlerinde kısaltmaları kullanın. Sıkıştırması olmayan mesajlar, doğal ve konuşkan değil, planlı ve robotik bir tarza dönüşür. "Yapılamaz" ve "yapmama" gibi kelimeler kulağa cezalandırıcı 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ülleri kullanarak anlaşılırlık sağlayın. Seri virgül kullanılmadığında listenizdeki her bir öğe yanlış duyulabilir veya grup olarak okunabilir. Örneğin, "nergisler, papatyalar ve ayçiçekleri"nde "papatyalar ve ayçiçekleri" bir araya geliyormuş gibi gelir. "Papatyalar, papatyalar ve ayçiçekleri"nde üçü de açık bir şekilde birbirinden ayrıdır. |
ResponseSpeech (TTS)En popüler çiçeklerimiz sarı güller, nergisler, papatyalar ve ayçiçekleridir. ResponseText En popüler çiçeklerimiz sarı güller, nergisler, papatyalar ve ayçiçekleridir. |
ResponseSpeech (TTS)En popüler çiçeklerimiz sarı güller, nergisler, papatyalar ve ayçiçekleridir. ResponseText En popüler olanlar sarı güller, nergisler, papatyalar ve ayçiçekleridir. |
SayılarGörsel içeriği daha okunaklı hale getirmek için metin yerine sayıları kullanın. |
ResponseSpeech (TTS)Tansiyonun 100 üstünde 80. ResponseText Tansiyonunuz 100/80. |
ResponseSpeech (TTS)Tansiyonunuz 100/80. ResponseText Tansiyonun yüz seksen üstünde. |
SembollerGörsel içeriği daha okunaklı hale getirmek için metin yerine özel semboller kullanın. |
ResponseSpeech (TTS)Son satın alma işleminiz 24,65 ABD dolarıydı. ResponseText Son alışverişiniz 24,65 ABD doları oldu. |
ResponseSpeech (TTS)Son satın alma işleminiz yirmi dört dolar altmış beş sentti. ResponseText Son alışverişiniz yirmi dört dolar altmış beş sentti. |
Hoş görünümlerden kaçınınNitelikler, yanıtları uzak ve resmi hissettirir. Onlardan uzak durun ve sohbetin samimi ve samimi olmasını sağlayın. |
ResponseSpeech (TTS)Siparişiniz teslim edildi. ResponseText Siparişiniz teslim edildi. |
ResponseSpeech (TTS)Elbette, söyleyebilirim. Siparişiniz teslim edildi. ResponseText Elbette, size söyleyebilirim. Siparişiniz teslim edildi. |
Ünlem işaretleri kullanmaktan kaçınınBu sesler bağırmak olarak algılanabilir. |
ResponseSpeech (TTS)Bugün 2,4 km koştunuz. ResponseText Bugün 2,4 km koştunuz. |
ResponseSpeech (TTS)Bugün 2,4 km koştunuz! ResponseText Bugün 2,4 km koştunuz! |
SüreSayıları kullanın: "beş on beş" veya "beş on beşten sonra" yerine "5:15". 12 saatlik zaman biçimi için ÖÖ veya ÖS'yi kullanın. |
ResponseSpeech (TTS)Teslimatınız en geç 8:15'te elinize ulaşacaktır. ResponseText Teslimatınız en geç 8:15'te elinize ulaşacaktır. |
ResponseSpeech (TTS)Teslimatınız bugün sabah 8'den en geç 15 dakika içinde ulaşır. ResponseText Teslimatınız bugün sabah 8'den en geç 15 dakika içinde size ulaşacaktır. |
Monologlara giriş yapmayın.Bilgilendirici olun ancak yanıtları kısa ve öz tutun. Kullanıcılara net bir fayda sağlamayacak şekilde ağır ayrıntılara girmeyin. |
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 enerji kullandınız. ResponseText Enerji tasarrufu, gezegen ve çevre için çok önemlidir. Geçen ay 159 saat enerji kullandınız. Bu ay 58 saat enerji kullandınız. |
Kısa, basit kelimeler kullanınSade ve basit bir dil en çok rağbet gören dildir ve bu yönüyle her sosyal kesimden insan için erişilebilirdir. |
ResponseSpeech (TTS)Son kan şekeri değeriniz 126 oldu. ResponseText Son kan şekeri değeriniz 126 mg/dL olarak ölçüldü. |
ResponseSpeech (TTS)Sondan bir önceki kan şekeri seviyesi 126'ydı. ResponseText Sondan önceki kan şekeri seviyesi 126'ydı. |
Başlatıcı sabitleme
Widget Uzantısı kitaplığı, Bu widget'ı ekle düğmesinin Asistan'da widget'ınızla görüntülenmesini sağlar. Sabitlemeyi etkinleştirmek için AndroidManifest.xml
öğesine aşağıdaki alıcı tanımını ekleyin:
<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 envanterleri widget isteklerinize genişletebilir.
Satır içi envanter
Örnek bir shortcuts.xml
dosyasındaki aşağıdaki kodda, satır içi envanter ve widget karşılama işlemi için yapılandırılmış bir START_EXERCISE
BII özelliği gösterilmektedir:
<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ı Asistan'a "ExampleApp ile çalışmaya başlayın" diyerek bu özelliği tetiklediğinde <app-widget>
istek karşılamanın seçenek paketi aşağıdaki anahtar/değer çiftini içerir:
- Anahtar =
“exerciseName”
- Değer =
“RunningShortcut”
Web envanteri
Örnek bir shortcuts.xml
dosyasındaki şu kod, web envanteri ve widget karşılama için etkinleştirilen bir özelliği gösterir:
<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
Widget'ları fiziksel veya sanal bir cihazda test etmek için Android Studio için Google Asistan eklentisinin bir özelliği olan Uygulama İşlemleri Test Aracı'nı kullanın. Test aracını kullanmak için aşağıdaki adımları uygulayın:
- Test cihazınızı çalışan uygulamanıza bağlayın.
- Android Studio'da Araçlar > Uygulama İşlemleri > Uygulama İşlemleri Test Aracı'na gidin.
- Önizleme oluştur'u tıklayın.
- Android Studio'yu kullanarak uygulamanızı test cihazınızda çalıştırın.
- Uygulama İşleminizi test etmek için test cihazınızdaki Asistan uygulamasını kullanın. Örneğin, "Ok Google, exampleApp'te bu hafta kaç kilometre koştum?" gibi bir şey diyebilirsiniz.
- İstenen işlem sonucunu doğrulamak için uygulamanızın davranışını gözlemleyin veya Android Studio hata ayıklayıcıyı kullanın.
Kalite yönergeleri
Bu bölümde, Uygulama İşlemleri'ni widget'larla entegre etmeyle ilgili temel gereksinimler ve en iyi uygulamalar vurgulanmaktadır.
Widget'lardaki içerikler
- (Zorunlu) Widget'larınızda reklam göstermeyin.
- Widget içeriklerinde tamamen amacınızı karşılamaya odaklanın. Tek bir widget ile birden çok amacı yerine getirmeye veya alakasız içerik eklemeye çalışmayın.
Kimlik doğrulamayı işleme
- (Zorunlu) Bir kullanıcı akışını tamamlamak için kullanıcı kimlik doğrulamasının gerekli olduğu durumlarda, kullanıcının uygulamada devam etmesi gerektiğini açıklayan bir widget döndürün. Google Asistan'da satır içi kullanıcı kimlik doğrulaması Uygulama İşlemleri için desteklenmez.
- Kullanıcılar uygulamanızın widget'lar kullanarak veri göstermesine izin verirse yetkisiz kullanıcılar için çalışma zamanında bir hata widget'ı döndürebilirsiniz.
Yedek amaçlar
(Zorunlu)
shortcuts.xml
ürününüzde, belirli bir özellik için widget karşılama durumunuza ek olarak her zaman bir yedek<intent>
sağlayın. Yedek amaç, zorunlu<parameter>
değeri olmayan bir<intent>
öğesidir.Bu sayede Asistan, kullanıcı sorgusu özellikte tanımlanan diğer istek karşılama öğelerinin gerektirdiği parametreleri içermediğinde Asistan'ın bir işlemi yerine getirebilir. Bunun istisnası, söz konusu özellik için gerekli parametrelerin olmamasıdır. Bu durumda yalnızca widget'ın karşılanması gerekir.
Uygulamanızı ana ekranda değil, ilgili ekranda açmak için yedek niyetini kullanın.
Örnek shortcuts.xml
dosyasındaki aşağıdaki kodda, birincil <app-widget>
karşılamayı destekleyen yedek <intent>
içeren bir <capability>
gösterilmektedir:
<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, Widgets Extension kitaplığının en son sürümü tarafından toplanan son kullanıcı verileri listelenmektedir.
Bu SDK, geliştirici tarafından sağlanan metin okuma (TTS) yanıtları gönderir. Bu yanıtlar, Asistan'ın konuşma teknolojisi kullanılarak Google Asistan tarafından kullanıcıya duyurulur. Bu bilgiler Google tarafından saklanmaz.
Uygulama işlemleri, aşağıdaki amaçlar için istemci uygulaması meta verilerini de toplayabilir:
- Farklı SDK sürümlerinin kullanım oranlarını izlemek için
- Uygulamalar arasında SDK özelliklerinin kullanımını ölçmek