마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

fcm notification 뷰관련 문의 드려요. 카카오처럼..

0 추천

fcm 푸시를 받게되면, 카카오와 같이 화면에 뷰를 띄우려고하는데 어떤식으로 작업했을까요?

앱내, 앱을 사용중이지 않더라도       유저 | 내용 을 담은 디바이스 최상단에 뿌려지게 하고싶거든요.

제가 해본 방법은

1. headup을 커스터마이징 하려고했으나, remoteview에서 백그라운드를 투명으로 줄 수 없기에 원하는 기능이 아니였습니다.

2. 서비스를 이용하여 foreground, background 에서 띄우려고했으나, 아래와 같은 시스템 권한이 필요했습니다.

android.permission.SYSTEM_ALERT_WINDOW

다른 방법을 찾아보고는 있지만, 푸시가 왔을때, 권한없이 카카오와 같은 플로팅뷰?를 띄우려면 어떻게 해야할까요

구시포 (2,750 포인트) 님이 2021년 1월 11일 질문
제가 알기로는 보여주고 싶은 액티비티로 바로 이동을 하고, 대신 백버튼을 누를 때 동작을 변경하는 형태로 처리가 되는 것으로 압니다. 이걸 딥링크(deep link)라고 하는데,  관련 문서를 안드로이드 개발문서에서 찾아보세요.
바로 액티비티로 이동시, 히스토리가 남게되서요..
이런방식이 아닌 뷰를 생성해서 그리는게 아닐까 싶은데..
토스트로 띄울 수 있지만, 토스트는 클릭이 되지를 않네요.
레이아웃을 생성하여 인플레이트 시켜 내부 뷰에 클릭 이벤트를 걸어봤지만 이벤트가 실행이 안되네요 ㅠㅠ
토스트도 커스텀 레이아웃을 써서 클릭하게 할 수는 있어요.
https://developer.android.com/reference/android/widget/Toast#setView(android.view.View)
아래와 같이 토스트를 커스텀 레이아웃을 사용해보았지만, 클릭 이벤트가 안되더군요 ㅠ
val toast = Toast(applicationContext)
        toast.apply {
            duration = Toast.LENGTH_LONG
            setGravity(Gravity.TOP,0,0)
        }

        val layoutInflater = getSystemService(LAYOUT_INFLATER_SERVICE) as LayoutInflater
        val view = layoutInflater.inflate(R.layout.service_notification,null)
        val rootView = view.findViewById<ConstraintLayout>(R.id.cl_root)
        val textView = view.findViewById<TextView>(R.id.tv_message)
        textView.text = message
        rootView.setOnClickListener {
            fcmManager.cancelNotification()
            toast.cancel()
            startActivity(Intent(this,FcmBridgeActivity::class.java).apply {
                addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            })
        }
        toast.view = view
        toast.show()
Toast 는 어차피 좋은 옵션이 아니네요. 소스코드에 이렇게 나오네요.
Starting from Android {@link Build.VERSION_CODES#R}, apps
     *      targeting API level {@link Build.VERSION_CODES#R} or higher that are in the background
     *      will not have custom toast views displayed.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...