바로가기 관리

바로가기를 만든 후에는 전체 기간 동안 관리해야 할 수도 있습니다. 있습니다. 예를 들어 사용자의 앱 사용 또는 사용자가 단축키를 사용하여 특정 작업을 완료하는 경우가 많습니다. 또 다른 경우에는 고정된 바로가기를 사용 중지하여 앱이 다른 작업을 하지 못하도록 오래되거나 누락된 작업 수행 다음에서 참조된 단축키의 경우: 사용자 행동을 개선하는 신호를 제공하기 위해 단축키 순위입니다.

이 페이지에서는 계정을 관리하는 데 필요한 다양한 방법 및 기타 일반적인 방법을 설명합니다. 단축키를 사용합니다.

바로가기 동작

다음 섹션에는 바로가기 동작에 관한 일반적인 정보가 포함되어 있습니다. 여기에는 공개 상태, 표시 순서, 순위가 포함됩니다.

바로가기 공개 상태

정적 바로가기 및 동적 바로가기가 지원되는 런처에 표시됨 특정 동작이나 음성 명령을 실행할 때 어시스턴트의 음성 어시스턴트로 작동하게 됩니다. 사용 설정됨 이 동작은 터치 및 앱의 런처 아이콘을 길게 누르면 다른 런처 앱에서는 동작이 다를 수 있습니다. Google 사용 어시스턴트, 단축어를 어시스턴트 내에 표시하거나 사용자가 실행할 수 있습니다. 음성 명령입니다.

LauncherApps 클래스는 런처 앱이 액세스할 수 있는 API를 제공합니다. 단축키를 사용합니다.

고정된 바로가기는 런처 자체에 나타나므로 항상 표시됩니다. 고정된 바로가기는 다음 경우에만 런처에서 삭제됩니다.

  • 사용자가 고정된 바로가기를 삭제하는 경우
  • 고정된 바로가기와 연결된 앱이 제거되는 경우
  • 사용자가 설정 > 앱 및 알림, 앱을 선택한 다음 저장용량 > 저장용량 비우기

공유 타겟 직접 공유 탭의 행에 표시되는 동적 바로가기의 하위 집합입니다. Android 공유 시트

Android Sharesheet 스크린샷
그림 1. Android Sharesheet 직접 공유 타겟은 첫 번째 행에 표시되고 순위가 지정된 앱, 앱 목록이 차례로 표시됩니다.

바로가기 표시 순서

런처가 앱의 바로가기를 표시할 때는 다음 위치에 표시되어야 합니다. 주문:

  1. 정적 바로가기: isDeclaredInManifest() 메서드가 있는 바로가기 는 true를 반환합니다.
  2. 동적 바로가기: ShortcutInfo.isDynamic()인 바로가기 메서드가 true를 반환합니다.

각 바로가기 유형(정적 및 동적) 내에서 바로가기는 다음 순서로 정렬됩니다. ShortcutInfo.getRank에 따라 순위 상승 Google 어시스턴트 표시할 컨텍스트 바로가기를 결정할 때 바로가기 순위도 고려합니다. 있습니다.

순위는 음이 아닌 순차적 정수입니다. 정적 바로가기의 순위는 shortcuts.xml 파일에 표시된 순서대로 정렬되어야 합니다. 동적 단축키를 사용하면 updateShortcuts(Context, List)님, addDynamicShortcuts(Context, List), pushDynamicShortcut(Context, ShortcutInfoCompat) 또는 setDynamicShortcuts(Context, List).

공유 타겟의 순서는 이전 사용자를 포함한 다양한 요소를 기준으로 합니다. 방문 기록, 최근 구매일, 빈도, 순위 힌트, 앱 사용, 사용자와 관련된 대화에 설정된 우선순위를 공유 바로가기를 클릭합니다. 다음을 사용하여 만든 대상 공유 공유 바로가기 API 공정성 검토에 의해 생성된 공유 목표보다 ChooserTargetService 이는 Android 11에서 지원 중단되었습니다. Android 12 이상의 공유 타겟 지원 중단된 ChooserTargetService에 의해 생성된 함수는 더 이상 공유 시트

대부분의 런처는 최대 4개의 바로가기를 표시합니다. 모든 조합 정적 바로가기와 동적 바로가기가 여러 개인 경우 런처는 정적 바로가기와 동적 바로가기는 최대 2개입니다. 예를 들어 4개의 정적 바로가기를 정의하고 프로그래매틱 방식으로 3개의 동적 생성 런처는 처음 두 개의 정적 바로가기를 표시하고, 가장 순위가 높은 동적 바로가기를 제공합니다.

여러 인텐트 및 활동 관리

사용자가 기기를 활성화할 때 앱이 여러 작업을 수행하도록 하려면 연속적인 활동을 트리거하도록 구성할 수 있습니다. 다음과 같은 작업을 할 수 있습니다. 이를 위해서는 여러 인텐트를 할당하고 다른 동작을 선택하거나 인텐트 플래그를 설정할 수 있습니다.

여러 인텐트 할당

ShortcutInfoCompat.Builder로 바로가기를 만들 때 다음을 사용할 수 있습니다. setIntent() 대신 setIntents()을(를) 사용합니다. setIntents()를 호출하면 사용자가 바로가기를 선택할 때 앱 내에서 여러 활동을 실행할 수 있음 마지막 활동을 제외한 모든 활동을 백 스택의 목록에 배치합니다. 만약 사용자가 기기의 뒤로 버튼을 탭하면 앱에서 다른 활동이 표시됩니다. 앱을 다시 실행합니다.

다른 활동에서 활동 시작

정적 바로가기에는 맞춤 인텐트 플래그가 있을 수 없습니다. static 바로가기에는 항상 Intent.FLAG_ACTIVITY_NEW_TASK가 있고 Intent.FLAG_ACTIVITY_CLEAR_TASK설정되었습니다. 즉, 앱이 앱의 기존 활동은 모두 단축키가 실행됩니다 이 동작을 원하지 않으면 트램펄린을 사용할 수 있습니다. 활동(다른 활동을 시작하는 보이지 않는 활동)은 Activity.finish()를 호출하는 Activity.onCreate(Bundle):

  1. AndroidManifest.xml 파일에 속성 할당을 포함합니다. android:taskAffinity="" 할 수 있습니다.
  2. 바로가기 리소스 파일에서 인텐트를 실행합니다.

트램펄린 활동에 관한 자세한 내용은 활동 시작하기를 참고하세요. 있습니다.

인텐트 플래그 설정

Intent 플래그 집합으로 동적 바로가기를 게시할 수 있습니다. 다른 변수와 함께 Intent.FLAG_ACTIVITY_CLEAR_TASK를 지정하는 것이 좋습니다. 있습니다. 앱이 실행 중일 때 다른 작업을 시작하려고 하면 타겟 활동이 표시되지 않을 수 있습니다.

작업 및 인텐트 플래그에 관한 자세한 내용은 작업 및 백 스택을 참고하세요.

바로가기 업데이트

각 앱의 런처 아이콘에는 최대 개수의 정적 및 동적 가 반환한 값과 같은 값을 합한 다음 getMaxShortcutCountPerActivity 배포의 수에는 앱이 만들 수 있는 고정된 바로가기를 제공합니다.

동적 바로가기가 고정되면(게시자가 바로가기에서 삭제한 경우에도 해당) 고정된 바로가기가 계속 표시되고 실행할 수 있습니다. 이를 통해 앱에 바로가기가 getMaxShortcutCountPerActivity()개보다 많습니다.

다음 예를 살펴보겠습니다. 이 예에서는 getMaxShortcutCountPerActivity()4입니다.

  1. 채팅 앱이 4개의 동적 바로가기를 게시함 최근 대화 c1, c2, c3 및 c4.
  2. 사용자는 바로가기를 4개 모두 고정합니다.
  3. 나중에 사용자는 c5, c6, c7라는 추가 대화를 3개 시작합니다. 이 게시자 앱이 동적 바로가기를 다시 게시합니다. 새로운 동적 바로가기 c4, c5, c6, c7입니다.

앱은 c1, c2, c3을 삭제해야 합니다. 4개를 초과하여 표시할 수 없기 때문입니다. 동적 바로가기를 사용할 수 있습니다. 그러나 c1, c2 및 c3는 여전히 액세스할 수 있습니다.

그러면 사용자는 생성할 수 있습니다. 합계에 바로 가기와 3개의 고정된 바로가기입니다.

  1. 앱은 updateShortcuts(Context, List)를 사용하여 기존 7개 단축키를 지원합니다. 예를 들어 이 단축키 집합을 업데이트할 수 있습니다. 채팅 동료가 변경할 수 있습니다.
  2. addDynamicShortcuts(Context, List) 및 기존 바로가기를 업데이트하는 setDynamicShortcuts(Context, List) 메서드 생성할 수 있습니다. 하지만 비동적 업데이트에는 이 두 가지 방법은 주어진 단어 목록을 변환하려고 하기 때문에 동적 바로가기로 연결되는 바로가기를 추가할 수 있습니다.

화면에 표시하기 위해 푸시할 수 있는 바로가기의 수에는 제한이 없습니다. Google 어시스턴트 등의 어시스턴트 앱도 사용할 수 있습니다. pushDynamicShortcut() 사용 만들고 업데이트할 ShortcutManagerCompat Jetpack 라이브러리의 메서드 바로 가기가 있습니다. 또한 Google 바로가기 통합 라이브러리를 앱에 추가하여 동적 링크를 Google에 표시할 수 있도록 합니다. 어시스턴트를 탭합니다.

바로가기 업데이트를 포함하여 앱 바로가기 가이드라인에 대해 자세히 알아보려면 바로가기 권장사항을 참고하세요.

시스템 언어 변경 처리

앱은 시스템 변경사항을 나타내는 Intent.ACTION_LOCALE_CHANGED 브로드캐스트 언어

바로가기 사용 추적

정적 및 동적 바로가기가 표시되는 상황을 확인하려면 런처가 바로가기의 활성화 기록을 검사합니다. 정적 바로가기의 경우 사용자가 앱에서 특정 액션을 언제 완료했는지 추적할 수 있습니다. reportShortcutUsed() 메서드를 호출하여 단축키를 삭제할 수 있습니다.

  • 사용자가 주어진 ID로 바로가기를 선택합니다.
  • 사용자는 앱 내에서 동일한 단축키를 사용할 수 있습니다

앱은 다음을 호출하여 동적 바로가기의 사용량을 추적합니다. pushDynamicShortcut() 메서드를 호출하고 이벤트를 발생시킵니다. 이 메서드로 동적 바로가기 사용을 푸시하면 Google 어시스턴트와 같은 어시스턴트 앱은 사용자에게 관련 바로가기를 추천합니다. pushDynamicShortcut() 메서드는 호출 시 사용을 보고하므로 호출하지 않습니다. 동일한 단축키의 reportShortcutUsed() 메서드

대화 관련 바로가기의 경우 발신 전화 사용을 추적하는 것이 중요합니다. 알림을 받을 수 있습니다. 자세한 내용은 모범 사례를 있습니다.

바로가기 사용 중지

앱과 사용자가 바로가기를 기기의 런처에 고정할 수 있기 때문에 고정된 바로가기로 사용자를 앱 내의 작업으로 안내할 수 있음 오래되었거나 더 이상 존재하지 않는 이 상황을 관리하려면 사용자가 선택하지 못하도록 disableShortcuts - 지정된 바로가기를 정적 및 동적 바로가기가 나열되고 바로가기의 고정된 사본이 사용 중지됩니다. 나 또한 CharSequence를 맞춤 오류 메시지로 표시합니다. 그러면 해당 오류 메시지가 사용자가 사용 중지된 바로가기를 실행하려고 할 때

비율 제한

setDynamicShortcuts(), addDynamicShortcuts()를 사용하는 경우 updateShortcuts() 메서드를 사용하는 경우 활동이 없는 앱, 즉 백그라운드 앱에서 특정 횟수의 서비스가 포그라운드에서 실행되지 않도록 할 수 있습니다 특정 횟수의 제한값은 이러한 메서드를 비율 제한이라고 합니다. 이 기능은 기기 리소스를 과도하게 사용하여 ShortcutManagerCompat

비율 제한이 활성화되면 isRateLimitingActive()가 true를 반환합니다. 그러나 비율 제한은 특정 이벤트 동안 재설정되므로 백그라운드 앱도 비율 제한에 다시 도달할 때까지 ShortcutManager 메서드를 호출할 수 있습니다. 이러한 이벤트에는 다음이 포함됩니다.

  • 앱이 포그라운드로 옵니다.
  • 시스템 언어가 변경됩니다.
  • 사용자가 알림에서 인라인 답장 작업을 실행합니다.

개발 또는 테스트 중에 비율 제한이 발생하면 개발자 옵션 > 기기에서 ShortcutManager 대역 제한 기능을 재설정합니다. settings를 입력하거나 adb에 다음 명령어를 입력할 수 있습니다.

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

백업 및 복원

다음과 같은 경우 사용자가 앱에서 백업 및 복원 작업을 실행하도록 허용할 수 있습니다. android:allowBackup="true" 속성 앱의 매니페스트 파일에 있습니다. 백업 및 복원을 지원하는 경우 앱 바로가기에 관해 알아두어야 할 사항은 다음과 같습니다.

  • 정적 바로가기는 사용자가 재게시해야만 자동으로 다시 게시됩니다. 새 기기에 앱을 재설치할 때
  • 동적 바로가기는 백업되지 않으므로 앱에 로직을 포함하여 다시 게시하세요. 사용자가 새 기기에서 앱을 열 때 알림을 보냅니다.
  • 고정된 바로가기는 기기의 런처에 자동으로 복원되지만 시스템은 고정된 바로가기와 관련된 아이콘을 백업하지 않습니다. 따라서 고정된 바로가기 복원하기가 용이해야 합니다. 새 기기를 사용하게 됩니다.

다음 코드 스니펫은 앱의 동적 콘텐츠를 복원하는 가장 좋은 방법을 바로가기 및 앱의 고정된 바로가기가 유지되었는지 확인하는 방법은 다음과 같습니다.

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.
            }
        }
    }
    // ...
}