5월, 2024의 게시물 표시

Android 13 Notification Permission 알림권한허용

Android 12 까지는 앱에서 별도의 권한을 받지 않고 Notification 을 띄울 수 있었다. (활성화 상태가 디폴트값) 앱 설정에서 Notification 알림 활성을 통해 Notification 권한을 조정할수 있었다. 하지만, Android 13 부터는 Notificatioin 권한이 기본적으로 비활성 상태이며 유저가 권한을 허용해주어야만 활성화 상태가 된다. AndroidManifest 에서 Notificatioin 권한을 요청할 수 있다.  Target SDK API 33 이상에서만 권한 수가가 가능하며, 그 이후는 기존 안드로이드 권한 요청과 동일하다. <manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest> Target SDK 33인 앱이 Android 12 이하의 디바이스에 설치된다면? 기존 안드로이드 OS에서는 따로 알림 관련된 권한 요청이 없었다. POST_NOTIFICATIONS 해당 권한 요청을 아무리 보내도 권한 알림 팝업은 노출되지 않는다. 알림 권한은 기존과 동일하게 설정에 들어가서 활성화/비활성화를 진행하며 기본 앱 진입 시 무조건 활성화 상태로 진입되게 된다. Target SDK 32인 앱이 Android 13 이상의 디바이스에 설치된다면? Android 13 부터는 Notification 권한이 존재한다. 그러나 Target SDK 33 이상부터 알림 관련 퍼미션을 정의할 수 있다. (android.permission.POST_NOTIFICATIONS) notificationChannel을 등록할 때 자동으로 알림 권한 팝업이 노출된다 POST_NOTIFICATIONS (Notification Permission)

Android WebView WebViewClient (웹뷰에서 일어나는 요청, 상태, 에러 등 다양한 상황) 재정의 사용

 WebViewClient를 통해 웹뷰에서 일어나는 요청, 상태, 에러 등 다양한 상황에서의 콜백을 조작할 수 있습니다.  다양한 메소드를 제공하고 있습니다만 대표적으로 사용되는 몇 가지 메소드만 살펴보도록 하겠습니다.  전체 메소드에 대해서는 developer 사이트 에서 확인하실 수 있습니다. 1. shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?) - 현재 웹뷰에 로드될 URL에 대한 컨트롤을 할 수 있는 메소드 2. onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) - page loading을 시작했을 때 호출되는 콜백 메소드 3. onPageFinished(view: WebView?, url: String?) - page loading을 끝냈을 때 호출되는 콜백 메소드 4. onReceivedError(view: WebView?, request: WebResourceRequest?, error: WebResourceError?) - request 에 대해 에러가 발생했을 때 호출되는 콜백 메소드. error 변수에 에러에 대한 정보가 담겨져있음 5. onReceivedHttpError(view: WebView?, request: WebResourceRequest?, errorResponse: WebResourceResponse?) - 웹서버의 http 에러 발생시 호출되는 콜백 메서드 6. onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) - 웹뷰 SSL 오류관련 핸들러 콜백 메소드 override fun onReceivedError(view: WebView, request: WebResourceRequest, error: WebResourceError) { super.onReceivedError(view, req

Android WebView 타임아웃(TimeOut) 기능

Android WebView는 페이지 관련해서 타이아웃 설정이 없다 상황에 따라 bad network 상황시 WebViewClient에 타이아웃 관련 기능을 통해 사용자에게 네트워크 장애표시를 해야할 필요가 있었다. 다음의 동작으로 간략한 webview에 타임아웃 기능을 구현해 보았다. mWebView.setWebViewClient(new WebViewClient() { private val loadingTimeOut = 1000 * 10 private var timeout = false //페이지 타임아웃 타이머 private val pageTimeoutTimer: CountDownTimer = object : CountDownTimer(loadingTimeOut.toLong(), 1000) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { Log.d("pageTimeoutTimer onFinish") if (timeout) { //네트워크 장애관련 페이지 노출 Log.d("onPageStarted networkFailActivityForError") } pageFinishDone() } } //페이지 완료 처리 private fun pageFinishDone() { pageTimeoutTimer.cancel() timeout = false dismissLoading() } override fun onPageStarted(view: WebView?, url: String?, favicon: Bi