본문 바로가기

WindowPhone

Understanding pushnotifications in WP7

윈폰7에는 총 3종류의 Pushnotification 을 지원을 하고 있는데요.

그 종류에는 
1.Tile notification 
2.Toast notification 
3.Raw notification

요렇게 3개가 있는데요. 이것들이 어떻게 작동을 하는지에 대해서 알아 보도록 하겠습니다.

원본 내용은 이곳(http://www.silverlightshow.net/items/Windows-Phone-7-Part-7-Understanding-Push-Notifications.aspx)에 가보시면 됩니다.

아 우선 쓰기 전에 이 글을 쓴 아자씨가 옆에 저 아자씨 인데요 이 아자씨가 지금 41살 이라고 합니다. 게다가 원래 IT쪽도 아니었고 그래픽 디자이너, 학교 선생님 등등을 하다가 개발자가 되었다고 하는데요. 아 정말 멋지네요 +_+ MS MVP 라고 하시는데, 저도 나중에 MVP 되어서 summit 가면 이 아자씨 찾아서 싸인 받아야겠어요. ㅋㅋㅋㅋ 아웅

 

 

 

암튼 –_-;;;  시작해 보도록 하겠습니다;;

사실 notification을 application에서 받기 위해서 받아야 할 내용이 있는지를 체크 하기 위해서 계속 접속 해야 한다면 필요 없는 요금이 발생 하겠죵?. 그런 식으로 처리가 된다면 전 윈폰 안 삽니다 –_-…. 버뜨!! 그런 일은 없습니다. ㅎㅎ 그럼 그런 일은 어떻게 발생 하는지 후비고~

 

등록1)

우선 notifications을 지원 하는 어플이 실행 되면, 해당 어플은 MPNS(Microsoft Push Notification Service)에 등록 요청을 합니다. 그리고 MPNS는 네트워크상에서 유일한 uri을 반환 하게 됩니다. 해당 uri는 phone의 주소는 아니구요 이건 MPNS 을 가리키게 됩니다. uri는 MPNS에서 phone을 찾기 위한 ID을 포함 하고 있습니다. *MPNS만이 Phone에 직접적으로 연결 할 수 있는 서비스 입니다.

등록2)

이제 MPNS는 network상의  phone의 존재를 알고 있습니다. 이것은 폰 스스로가 Earthquake service(이 아저씨가 준비한 지진 관측 서비스)에게 uri을 제공 하게 해줍니다. 이 일이 일어나기 전에는 service는notifie을 원하는 phone에 존재를 알 수 없고 그러므로 notify을 해주지 못하게 됩니다. phone은 Earthquake service 에게 Uri(MPNS가 제공해준)을 제공 하는 함수를 호출 해야 합니다. Earthquake service는 uri을 받고 나면 나중에 사용 하기 위해서 저장해 두어야 합니다.

알림1)

자~ 그렇다면 어디선가 지진이 발생 했다고 과정 해보겠습니다. 어디선가 지진계에 지진이 발생 했다고 알려지고, 이것이 earthquake database에 추가가 되겠습니다. 그리고 service는 등록된 폰(notify을 받아야 하는)들을 알고 있습니다. 그러므로 service는 message(3가지 종류의 message가 존재 합니다. )을 묶어야 하구요, phone에서 제공 받은 uri로 POST 형식으로 message을 보내야 합니다.MPNS로 전송이 되는 message는 약간의 정보(notification에 들어가야 할)을 포함 할 수 있는 짧은 xml 형태 입니다.

알림2)

 

 

Earthquake service에서 보내진 message는 MPNS가 받게 됩니다. 이것은 device가 수취인(받아야 하는 사람?)이라는 사실을 이해하고 있습니다. 그러므로, message가 도착 하면, POST http method로 싸주게 됩니다. 이것은 content(내용)을 포함 하고 있고 그리고 phone으로의 뱡향 을 알려 줍니다. MPNS는 message의 내용을 모릅니다. 오직 실제 phone의 nework주소만을 찾을 수 있습니다. 받은 uri을 해석하고, 그리고 어떤 수정도 없이 message을 전달해 줍니다. 만약에 device가 MPNS에 연결 되어 있지 않다면 예외를 발생 시킵니다.

알림3)

phone이 notification을 받게 되면 여러 방식으로 표현이 가능 합니다 notification의 종류에 따라 toast message,tile의 배경을 바꾸거나 혹은 다른 것을 할 수 있습니다.Push Notification Service는 os와 깊게 통합 되어 있습니다.  그러므로 notification은 application이 tombstoned중에도 보여 질 수 있습니다. application이 background에서 돌 필요는 없습니다. notification은 보여지게 되고 사용자가 원한다면 application을 tombstoning으로부터 깨울 수도 있습니다.

 

 


허허허 머 여기까지 해서 정말 간단히 notificatoin에 대략적인 구조에 대해서 알아 보왔는데요, 더 자세한 내용은 위에 적은 블로그로 가 보시면 자세히 적혀 있고, 게다가 샘플 코드 까지도 제공해 주고 있습니다. 그럼 즐코 하세용~~
으허헝 배고프네용 :-(


머 사실 바로 service에서 phone으로 notification을 못 날라니는 이유는 spam같은 문제 때문이라고 들었는데요, 여기서 궁금 한건 저 MPNS 저 놈은 과연 나중에도 문제가 없을까요? 저거 하나 망가지면 모든 서비스들이 중단 Orz...
게다가 저 Azure가 모든 서비스들에 대해서 처리가 가능 할 지도 궁금 -_-...