본문 바로가기

Android

[22일차]notification

notification 이랑 push



notification 주체 = Sender


이거를 받는 Receiver가 있다. 




주체가 사용자에게 메시지를 보내는거다.



push는 서버프로그램이 클라이언트 프로그램에게 어떤 메시지를 보내는게 push이다. 




notification이랑 push를 구분해야한다. 



일반적으로 push-notification이라고 한다. 



이거 누구한테 메시지 왔습니다. 이렇게 보여준다. 그래서 각각 쓰는 기술이 다르다. 


우리가 지금 알아 볼 건 notification 이다. 


전혀 다른 기술이다. 


우리가 한건 client가 사용자에게 무언가를 알리는 것이다. 



알릴 때 왜 알릴 필요가 있느냐 


client라는게 액티비티만 있는게 아니다. service도 있고, receiver 이런 것 도 있다. 


UI를 가지고 있으면 사용자에게 무언가를 보여 줄 수 있다. 


receiver가 메세지가 도착한 걸 알 수있다. 


Service에서 바로 activity를 띄울 수 있다. 


액티비티는 task가 있어야 된다. service나 receiver에는 task가 없다 .  그래서 flag에다가 new task를 주고 바로 이동하면된다. 

근데 이게 정말 안좋은 방식이다

service가 도는 시점에 사용자가 무언가를 하고 있는데 액티비티가 뜨면 사용자 입장에서 불편하다. 

안드로이드 플랫폼에서는 가능하면 이런걸 하지 말라고 하는 걸 권장한다. 전화, 알람 은 예외다.

화면 가장 상단에서 status 바에 알릴게 있다라고 보여주는 방법이 있다. ticker라고 부른다.

ticker를 확장하면 알릴 메세지가 나온다. 

보여 주는 거를 Notification이라고 부른다. 

얘가 새로운 액티비티를 구동하는 일을 할 수 있다. 

Background를 돌다가 사용자에게 무언가를 알려줘야 되면 notification이라고 부른다. 

설정할때 NotificationCompat.Builder로 만들어준다. 

builder.setTicker를 반드시 설정해줘야 된다 

bulder.setWhen(System.currentTimeMillis()) 확인한 시간을 쓴다. 이거 안하면 생성한 시간이 설정된다. 

id를 설정해 줘야하는ㄴ데 
id는 내 앱에서만 유니크 하면 된다. 이거를 같은거로 계속하면 replace되고 증가시키면 계속 쌓여서 나온다. 


액티비티를 구동되게 하려면 

시스템에서 띄우는 것이기 때문에 해당 Activity에 exported true 이거나 intent-filter가 있어야 한다. 


이게 없어도 뜨는 단말이 몇개 있다. 


인텐트와 인텐트가 어떻게 구동하고 있는지 가지고 있는 애를 PendingIntent라고한다.


  PendingIntent 는 여러가지로 유용하게 사용될 수 있는데(여러가지 이유로 특정 패키지만 사용가능한 컴포넌트를 다른 컴포넌트와 상호 작용시킬 필요가 있는 경우 등....)그 중에서도, 안드로이드 화면 상단에 위치한 'Notification Bar' 와 상호 작용하는 어플리케이션을 작성할 때 널리 사용됩니다.




'Android' 카테고리의 다른 글

[23일차] 페이스북 Oauth  (0) 2016.08.19
[23일차] 채팅xmpp  (0) 2016.08.19
[21일차] 센서  (0) 2016.08.16
[21일차]카메라 사용하는 방법  (0) 2016.08.16
[21일차] 카메라 서피스뷰  (0) 2016.08.16