grep

Android

안드로이드 런처와 위젯 톺아보기 (3) - 위젯과 숏컷, 런처와의 상관관계

NHN

2022년 1월 7일

원문에서 보기 ↗

소개

안녕하세요. PAYCO 앱기술개발팀 유상현입니다. 1편과 2편에 이어서, 주로 안드로이드 런처와 위젯에 관한 주제로 공유를 하고 있습니다.

이번 편 역시 1편과 2편을 읽지 않으셔도 큰 지장은 없지만, 궁금해하실 분이 계시길 바라면서 링크를 투척하겠습니다.

지난 1, 2편에서는 핸드폰 부팅 후 런처에서 앱을 노출하기까지의 과정을 간략히 작성해보았습니다.

이어서 이번 편에서는, 알고 보면 런처와 상당한 상관관계가 있는 안드로이드 위젯과 숏컷에 대해 작성해보려고 합니다.

갑자기 앞에서 런처를 알아보다 위젯쪽을 알아보는 이유는..

1.png

런처는 위젯을 알아보기 위한 추진력을 얻기 위함이었기 때문입니다.

사실 페이코 업무를 진행하면서 위젯과 숏컷 관련 이슈를 접하게 되었고, 이를 해결하려다 보니 자연스레 런처의 역할에 대해서도 검토를 하게 되었습니다.

해당 내용을 이슈 자체에 대해서만 공유를 하려니 용어에서 오는 혼돈을 피할 수가 없어, 아예 이슈 공유에 앞서 런처에 대한 공유까지 선행하게 되었습니다.

이에 따라 공유의 맥락이 앞편들과 조금 연결되지 않는 부분이 있더라도 너른 양해 부탁드립니다.(--)(__)

그러면 본격적으로 런처는 위젯(그리고 숏컷)과 어떤 상관관계가 있는지, 어떤 이슈가 있었는지를 중심으로 시작해보겠습니다.

위젯? 숏컷?

본격적인 상관관계 분석에 앞서, 이슈를 분석하다 보니 안드로이드의 위젯과 숏컷의 차이점에 대해 용어 정리가 필요했습니다.

위젯은 무엇이고, 숏컷은 무엇일까요?

2.png

안드로이드 폰을 꽤나 쓰신 분들은 위 화면이 친숙하실 수도 있을 듯합니다. 홈 화면에서 아이콘이 없는 위치의 배경화면을 꾹 누르면 위 화면으로 진입하게 되며 위젯을 설정할 수 있는 아이콘이 노출됩니다.

(삼성 단말기 기준, OS 버전에 따라 약간의 차이는 있을 수 있습니다.)

해당 버튼을 통해 위젯을 설정해보신 분들은 알고 계시겠지만,


위젯이란 홈 화면에서 앱 아이콘을 통해 앱을 실행하는 것이 아니라, 특정 기능을 곧바로 실행할 수 있는 기능입니다.

(예: 페이코 삼성 페이 위젯 설치 시 설치된 위젯을 클릭하면 곧바로 페이코 삼성 페이 결제 화면으로 이동할 수 있음)


Q. 위의 위젯 정의에서 이상한 점은 무엇일까요? . . . . . . . 위젯의 기능 자체는 맞을 수 있지만, 개발자의 관점에서 위 정의는 틀렸습니다. 3.png

여기서부터 위젯과 숏컷의 혼란스러운 동거가 시작되는데요,

4.png

위와 같이 분명 런처에서 위젯 을 설정하는 화면에 진입하였지만, 해당 화면에는 위젯이 있을 수도 있고, 숏컷이 있을 수도 있습니다.

페이코의 사례로 보면, 현재 페이코 안드로이드는 v3.21.0 기준 13개의 위젯(또는 숏컷)을 지원하고 있습니다.

정확한 공식 명칭에 의하면, 이들 중 위젯은 2개에 불과하며 11개는 숏컷입니다.

이쯤에서 답지를 컨닝해보면, 구글에서 정의하는 위젯과 숏컷의 정의는 아래와 같습니다.

위젯

5.png (참조 : https://developer.android.com/guide/topics/appwidgets?hl=ko)

숏컷

9.png (참조 : https://developer.android.com/guide/topics/ui/shortcuts?hl=ko)

답지가 조금 불친절한 느낌이 있지만, 결정적인 차이는 숏컷을 바로가기 라고 표현한 것이 보입니다. 다시 말해 숏컷은 생성시 한 가지 동작(특정 화면으로 바로가기)만 가능 한 반면, 위젯은 구현 목적에 따라 여러 개의 동작을 마음대로 할 수 있는 것이 큰 특징 중 하나입니다.

좀 더 디테일하게 위젯과 숏컷의 차이점을 나열하면 아래와 같습니다.

위젯숏컷
런처에 노출되는 크기1x1~4x4(런처 화면의 크기에 따라 그 이상도 설정 가능)1x1 만 가능
제공하는 기능의 개수개발자가 구현하기에 따라 하나의 위젯에 여러 개의 이벤트를 기능별로 지정 가능딱 하나의 클릭 이벤트만 지정 가능(바로가기)
런처에 노출되는 UI개발자가 구현하기에 따라 생성 시 런처에 노출되는 모든 UI 커스텀 가능런처에 노출되는 아이콘, 명칭 정도만 설정 가능
유지보수생성 후 정기적 UI 업데이트 가능런처에 생성된 숏컷은 UI 업데이트 불가능
구현 난이도어려움쉬움

더 많은 차이점이 있을 수도 있지만, 이 정도면 큰 틀에서 정리는 될 것 같습니다. 몇 가지 사례를 나열해보면 아래와 같습니다.

6.png

런처와의 상관관계

정신없이 위젯과 숏컷을 비교하다 보니 이번 글의 목적을 잊어버릴 뻔했네요.

7.png

지금까지 위젯과 숏컷을 구분한 이유는 이들과 런처와의 상관관계, 이로 인해 발생할 수 있는 이슈에 대해 작성하기 위함이었습니다.

위젯과 숏컷은 모두 앱에서 생성을 하는 것은 맞지만, 정확하게는 앱에서 생성 요청 을 하는 것이고, 실제 생성은 런처가 요청을 전달받아 처리하게 됩니다. 따라서 앱은 런처에 생성 요청을 전달할 뿐, 실제 생성 이후의 동작(유지보수)은 런처와 밀접한 관계가 있을 수밖에 없습니다.

즉, 위젯과 숏컷은 유지보수 관점에서 보면 런처가 업데이트될 때마다 같이 영향을 받는 관계에 있습니다.

런처가 업데이트되는 경우는 대략 아래와 같습니다.

사실상 마지막 항목이 핵심일 수 있는데요, 앱 입장에서 런처가 업데이트되는 경우를 모두 통제하는 것은 불가능하기 때문에 그냥 아무 때나 무작위로 업데이트가 된다고 생각하고 이에 대응할 수 있도록 해야 합니다.

위젯의 경우, 런처가 업데이트될 때마다 UI를 다시 그리고 클릭 이벤트 또한 재설정해야 합니다. 이와 관련해서 신경 쓸 일이 많긴 하지만, 런처가 업데이트되어도 앱에서 어쨌든 대응할 방법이 있다는 것이 다행스럽게 느껴집니다.

숏컷의 경우, 런처가 업데이트되어도 앱에서 관여를 할 수 없습니다. 오로지 런처의 판단으로 숏컷의 업데이트가 진행됩니다.

그래서 발생할 수 있는 이슈는 무엇인가요?

장황한 글이 되었지만, 우선 지금까지 알게 된 사실을 세줄 요약하면 아래와 같습니다.

  1. 위젯과 숏컷은 아주 다른 특징을 가진다.
  2. 위젯과 숏컷은 앱에서 생성 요청을 하지만 모두 런처와 밀접한 상관관계가 있다.
  3. 런처가 업데이트될 때, 위젯은 앱에서 대응할 수 있지만, 숏컷은 대응할 방법이 없다.

눈치채신 분들도 계시겠지만, 이슈는 3번에서 발생하게 됩니다. 3번 항목에서 발생 가능한 이슈는 여러 가지가 있겠지만, 크게 아래의 두 가지 원인에서 이슈가 발생하게 되는데요,

런처가 업데이트될 때, 위젯은 앱에서 대응할 수 있다. --> 앱에서 대응을 잘못할 경우 이슈가 발생합니다.

런처가 업데이트될 때, 숏컷은 앱에서 대응할 방법이 없다. 오로지 런처의 판단으로 숏컷 업데이트가 진행된다. --> 런처의 판단이 의도한 방향이 아닐 경우 앱의 의도와 상관없이 이슈가 발생합니다.

이와 관련해서, 다음 편(이자 마지막 편!)에서는 위 두 가지 원인을 바탕으로 페이코에서 어떤 이슈가 발생했었는지와 이를 해결한 경험에 대해 공유해보려 합니다.

8.png

긴 글 읽어주셔서 감사드리며 다음 편에서 뵙겠습니다. 감사합니다. :)

(이미지 출처)