본문 바로가기
Flutter/etc.

[Flutter] Flutter App Badger 플러그인의 안드로이드 호환성

by 6cess 2024. 3. 26.

이번 글에서는 Flutter 프로젝트에서 앱 뱃지 기능 구현을 위해 많이 사용되는 플러그인,

flutter_app_badger 의 안드로이드 호환성에 대해 이야기해보고자 한다.

 

 

flutter_app_badger | Flutter package

Plugin to update the app badge on the launcher (both for Android, iOS and macOS)

pub.dev

 

필자의 프로젝트에서 위 플러그인을 사용하면서 안드로이드 에뮬로 실행하니

제대로 작동이 안되는 경우도 있었고 작동하는 방식이 iOS와 다른 경우도 있었다.

그래서 이 플러그인이 안드로이드 앱 뱃지 기능을 어떻게 구현했는지 자세히 알아보았는데
그 과정에서 알게 된 내용들을 공유하고자 한다.

 

 

1.  pub.dev 문서

먼저 pub.dev에 올려놓은 문서에서 안드로이드 호환성에 대한 내용들이 있는지 확인해보았다.

아니나 다를까 문서 첫번째 문장부터 안드로이드에 호환성이 100%가 아니라는 말을 하고 있었다.

그리고 심지어 안드로이드에서 공식적인 API는 지원하지  않는다고 설명하고 있었다.

https://pub.dev/packages/flutter_app_badger

 

아래 안드로이드에 대한 추가 설명을 보면 몇몇 기종들만 이 기능을 지원하고 있고

Shortcut Badger library를 통해 구현하고 있는 듯하다.

일단 삼성은 포함되어 있어서 마음은 좀 놓인다..

 

확인차 Flutter App Badger 깃허브 리포지토리를 까봤다.

깃허브
build.gradle

 

FlutterAppBadgerPlugin.java

 

우선 Shortcut Badger library를 가져다 사용하는 것은 확인했고

어떻게 사용하나 확인해봤다.

 

FlutterAppBadgerPlugin.java

 

 

확인해보니 별 다른 작업 없이 flutter 메서드 채널을 통해 udpateBadgeCount 가 호출되면

바로 ShortcutBadger 라이브러리의 applyCount 메서드를 호출하고 있다.

 

 

2. Shorcut Badger library

 

다음으로 Shortcut Badger library 문서를 살펴보았다.

 

GitHub - leolin310148/ShortcutBadger: An Android library supports badge notification like iOS in Samsung, LG, Sony and HTC launc

An Android library supports badge notification like iOS in Samsung, LG, Sony and HTC launchers. - leolin310148/ShortcutBadger

github.com

 

문서에서 눈에 띄는 내용은 두가지가 있었다.

 

 

첫번째는 지원 가능한 런처 목록이었다.

https://github.com/leolin310148/ShortcutBadger/

 

내가 사용하는 Flutter App Badger 플러그인의 버전은 Shortcut Badger library의 1.1.22를 사용하고 있었기 때문에

Yandex Launcher를 제외한 나머지 15 런처를 지원했다.

 

 

 

 

두번째로 눈에 들어온 것은

ABOUT Google Play Developer Term Violations

이었다.

https://github.com/leolin310148/ShortcutBadger/

 

1.1.0 버전 이하일 경우에는 구글 플레이 개발자 약관에 위배되는 경우가 있나보다.

하지만 이것도 다행히 1.1.22 버전을 사용하고 있기 때문에 패스!

 

 

다음으로 어떻게 구현되었는지 간단하게 살펴보았다.

 

열어보니 런처마다 각각 따로 구현을 하고 있었다.

 

삼성은 어떻게 지원하고 있나 살펴보았다.

 

 

 

DefaultBadger 를 사용할지 말지를 구분짓는 기준이 SDK 버전 21 이었다.

21 이상이면 가능한한 DefaultBadger 로 기능을 사용하도록 되어 있다.

 

그렇다면 defaultBadger.isSupported의 기준은 뭘까

 

 

DefaultBadger.java

 

 

시스템에 인텐트 액션을 처리할 수 있는 리시버가 최소 한 개 이상 존재해야 한다.

즉, 해당 인텐트를 사용해 특정 작업을 수행할 수 있는 환경이 구성되어 있느냐에 따라 DefaultBadger를 사용할지

삼성을 위해 따로 구현한 Badger구현체를 사용할지 달렸다.

 

추측이지만 안드로이드 Oreo 부터는 안드로이드 앱 뱃지 기능 API이 추가되었기 때문이 아닌가 싶다.

 

 

중간 정리

1. Flutter App Badger 는 안드로이드 기능 구현으로 shortcut badger library 를 사용

2. shortcut badger library는 삼성을 포함한 다양한 기기 지원

3. 현재 사용하는 버전은 구글 플레이 정책에 위반되지 않음

4. 오레오 이상부터는 안드로이드 공식 API를 사용할 가능성 있음 

 

중간 결론 :

1. Flutter App Badger은 삼성폰을 안정적으로 지원한다.

2. (추측) 오레오 이상일 경우 공식 API를 통해 더 안정적으로 사용할 수 있다.

 

 

이쯤에서 한국의 안드로이드버전별 제조사별 스마트폰 점유율이 궁금..

점유율을 확인하기 위해 구글하던 중

각종 점유율 통계를 확인할 수 있는 유용한 사이트를 발견했다.

 

 

Statcounter Global Stats - Browser, OS, Search Engine including Mobile Usage Share

Tracks the Usage Share of Search Engines, Browsers and Operating Systems including Mobile from over 5 billion monthly page views.

gs.statcounter.com

 

먼저 한국에서 스마트폰 제조사별 점유율 통계를 확인해봤다.

 

https://gs.statcounter.com/vendor-market-share/mobile/south-korea/#monthly-202302-202402

 

우리나라에서는 사실상 아이폰, 삼성폰이 대부분이다....

그냥 삼성폰만 호환된다면 문제는 없을 듯하다.

 

다음으로 한국에서 안드로이드 버전별 점유율 통계를 확인해봤다.

 

https://gs.statcounter.com/android-version-market-share/mobile-tablet/worldwide/#monthly-202302-202402-bar

 

8.0 Oreo 미만의 버전인 안드로이드의 점유율이 8% 정도다.

 

결론적으로

위 플러그인은 삼성을 포함한 여러 런처를 지원하고 있으며

오레오 8.0이상일 경우 가능하면 안드로이드 공식 API를 사용하도록 설정되어 있다

공식 API를 사용하지 못하더라도 삼성 런처에서 지원하는 자체 기능을 통해 구현하고 있다.

 

한국에서는 안드로이드 오레오 이상의 버전의 삼성폰을 쓰고 있는 사람들이 대다수이다.(최소 90%대)

점유율 상으로는 버전이 너무 낮거나 제조사 특이해서 발생하는 문제는 적어보인다.

 

하지만 확인해봐야할 것은 안드로이드 오레오 이상에서

실제로 대부분의 삼성폰이 (추측이 맞다면) 안드로이드 공식 API를 통해 앱 뱃지 기능을 구현할 수 있는지

(우리는 코드를 통해 구현 방식을 통해 추측한 것일뿐 실제로 코드가 먹힐지는 모르기 때문이다)

 

그 기능이 iOS에서의 앱 뱃지 기능과 동일하게 작동하는지 

 

결국 테스트를 통해 직접 확인하는 방법 밖에 없는 듯하다.

 

확실한 정답을 알려주지 못해 죄송..

 

테스트를 하게 된다면 결과를 추가로 공유하겠습니다.