ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • iOS - Remote Notification
    iOS 2020. 12. 14. 15:43

    Remote Notification

    Remote Notification의 또 다른 이름은 Pust Notification 줄여서 push라고 부르기도 함

     

    Remote Notification의 구현 방식은 대부분 Local Notification과 비슷하다

     

    UserNotification freamwork를 사용해서 권한을 요청하는 부분도 동일하고 delegate 구현 패턴도 동일하다

     

    사용자 입장에서는 Local Notification과 Remote Notification의 차이가 없다. 표시되는 UI도 동일하고 상호작용 방식도 동일하다

     

    하지만 원격서버에서 전달되기 때문에 차이점도 있다.

     

    먼저 Remote Notification을 실제로 전달하는 서버는 애플이 관리하는 서버(APNs)

     

    APNs 로 Remote Notification 요청을 전달하는 서버를 Provider 서버라고 부른다 (직접 구현해야 함)

     

      * 직접 서버를 구축할 수도 있고 클라우드를 사용할 수도 있는데 여기서는 ms의 azure를 사용해서 실습

     

    Provider에서 json으로 필요한 정보를 구성하여 APNs로 전달한다. 여기서 json으로 전달한 정보를 playload라고 부른다.

     

    APNs는 playload가 포함된 요청을 받으면 device로 Notification 을 전달한다.

     

    네트워크를 통해 전달되기 때문에 local Notification과 달리 지연되거나 아예 전달되지 않을 수도 있다.

     

    또한 device가 꺼져있다면 전달되지 않는다.

     

    APNs는 디바이스의 상태를 확인하고, 전원이 꺼져있거나 네트워크에 연결되어 있지 않다면 대기목록에 저장했다가

     

    약간의 시차를 두고 다시 전달한다. 대기목록에 이미 저장된 항목이 있다면 가장 최근 항목으로 대체하고 이전항목은 삭제한다.

     

    대기시간이 길어진다면 전부 삭제를 한다. 

     

    그래서 전송률이 100프로가 아니라는 점과 지연이 발생할 수 있따는 점을 감안해서 구현해야 한다.

     

    Local Notification은 사용자에게 권한을 획득하는 것으로 초기화가 완료되는데 Remote Notification은 몇가지 작업이 더 필요하다.

     

    프로비저닝 포털(?) 에서 앱 아이디를 만든다음 인증서를 생성하고 프로젝트에서 Remote Notification을 사용하도록 설정해야 한다.

     

    그리고 사용자에게 권한을 얻은 다음, APNs 에 디바이스를 등록하고 토큰을 발급받는 과정과 프로바이더로 토큰을 전송하는 과정이

     

    추가되어야 한다. 토큰은 APNs가 디바이스를 구분하기 위해 사용한다.

     


    실습을 위해서는 몇가지 준비사항이 있다

     

    1. apple developer program에 가입

     

    2. 개발자 계정을 xcode와 연동

     

    3. microsoft azure가입, 평가판 계정등록

     

    4. acutal ios devices 등록 (simulator는 push를 받을 수가 없기때문에)

     

     

     

     

     

    인증서를 발급받았으면 애플 개발자에 로그인해서 push 인증서를 발급받아야 한다.

     

     

    ?????? 뭐지 왜 접근이 안되는거지??? 

     

    -> 오우쒰 애플 개발자 계정 만들어서 등록하면 년 99달러 내야된다고라??

    'iOS' 카테고리의 다른 글

    ios - tableView  (0) 2020.12.14
    iOS - Password AutoFill  (0) 2020.12.14
    iOS - Local Notification  (0) 2020.12.14
    iOS - textView  (0) 2020.12.14
    iOS - Button  (0) 2020.12.11

    댓글

Designed by Tistory.