구시포
52
2021-01-12 11:52:17
6
194

안드로이드 푸시관련 질문드려요.


푸시가 왔을때, 노티가 쌓이며 카카오톡처럼 백그라운드이던, 포그라운드이던 메세지가왔다는 뷰를 최상단에 뿌리고 싶은데 카카오는 어떤식으로 처리했을까요?


1. 서비스로 구현했습니다. 하지만 이 경우, android.permission.SYSTEM_ALERT_WINDOW  권한이 필요하며 카카오는 해당 권한이 없더라도 문제 없이 뷰가 그려집니다.


2. 토스트로 구현했습니다. 토스트로 뷰를 그리는데 문제는 없지만 클릭을하여 앱을 실행시키는 처리가 되지 않습니다. 찾아보니 토스트를 커스텀으로 구현하더라도 클릭이벤트는 할 수 없는거 같더군요.


3. 액티비티를 이용하여 구현했습니다. 이 부분은 dialog 형태로 앱 히스토리를 noHistory를 true로 주어서 하였지만, 정확히 구현되지 않았습니다.


어떤방식을 통해 구현이 가능할지 답변 부탁드려요...!!

0
  • 답변 6

  • Eleutherius
    699
    2021-01-12 12:59:35

    Heads-up Notifications

    위의 키워드로 찾아보시면 여럿 찾을 수 있습니다.

    https://developer.android.com/guide/topics/ui/notifiers/notifications

  • 구시포
    52
    2021-01-12 13:02:37

    ㅠ 제가 내용을 누락 시켰네요...

    제일 처음했던게 Heads-up이였습니다..

    이 부분은 백그라운드를 투명으로 줄 수 없더라구요.

    카카오는 head-up푸시가 아닌거같아요..ㅠ

    뷰를 커스터마이징 하는데 한계가 있더라구요.

  • Willee21
    119
    2021-01-12 15:52:05

    스낵바로 해 보시죠. 스낵바는 클릭이벤트를 받을 수 있습니다.

    https://stackoverflow.com/questions/37770842/how-to-set-onclicklistener-for-actions-in-snackbar-android

  • 구시포
    52
    2021-01-12 16:58:39

    흑...ㅠ 

    노티가 왔을때, 뷰를 생성해야하는데 스낵바 역시 뷰를 필요로 하기 때문에 안되더라구요...

    FirebaseMessagingService
  • Willee21
    119
    2021-01-13 11:48:58

    음.. 정확한 상황을 재현하기 힘들어서..
    코멘트만 남깁니다.

    토스트나 스낵바에서 기본 View를 가지고 있는데, 이것을 가져와서 inflate로 덮어쓰는 것도 안되나요?

    Snackbar snackbar = Snackbar.make(main, message, isLong?Snackbar.LENGTH_LONG:Snackbar.LENGTH_SHORT);

    Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout)snackbar.getView();

    LayoutInflater inflater = LayoutInflater.from(ctx);

    View snackView = inflater.inflate(R.layout.snackbar, null);

    layout.removeAllViews();

    layout.addView(snackView, 0);

  • UnknownDontknow
    700
    2021-01-13 17:34:55

    혹시 위와같은 모양을 하시려는 것이 아닌가요. 맞다면, 저 기능은 안드로이드8.0이상의 삼성 갤럭시 폰에서 Edge Lighting 알림관리 부분에서 해당 앱을 활성화 해주면 사용되는 기능일거에요. Notification을 보여주는 기능이 있는 앱에서 사용할 수 있는 기능인듯해요.

    코드상으로 저 기능을 활성화 시킬 수 있는지는 잘 모르겠네요.

  • 로그인을 하시면 답변을 등록할 수 있습니다.