Kısayolları yönet

Kısayol oluşturduktan sonra, bu kısayolların kullanım süresi boyunca en iyi şekilde yararlanabilirsiniz. Örneğin, reklamlarınızın nasıl performans gösterdiğini belirleyip Kullanıcıların kısayollarınızı kullanarak belirli işlemleri tamamlaması sık karşılaşılan bir durumdur. Başka bir örnekte, uygulamanızın belirli bir zamanda işlem yapmasını önlemek için güncel olmayan veya eksik işlemler yapıyor. Şurada referans verilen kısayollar için: kullanıma sunuyorsanız, kullanıcılarınızın dönüşüm gerçekleştirmelerini sağlayan sinyaller kısayol sıralamasıdır.

Bu sayfada, hesabınızı yönetmenin bu ve diğer birkaç yolu açıklanmaktadır. kısayollar.

Kısayol davranışı

Aşağıdaki bölümler, kısayol davranışı hakkında genel bilgiler içerir: görünürlük, gösterilme sırası ve sıralama gibi.

Kısayol görünürlüğü

Statik kısayollar ve dinamik kısayollar, desteklenen bir başlatıcıda veya Asistan belirli bir hareket veya sesli komut gerçekleştirdiğinde Asistan'ı kullanabilir. Şu tarihte: desteklenen başlatıcılar, hareket bir dokunma ve uygulamanın başlatıcı simgesini basılı tutun ancak hareket, diğer başlatıcı uygulamalarında farklı olabilir. Google ile Asistan, kısayollar Asistan'da görüntülenebilir veya bir kullanıcı tarafından başlatılabilir sesli komut.

LauncherApps sınıfı, başlatıcı uygulamaların erişmesi için API'ler sağlar kısayollar.

Sabitlenen kısayollar başlatıcıda göründüğünden, her zaman görünür durumdadır. Sabitlenmiş bir kısayol yalnızca aşağıdaki durumlarda başlatıcıdan kaldırılır:

  • Kullanıcı bu dosyayı kaldırır.
  • Kısayolla ilişkili uygulama kaldırılır.
  • Kullanıcı Ayarlar > Uygulamalar ve bildirimler uygulamayı seçin, ardından Depolama > Depolama alanını temizleyin.

Hedefleri paylaşma Android paylaşım sayfası.

Android Sharesheet'in ekran görüntüsü
Şekil 1. Android Sharesheet İlk satırda doğrudan paylaşım hedefleri görünür, ardından sıralanmış uygulamalar ve Uygulamalar listeleri görünür.

Kısayol görüntüleme sırası

Başlatıcı bir uygulamanın kısayollarını görüntülediğinde, bunların şurada görünmesi gerekir: sipariş:

  1. Statik kısayollar: isDeclaredInManifest() yöntemi olan kısayollar true değerini döndürür.
  2. Dinamik kısayollar: ShortcutInfo.isDynamic() olan kısayollar yöntemi true değerini döndürür.

Her kısayol türünde (statik ve dinamik) kısayollar şuna göre sıralanır: sıralama ShortcutInfo.getRank'a göre artıyor. Google Asistan içerik kısayollarını belirlerken kısayol sırasında da yardımcı olur.

Sıralamalar negatif olmayan, sıralı tam sayılardır. Statik kısayollar şuradan sıralanır: shortcuts.xml dosyanızda göründükleri sırayla birinciden sonuncuya doğru yazın. Dinamik reklamlar için tuşlarına basarak, bir çağrı yaptığınızda mevcut kısayolların updateShortcuts(Context, List) addDynamicShortcuts(Context, List), pushDynamicShortcut(Context, ShortcutInfoCompat) veya setDynamicShortcuts(Context, List)

Paylaşım hedeflerinin sırası, geçmiş kullanıcılar da dahil olmak üzere çeşitli faktörlere bağlıdır geçmiş, yenilik, sıklık, sıralama ipucu, kullanımıyla ilişkili görüşmede ayarlanan önceliği, paylaşma kısayolu. Paylaşım Kısayolları API'si Google Analytics 4'te oluşturulan paylaşım hedeflerine ChooserTargetService Bu özellik Android 11'de kullanımdan kaldırıldı. Android 12 ve sonraki sürümlerde paylaşım hedefleri desteği sonlandırılan ChooserTargetService tarafından oluşturulan artık paylaşım sayfasını ziyaret edin.

Çoğu başlatıcıda en fazla dört kısayol gösterilir. Aşağıdakilerin herhangi bir kombinasyonu için önceden tanımlanmış statik kısayollar ve dinamik kısayollar varsa başlatıcıda en fazla iki statik kısayol ve iki dinamik kısayol. Örneğin, dört statik kısayol tanımlayın ve programlı olarak üç dinamik kısayol oluşturun Başlatıcı, ilk iki statik kısayolu ve en üst düzey dinamik kısayollardır.

Birden fazla niyeti ve etkinliği yönetin

Kullanıcınız bir öğeyi etkinleştirdiğinde uygulamanızın birden fazla işlem gerçekleştirmesini bu kısayolu, ardışık etkinlikleri tetikleyecek şekilde yapılandırabilirsiniz. Şunları yapabilirsiniz: birden fazla amaç atayarak, bir aktiviteyi başlatmadan önce veya kısayolun türüne bağlı olarak intent işaretleri ayarlamak.

Birden çok amaç ata

ShortcutInfoCompat.Builder ile kısayol oluştururken şunları kullanabilirsiniz: setIntent() yerine setIntents(). setIntents() numaralı telefonu arayarak kullanıcı bir kısayol seçtiğinde uygulamanızda birden fazla etkinlik başlatabilir, listedeki son etkinlik dışındaki her şeyi arka grupa yerleştirerek. Öğe Kullanıcı, cihazın geri düğmesine dokunduğunda uygulamanızda başka bir etkinlik görüyorsa geri dönmek yerine.

Başka bir etkinlik başlatma

Statik kısayolların özel amaç işaretleri olamaz. Bir statik kısayol her zaman Intent.FLAG_ACTIVITY_NEW_TASK ve Intent.FLAG_ACTIVITY_CLEAR_TASK set. Bu nedenle, uygulamanız çalışırken, uygulamadaki mevcut tüm etkinlikler kaldırılır. kısayol başlatılır. Bu davranışı istemiyorsanız trampolin kullanabilirsiniz. etkinlik - başka bir etkinlik başlatan görünmez bir etkinlik Activity.onCreate(Bundle) şu içinActivity.finish():

  1. AndroidManifest.xml dosyasına özellik atamasını ekleyin android:taskAffinity= inç ilkesine göre hareket eder.
  2. Kısayollar kaynak dosyasında, inceleyebilirsiniz.

Trambolin etkinlikleri hakkında daha fazla bilgi için Bir aktivite başlatma başlıklı makaleye bakın. başka bir kanaldan seçim yapın.

Amaç işaretleri ayarla

Dinamik kısayolları herhangi bir Intent işareti grubuyla yayınlayabilirsiniz. Tercihen, diğerIntent.FLAG_ACTIVITY_CLEAR_TASK işaretidir. Aksi halde, uygulamanız açıkken başka bir görev başlatmaya çalışırsanız hedef etkinlik görünmeyebilir.

Görevler ve amaç işaretleri hakkında daha fazla bilgi edinmek için Görevler ve geri yığını başlıklı makaleye göz atın.

Kısayolları güncelleme

Her uygulamanın başlatıcı simgesi en fazla bir dizi statik ve dinamik içerebilir ve tüm kısayolların toplamına eşittir. getMaxShortcutCountPerActivity. Herhangi bir uygulamanın oluşturabileceği sabitlenmiş kısayollar.

Bir dinamik kısayol sabitlendiğinde, yayıncı tarafından kaldırılsa bile bir dinamik kısayolu ile, sabitlenen kısayol görünür ve başlatılabilir halde kalır. Bu şekilde bir uygulamanın getMaxShortcutCountPerActivity() taneden fazla kısayolu var.

Aşağıdaki örneğe bakın. Bu örnekte, getMaxShortcutCountPerActivity() 4:

  1. Bir sohbet uygulaması, kullanıcı deneyimi için en önemli dört kısayolu temsil eden dört dinamik kısayol yayınlıyor. son ileti dizileri: c1, c2, c3 ve c4.
  2. Kullanıcı bu kısayolların dördünü de sabitler.
  3. Daha sonra kullanıcı üç sohbet daha başlatır: c5, c6 ve c7. İlgili içeriği oluşturmak için kullanılan yayıncı uygulaması dinamik kısayollarını yeniden yayınlar. Yeni dinamik kısayol c4, c5, c6 ve c7 şeklindedir.

Uygulama, dörtten fazla gösteremediğinden c1, c2 ve c3'ü kaldırmalıdır dinamik kısayollar. Ancak c1, c2 ve c3 yine de erişebilir ve başlatabilir.

Böylece kullanıcı, dizindeki etkinliklere bağlantı veren toplam yedi kısayola erişebilir. yayıncı uygulaması. Bunun nedeni, toplamın maksimum sayıda kısayol ve sabitlenmiş üç kısayol.

  1. Uygulama, updateShortcuts(Context, List) kullanarak mevcut yedi kısayol. Örneğin, bu kısayol grubunu güncelleyebilirsiniz. sohbet edenler veya simge değişir.
  2. addDynamicShortcuts(Context, List) ve Mevcut kısayolları güncellemek için setDynamicShortcuts(Context, List) yöntem aynı kimliklere sahip olmalıdır. Ancak, bunları dinamik olmayan, çünkü bu iki yöntem belirli bir dizi görevi her zaman kısayolları da gösterilir.

Şu cihazlarda görüntülenmek üzere aktarılabilecek kısayol sayısı için bir sınırlama yoktur: Google Asistan gibi asistan uygulamaları. pushDynamicShortcut()'ı kullanma ShortcutManagerCompat Jetpack kitaplığının oluşturma ve güncelleme yöntemi Asistan uygulamalarında kullanılacak kısayollar var. Ayrıca, Google Kısayolları Entegrasyonunu da ekleyin kitaplığını uygulamanıza ekleyebilirsiniz Asistan

Kısayolları güncelleme de dahil olmak üzere uygulama kısayollarıyla ilgili yönergeler hakkında daha fazla bilgi edinmek için Kısayollarla ilgili en iyi uygulamalar başlıklı makaleyi inceleyin.

Sistem yerel ayarı değişikliklerini işleme

Uygulamalar, bildirim aldıklarında dinamik ve sabitlenmiş kısayolları güncellemelidir: Sistemde yapılan bir değişikliği gösteren Intent.ACTION_LOCALE_CHANGED yayını yerel ayar.

Kısayol kullanımını izleme

Statik ve dinamik kısayolların gösterileceği durumları belirlemek için başlatıcı, kısayolların etkinleştirme geçmişini inceler. Statik kısayollar için kullanıcıların uygulamanızda belirli işlemleri ne zaman tamamladığını takip etmek için reportShortcutUsed() yöntemini çağırmak ve buna bir kısayolu ile oluşturabilirsiniz:

  • Kullanıcı, verilen kimliğe sahip kısayolu seçer.
  • Uygulama içinde kullanıcı, aynı kısayol kullanılır.

Uygulamanız, pushDynamicShortcut() yöntemini kullanmak ve ilgili olay olduğunda Dinamik kısayol kullanımını bu yöntemle aktarmak Google Asistan gibi asistan uygulamaları, kullanıcılara alakalı kısayollar önerir. pushDynamicShortcut() yöntemi çağrıldığında kullanımı raporladığı için çağrı yapmayın aynı kısayollar için reportShortcutUsed() yöntemini kullanın.

İleti dizisiyle ilgili kısayollar için, giden iletilerin kullanımını izlemek önemlidir ve gelen iletiler için de geçerlidir. Ayrıntılı bilgi için kullanıcılar ve destek kaynakları için en iyi uygulamaları yardımcı olur.

Kısayolları devre dışı bırak

Uygulamanız ve kullanıcıları, kısayolları cihaz başlatıcısına sabitleyebildiğinden Sabitlenen bu kısayolların kullanıcıları uygulamanızdaki işlemlere yönlendirmesini bilgileri güncel tutmasına yardımcı olur. Bu durumu yönetmek için: kullanıcıların disableShortcuts: Belirtilen kısayolları statik klasörden kaldırır. ve dinamik kısayollar listesine eklenir ve bu kısayolların sabitlenmiş kopyalarını devre dışı bırakır. Siz yöntemini kabul eden aşırı yüklenmiş bir sürümünü de kullanabilir. Özel hata mesajı olarak CharSequence. Bu hata mesajı, kullanıcılar devre dışı bırakılmış herhangi bir kısayolu başlatmayı denediğinde.

Hız sınırlaması

setDynamicShortcuts(), addDynamicShortcuts() veya updateShortcuts() yöntemleri varsa bu yöntemleri yalnızca arka plan uygulamasında belirli bir sayıda etkinlik olmadığı veya hiç etkinlik içermeyen sahip olması gerekir. Yapabileceğiniz işlem sayısı, bu yöntemlere hız sınırlaması denir. Bu özellik, ShortcutManagerCompat, cihaz kaynaklarının aşırı kullanılmasından kaynaklanıyor.

Hız sınırlaması etkin olduğunda isRateLimitingActive(), doğru değerini döndürür. Ancak hız sınırlaması belirli etkinlikler sırasında sıfırlanır. Dolayısıyla, arka plan uygulamaları bile oran sınırına tekrar ulaşılıncaya kadar ShortcutManager yöntemlerini çağırabilir. Bu etkinlikler aşağıdakileri içerir:

  • Bir uygulama ön plana çıkar.
  • Sistem yerel ayarı değişir.
  • Kullanıcı, bir bildirimde satır içi yanıt işlemini gerçekleştirir.

Geliştirme veya test sırasında hız sınırlamasıyla karşılaşırsanız Geliştirici Seçenekleri > Kısayolların cihazından hız sınırlamasını<br> sıfırlayın Ayarları'nı tıklayın veya adb sayfasına şu komutu girin:

$ adb shell cmd shortcut reset-throttling [ --user your-user-id ]

Yedekleme ve geri yükleme

Aşağıdaki durumlarda kullanıcıların uygulamanızda yedekleme ve geri yükleme işlemleri yapmasına izin verebilirsiniz: android:allowBackup="true dahil ederek cihazları değiştiriyoruz" ilişkilendirmek atamasıyla ilgili verileri inceleyin. Yedekleme ve geri yükleme özelliğini destekliyorsanız uygulama kısayolları hakkında şu noktalara dikkat edin:

  • Statik kısayollar, yalnızca kullanıcıdan sonra otomatik olarak yeniden yayınlanır. Uygulamanızı yeni bir cihaza yeniden yükler.
  • Dinamik kısayollar yedeklenmediğinden yeniden yayınlamak için uygulamanıza mantık ekleyin Kullanıcı uygulamanızı yeni bir cihazda açtığında
  • Sabitlenen kısayollar cihaz başlatıcısına otomatik olarak geri yüklenir ancak sistem, sabitlenmiş kısayollarla ilişkili simgeleri yedeklemez. Bu nedenle, sabitlenmiş kısayollarınız kolayca geri yükleyebilirsiniz. emin olun.

Aşağıdaki kod snippet'i, uygulamanızın dinamik verilerini en iyi nasıl geri yükleyeceğinizi kısayolları ve uygulamanıza ait sabitlenmiş kısayollarının korunup korunmadığını kontrol etme:

Kotlin

class MyMainActivity : Activity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        if (ShortcutManagerCompat.dynamicShortcuts.size == 0) {
            // Application restored. Re-publish dynamic shortcuts.
            if (ShortcutManagerCompat.pinnedShortcuts.size > 0) {
                // Pinned shortcuts are restored. Use updateShortcuts() to make
                // sure they contain up-to-date information.
            }

        }
    }
    // ...
}

Java

public class MainActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (ShortcutManagerCompat.getDynamicShortcuts().size() == 0) {
            // Application restored. Re-publish dynamic shortcuts.
            if (ShortcutManagerCompat.getPinnedShortcuts().size() > 0) {
                // Pinned shortcuts are restored. Use pdateShortcuts() to make
                // sure they contain up-to-date information.
            }
        }
    }
    // ...
}