오래된 프로그래머의 요즘 이야기

그리고 소소한 일상들...

허니의 소소한 일상들이 켜켜이 쌓여가고......

Tech Story

[FLUTTER] Background 처리

쭝허니 2023. 8. 4. 12:58

출처 : https://dart-ko.dev/language/concurrency

프로그램 개발 시 백그라운드 처리가 필요한 경우가 무척이나 많다.

실시간 위치정보나 Notification 같은 경우가 특히 그러하다.
필자의 경우 Notification 처리 때문에 FCM까지 적용했다.

그런데 Debugging Mode에서는 문제가 없었는데 스토어와 마켓에 올리기 위해 Release Mode로 빌드했더니,
Release Mode에서는 백그라운드 처리가 정상적으로 되지 않았던 것이다. 개발환경의 Version 문제 등 놓친 부분이 있기도 하겠으나 양 진영의 플랫폼은 배터리 관리에 무척이나 신경쓰고 있었던 것 같다.

 

개발 중에는 Debugging Mode로 내 컴퓨터와 폰을 USB로 연결해서 테스트(Logger 확인을 해야 하므로…)하기 때문에, 화면이 꺼질일이 없었고 테스트 목적으로 화면을 끄더라도 USB연결로 인해 배터리가 충전 중 이었으니, 백그라운드 처리에 문제가 없었는데 USB연결을 끊고 Release앱을 실행시켜서 테스트 해보니 Notification 처리가 제대로 되지 않았다.

특히, 개발 중이던 앱 특성상 ServerPushMessage가 아닌 Local Message를 사용해야 했는데 충전 상태가 아닌 OS는 배터리를 위해 일정 시간 이후 백그라운드 상태의 앱들을 모두 Sleep상태로 전환시키는 듯 했다.

이 때문에 Background Service를 Foreground Service로 전환 시켰으나, 결과는 동일했고 일주일 정도 삽질만 겁내 했던 것 같다.

 

문득, 예전에 앱미터기 만들때 위치정보 수신을 위해 Background처리를 했던게 생각나서 테스트해봤다.

Release Mode의 화면꺼짐(Background) 상태에서도 특정 알림 조건을 Check를 하는 Process가 정상적으로 실행되었으며, 알림을 전송해야 할 상태가 되면 Sleep상태의 App을 깨우고 Local Notification을 전송한다.

만약, 이것도 안되었다면 마지막으로 내 개인 서버의 Redis와 FCM을 연동시켜 테스트 만이라도 해보려고 했었는데, 다행이다. 이렇게 해결되어서……

혹, 필자와 같은 Notification 백그라운드 처리에 고민 중이신 개발자들이 있다면,

background locator 2 Package의 백그라운드 기능을 적용 해 보심 어떨까 싶다.

 

background locator 만쉐이~~~

isolate 만만쉐이~~~

'Tech Story' 카테고리의 다른 글

[Flutter]스콜 앱미터기 재등록, 그리고 ChatGPT 와 첫대화~~~  (0) 2023.08.09
MBTI App 출시  (0) 2023.08.04
코딩과 경험  (0) 2023.08.04
프로그래머 Old & New  (0) 2023.08.04
능력 있는 프로그램 개발자?  (0) 2023.08.04