본문 바로가기

Dev/안드로이드

[안드로이드 짤막공부] 23.07.20

1. 지금 강의를 보며 하고 있는 게, 데이팅 앱 클로닝인데 강의에서 굳이 처리하지 않는 디테일한 부분들이 많다.
실제로 서비스하기 위한 앱을 만들 때는 분명히 신경 써야 할 부분들인데, 강의의 목표와는 조금 떨어져 있는 부분들이라 생략하는 거 같다. 나중에 혼자 프로젝트를 제대로 하게 되면 그때는 신경 써봐야겠다.

 

2. 강의에서는 레이아웃 작업을 할 때 주로 절대적인 수치와(이를테면 레이아웃이나 요소의 크기 같은 것들) LinearLayout을 많이 이용한다.
그러다 보니 렌더링 된 레이아웃을 보며 직관적으로 빠르게 만들어내긴 좋지만, 확실히 다양한 기종에 대한 이식성이 떨어진다.

아무래도 ConstraintLayout과 match_parent, wrap_content 옵션 위주로 구현하는 연습을 따로 하는 게 좋을 거 같다. 화면 비율별로 레이아웃을 매번 따로 만드는 것은 생산성이 너무 떨어지는 선택지니까.

 

3. 매칭 로직을 짜면서 notification을 구현 중이었는데, 두 대의 AVD 중 한 디바이스에서는 계속 notification이 뜨지 않았다.

로그를 찍어봤는데, createNotificationChannel() 이후 sendNotification()까지 정상적으로 진입하고 있었기 때문에 로직 상의 문제는 아니었다.

제대로 동작하는 디바이스의 기종은 Pixel 2(API 30)이었고, 동작하지 않는 기종은 Pixel 6 Pro(API 33)이었기 때문에 아무래도 안드로이드 API 레벨 문제인 것 같았다.

알림 런타임 권한, Android Developers

전에 얼핏 보기로는 안드로이드의 퍼미션 관리가 점점 엄격해지는 방향으로 가고 있다고 했다. 유저에게 사소한 권한까지 승인을 받아 사용하게 함으로써 보안에 더 신경을 쓰는 모양이다. 사실 좋게 포장하면 그렇지, 각종 사건사고 시 책임을 오로지 유저에게만 지우려는 목적이 더 큰 것 같다. 물론 덕분에 개발하는 입장에서도 신경 쓸게 늘어난 것은 덤.

여하튼 권한 문제이기 때문에 AndroidManifest.xml에

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

이렇게 해당 퍼미션을 사용할 수 있도록 하고, 앱 상에서 권한을 부여해 해결했다.

정상적으로 발생하는 Notification

그런데 사실 이렇게만 처리하면, 완벽하게 문제를 해결한 것은 아니다.

앱을 설치하고, 처음에 권한을 요구했을 때 거부했다든지 하면 해당 권한이 거부된 상태로 유지된다. 그래서 유저는 그로 인해 나타나는 앱의 정상적이지 않은 동작들에 대해서 당혹감을 표할 수밖에 없다, 따로 설명이 발생하지도 않기 때문에.

 

권한 부여 상태에 대해 권한을 이용하는 기능을 실행할 때이든, 주기적으로 확인하든, 첫 액티비티의 onCreate()시에 확인하든 상태를 임의로 확인하고 허용할 수 있게 유저친화적인 UI로 유도해야 한다.

이때 필요한 게 RequestPermissionLauncher이니 ContextCompat.checkSelfPermission()이니 하는 것들인데, 지금 만들고 있는 것은 그냥 강의를 보며 따라 구현해 보는 정도니까 거기까진 구현하지 않았다.