본문 바로가기
Android/Android Development

Android App Shortcuts (안드로이드 앱 숏컷) - 2. 만들기

by 2Plus 2020. 8. 31.

Image by Google

 

 이번 포스팅에서는 앱을 만들 때 Shortcut을 어떻게 구현하는 지에 대해 알아본다. 지난 포스팅에서 언급한 것처럼 Shortcut의 종류는 Static, Dynamaic, Pinned Shortcut 세 가지가 있다. Shortcut으로 콘텐츠를 제공하는 방법은 context가 앱 기반인지 사용자 기빈인지와 use case에 따라 다르다.
 Context가 변경되지 않는 경우에는 Static Shortcut, Context가 변경되는 경우에는 Dynamic Shortcut을 사용하면 된다. 하지만 이 두 가지 경우 모두 Context는 앱에 의해 동작한다. Pinned Shortcut은 사용자가 Context를 정의하게 된다. 어떻게 구현하는 지에 대해 알아보기 전에 먼저 각각의 경우를 조금 더 알아봐서 이해를 하고 넘어가보자.

 

반응형

 


Static Shortcuts

 일반적인 활동을 Shortcut으로 연결할 때 가장 적합한 형태이다. 일정 만들기, 이메일 보내기와 같이 일상적인 정형화된 업무를 수행할 수 있도록 제공할 수 있다.

 

 

Dynamic Shortcuts

 상황에 맞는 작업이 필요할 때 사용하기에 적합하다. 예를 들어서 게임 앱을 만든다고 가정할 때, Shortcut을 통해 최근에 저장한 게임을 바로 로드하는 기능을 제공한다면 사용자가 게임을 플레이하고 저장할 때 Shortcut을 동적으로 업데이트 해줌으로써 그때그때 알맞게 동작하도록 할 수 있다.

 

 

Pinned Shortcuts

 사용자가 아예 런처에 Shortcut을 두는 것으로 앱을 실행해서 원하는 동작으로 들어가거나 앱을 꾹 눌러서 Shortcut 리스트에서 선택하는 것보다 뎁스가 적다. 런처에 나와 있는 Shortcut을 바로 실행하면 되기 때문이다. 특정 웹 사이트로 이동하는 Shortcut 같은 경우에 Pinned Shortcut을 사용하기에 적합하다.

 


Static Shortcuts 만드는 방법

 Static Shortcuts을 만들기 위해서는 안드로이드 프로젝트에서 먼저 매니페스트 파일에 있는 Activity에 사용할 Shortcut을 명시해줘야 한다.

 

  1. 매니페스트 파일(AndroidManifest.xml)에서 Intent filter "android.intent.action.MAIN" 액션과 "android.intent.category.LAUNCHER" 카테고리로 선언되어 있는 Activity 찾는다. 다른 Activity 하면 빌드는 되는데 Shortcut 제대로 나와요..!!
  2. meta data element를 activity에 다음과 같이 추가한다. 이름과 resource는 알맞게 작성하면 된다. resource는 app의 shortcuts들을 define해놓은 xml 파일로 지정해주면 된다.
  3. res/xml/shortcuts.xml 파일을 만들어준다.
  4. shortcuts.xml 파일에 <shortcut> 목록을 포함하는 <shortcuts> root element를 작성한다. 각 <shortcut>에는 아이콘, 레이블, 인텐트 등을 지정해주면 된다. 다음 예시 코드를 참고하자.

     실행할 Intent에 MainActivity가 아닌, shortcut들을 관리하는 Activity를 지정해줬다. 앱을 실행하면 MainActivity가 실행되지만 이렇게 하면 바로 Shortcut 관리 화면으로 이동할 수 있다.

 먼저 그냥 앱을 실행했을 때의 모습이다. 메인 액티비티가 실행되는 것을 확인할 수 있다.

 

 

이제 앱을 꾹 눌러서 Shortcut을 확인해보면 위에서 추가한 이름과 아이콘으로 Shortcut이 하나 생긴 것을 확인할 수 있다.

 

 

 이 Shortcut을 실행하면 ManageShortcutActivity로 바로 실행되는 것을 확인할 수 있다.

 

반응형

 


Static Shortcuts - Attribute Value 커스터마이징

 기본적으로 Static Shortcuts를 만드는 방법은 위와 같다. 이제 위에서 선언했던 xml의 값들이 어떤 것이고 어떻게 수정할 수 있는 지 정리해보자.

 

android:shortcutId

 dsfgfsdfdsgShortcutManager 객체가 작업시 shortcut을 구분할 수 있는 Id

 

android:shortcutShortLabel

 10자 이내로 설정할 수 있는 Label 문구. 반드시 resource string을 사용해야 한다.

 

android:shortcutLongLabel

 shortcutShortLabel보다 긴 Label로 25자까지 설정할 수 있다. 공간이 충분한 경우 런처가 ShortLabel 대신 이 값을 표시한다.

 

android:shortcutDisabledMessage

 사용자가 비활성화 된 Shortcut을 실행하려 할 때 런처에서 표시되는 메시지. android:enabled가 false인 경우에만 표시된다.

 

android:enabled

 기본값은 true이며, false로 설정한 경우 위의 shortcutDisabledMessage도 꼭 설정해줘야 한다. 그렇지 않으면 해당 shortcut을 제거하는 것이 낫다.

 

android:icon

 Shortcut을 표시할 때 사용할 아이콘을 설정할 수 있다. 이미지 경로나 이미지가 포함된 리소스 파일 설정 가능.

 


내부 요소 configure하기

 shortcuts.xml 파일은 각 <shortcut> element 내에서 다음 element들을 지원한다. static shortcut에는 intent를 반드시 포함시켜줘야 한다.

 

intent

 사용자가 Shortcut 선택시 시스템이 실행할 작업이다. android:action attribute 값을 제공해야 한다. 하나의 Shortcut에 여러 intent를 제공하는 것도 가능하다.

 

categories

 앱의 Shortcut이 수행하는 작업 타입에 대해 그룹화를 할 수 있다. 지원되는 shortcut 카테고리 목록은 ShortcutInfo 클래스를 참고하면 확인할 수 있다.

 


Dynamic Shortcuts 만드는 방법

 ShortcutManager API를 사용해서 Dynamic Shortcut을 Publish, Update, Remove할 수 있다.

  • Publish : setDynamicShortcuts()를 이용하여 dynamic shortcut 목록을 재정의하거나, addDynamicShortcuts()를 이용하여 dynamic shortcut을 추가할 수 있다.
  • Update : updateShortcuts()
  • Remove : removeDynamicShortcuts()로 shortcut set을 제거할 수 있고, removeAllDynamicShortcuts()를 이용하여 모든 dynamic shortcut들을 제거할 수도 있다.

 ShortcutManager 인스턴스는 Context.getSystenService(Context.SHORTCUT_SERVICE)를 통해 얻을 수 있다.

 

 ShortcutManager 문서(https://developer.android.com/reference/android/content/pm/ShortcutManager)를 참고하면 더 자세한 것들을 확인할 수 있다.

 

 ShortcutManager를 이용하여 다음과 같이 website를 여는 dynamic shortcut을 추가할 수 있다.

 

 

 ManagerShortcutsActivity에 DynamicShortcut으로 네이버를 추가하는 코드를 추가하였다. ShortcutInfo.Builder를 통해 앞서 Static Shortcut을 만들 때 있던 Label, Icon, Intent를 설정해주고 build()를 통해 얻은 shortcut을 shortcutManager의 dynamicShortcuts에 재할당해줬다.

 

 처음에는 없던 Dynamic Shortcut이 Dynamic Shortcut을 만드는 코드가 실행된 이후에 생기고 정상적으로 동작하는 것을 확인할 수 있다.

 

반응형

 


Pinned Shortcuts 만드는 방법

  Pinned Shortcut은 유저가 Static Shortcut이나 Dynamic Shortcut을 직접 Pinned Shortcut으로 빼내는 방법이 있고, 아니면 앱에서 Pinned Shortcut을 바로 만들 수도 있다. 다만 앱에서 만들 때는 사용자에게 권한을 요청하는 다이얼로그가 뜨고 여기서 허용을 받아야 추가할 수 있다.

 

유저가 추가하는 방법

 원하는 shortcut을 꾹 눌러서 런처로 빼면 된다.

 

코드를 통해 런타임에 앱이 추가하는 방법

  1. 먼저, isRequestPinShortcutSupported()를 호출하여 현재 사용 중인 런처가 Pinned Shortcut을 지원하는지 체크한다.
  2. Pinned Shortcut으로 추가할 Shortcut을 준비해야 하는데, 이미 있는 Shortcut인지 새로 만들어야 하는지에 따라 다르다.
    1. 이미 있는 Shortcut을 추가하고 싶은 경우 기존 Shortcut의 ID만 포함시켜서 ShortcutInfo 객체를 만들면 된다. 그러면 시스템이 다른 정보들을 알아서 가져와 자동으로 Pinned Shortcut으로 지정해준다.
    2. 새로 만들어야 하는 경우, Dynamic Shortcut을 만들 때 처럼 ShortcutInfo 객체를 새로 만들어줘야 한다.
  3. requestPinShortcut()을 호출하여 런처에 Pinned Shortcut 추가를 요청한다. 이때, 해당 프로세스 중 Shortcut이 성공적으로 추가된 경우 앱에 알려주는 PendingIntent 객체를 전달해줄 수 있다. 유저가 요청을 허용하지 않은 경우에는 앱이 콜백을 받을 수 없으니 참고 바란다.
  4. 3번까지 하면 Pinned Shortcut의 추가는 완료된 것이며, 이후에는 updateShortcuts() 함수를 사용하여 콘텐츠 내용을 업데이트 할 수 있다.

    먼저, 아까 만들었던 Naver Shortcut을 앱에서 Pinned Shortcut으로 만드는 코드를 짜보자.

 

 

 유저에게 권한을 받은 다음에 정상적으로 잘 추가되는 것을 확인할 수 있다. 코드상에서 기존에 만들었던 Shortcut의 id만 넘겨줬는데 제대로 만들어진 것을 확인할 수 있다. 새로 만들어야 하는 경우에는 앞서 Dynamic Shortcut의 경우와 마찬가지로 새로 만들어주면 되니 생략한다.

 


 이번에는 만드는 방법에 대해서만 알아보았고, 다음 포스팅에서 관리 방법에 대해 추가로 작성하도록 하겠다.

 

 

Shortcut 시리즈

2020/08/30 - [Android/Android Development] - Android App Shortcuts (안드로이드 앱 숏컷) - 1. 기본 개념

2020/08/30 - [Android/Android Development] - Android App Shortcuts (안드로이드 앱 숏컷) - 2. 만들기

2020/08/31 - [Android/Android Development] - Android Shortcuts (안드로이드 앱 숏컷) - 3. 관리하기

 

 

반응형

댓글