🔅들어가기
Ios Push 동작 원리에 관한 그림을 찾다가 제일 직관적인 그림을 찾았다. Ios Push 는 어떻게 동작을 할까? 일단 카카오톡에서 나에게 메시지 보내기를 예로들어보자. 카카오톡으로 친구에게 카톡을 보내면 상대방은 push 알림 허용을 해놓았다면, push 알림 메시지를 받을 수 있다. 나에게 메시지를 보내기 기능도 있던데, 나에게 메시지를 보내면 나에게도 push가 올 것이다. (직접 해보지는 않았다. Ios push 개념을 위한 상황연출이다.)
🔅준비물
푸시를 발송하기 위한 준비물이 필요하다. 필요한 준비물은 아래와 같다.
1. 아이폰
2.카톡 또는 푸시기능이 있는 앱
3. 애플회사가 구축해 놓은 서버
4. 내가 만든 서버 또는 구글 등 다른 기업이 만든 서버
5.인증서,프로파일
🔅준비물 설명
1번 아이폰과 2번 푸시 기능이 있는 앱은 따로 설명하지 않는다. 3번 애플회사가 구축해 놓은 서버는 어려운말로 APNS SERVER 라고 부른다. 줄여서 APNS 라고도 말하고, 종종 애플 푸시 서버라고 말하는 사람도 있다. 그럴땐 아 애플에서 구축해 놓은 서버구나 라고 생각하면된다. 2번은 내가 만들 서버이다. 스프링으로 구현해 놓은 서버일 수도 있고, PHP, NODE JS로 구축해 놓은 서버 일 수 도 있다. 일단 요청을 받고 응답을 할 수 있고, 요청을 하고 응답을 받을 수도 있으면 되는 서버이다. 그리고 구글에서 제공하는 Firebase 서버도 빌려서 사용 할 수 있다. 5번은 push 보낼때 필요한 파일이다.
🔅개발순서
몽실이가 푸시기능이 있는 어플을 개발해서 직접 테스트 할려고 한다. 어떻게 하는것이 가장 좋을까? 순서는 아래와 같다.
1.애플 개발자 계정을 생성한다. (1년에 12만원정도 한다.
2.자신의 맥북에서 키를 생성하고 이것을 이용해서 애플 개발자 사이트에서 푸시인증서를 생성한다.
3.푸시 인증서로 푸시 프로비저닝 프로파일을 생성한다.
4.위에서 만든 파일을 xcode에 잘 import 해준다.
5.푸시기능을 개발한다.
6.푸시를 보낼 나의 서버를 구축한다.
7.나의 서버에 위에서 만든 푸시 인증서를 p12 또는 p8로 만들어서 특정경로에 위치 시킨다.
8.나의 서버에 4번에서 개발한 푸시 요청을 받을 Controller와 Service 등(스프링 기준)을 만들어 준다.
9.나의 서버에 애플 서버로 요청을 해줄 HTTP 통신 모듈도 만들어 준다.
이정도가 몽실이가 푸시기능을 이용하기 위해서 해야될 일이다. 구체적이지 않지만 핵심내용이 담겨있다.
🔅Ios Push 작동원리
1.몽실이가 앱을 동작시킨다.(애플서버에 요청보내는 로직이 있다고 가정)
2.IOS 앱이 애플 서버로 HTTP 요청을 보낸다.(토큰이라는 데이터를 요청한다. 토큰 주세요.)
3.애플 서버는 인증서, 프로파일 등 인증정보를 토대로 인증을 한 후 토큰을 응답해준다.
4.몽실이의 앱은 몽실이가 만든 서버에 방금 받은 토큰값과 메시지를 POST 방식으로 요청한다.
(POST든 GET이든, 상황에 맞게 요청하면 된다. )
5.몽실이가 만든서버는 POST 요청을 받아서, 그 내용을 조금 가공한 뒤 애플서버로 요청을 한다.
6.애플 서버는 토큰을 확인하고 토큰의 주인에 해당하는 아이폰 기기에 메시지를 전달해준다.
간단하게 표시하자면 아래와 같다.
몽실이 앱 - > 애플서버(토큰교환) -> 앱-> 나의서버(메시시 전달자) -> 애플서버(메시지 진짜 발송자)-> 몽실이 앱
만약에 토큰을 다른사람의 토큰을 찾아서 애플서버로 전달하면 애플서버는 그 토큰을 가진 아이폰에게 메시지를 보내준다.
🔅맺으며
이번 포스팅에서는 Ios push가 어떤 방식으로 작동되는지 알아보았다. ios push 기능이 여러 서버가 맞물려 있고, 인증서, 프로파일등 준비해야될 인증 파일들도 많아서 복잡하고 그림이 안그려질 수 도 있는데, 이번 포스팅을 통해서 그림을 그리는데 조금이라도 도움이 되었으면 좋겠다. 보통 개인이 작게 사이드 프로젝트 할때는 내가 직접 푸시 서버를 구축하기 보다는 대기업에서 만들어 놓은 푸시서버를 가져다 쓰는 경우가 많다. 대표적인 서버가 Firebase 푸시 서버인데, 아래 포스팅에서 Firebase 푸시서버를 이용해서 간단히 푸시보내는 방법을 작성해 놓았다. 구현해 보고 싶은 사람은 참고하면 도움이 될 수도 있을 것 같다.
'아이폰 개발 > ios 개념&튜토리얼' 카테고리의 다른 글
ios CollectionView 예제 - 프로젝트 생성 (0) | 2020.12.09 |
---|---|
IOS - Adhoc 배포하기(웹에서 IOS 테스트 앱 다운 설치) (0) | 2020.12.04 |
IOS NSURLSession으로 Get 요청 Post 요청 - 구현 (0) | 2020.12.03 |
IOS NSURLSession으로 Get 요청 Post 요청하기 - 개념 (0) | 2020.12.02 |
코어 블루투스 - IOS Core Bluetooth (0) | 2020.10.25 |