BLOG main image
LEEEJONG (165)
IT (53)
주관적평가 (31)
창작공간 (80)
109,971 Visitors up to today!
Today 5 hit, Yesterday 57 hit
daisy rss
tistory 티스토리 가입하기!
2017.01.23 15:44

최근 서비스 앱을 개발하며 푸시서버를 새로 만들게 되었다.


기존 푸시서버는 PHP 5.4 기반의 어드민툴 서버에서 작성되었기 때문에


몇가지 한계를 갖고 있었다.




첫번째 문제는 기존 APNS 푸시 라이브러리가 보낼수 있는 한글 길이가 무지 짧다는거다.


아래 소스는 내가 원래 쓰던 푸시서버 소스다


function sendMessage( $ssn, $deviceToken, $message ) {
    $payloadFormat = array(
      'aps' => array(
        'alert' => array(
          'title' => $message["title"]
        ),
      ),
      "msg" => $message["msg"],
      "category" => $message["category"],
      "img" => '',
      "link" => $message["link"],
    );

    $payload = json_encode( $payloadFormat );
    $streamContext = stream_context_create();
    stream_context_set_option( $streamContext, 'ssl', 'local_cert', $this->apnsCert[$this->isDev][$ssn] );

    $apns = stream_socket_client( 'ssl://'.$this->apnsHost[$this->isDev].':2195', $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext );

    if ( $apns ) {
      $apnsMessage = chr( 0 ).chr( 0 ).chr( 32 ).pack( 'H*', str_replace( ' ', '', $deviceToken ) ).chr( 0 ).chr( strlen( $payload ) ).$payload;
      fwrite( $apns, $apnsMessage );
      fclose( $apns );
      return true;
    }
    else {
      error( $errorString );
    }
  }



> http://stackoverflow.com/questions/34684099/new-apns-provider-api-and-php






우리 SE의 말> .. APNS2 사용하려면 결국 http2 프로토콜을 써야 하는건데.. 이거 php5.5.24 이상 버전에 curl, openssl 둘다 버전이 올라가야 하는거네요;;

혹시이거..  해당 서버에서  하셔야 하는건가요..?


-----------------------------------------------------------------------------------


여기까지쓰고 글을 더 안썼네


여튼 이걸 해결하기 위해 OS 단계에서 curl, openssl 최신버전이 필요했는데


회사에서 운용중인 OS 이미지에 해당 버전이 적용되어있지 않아서

서버 업데이트로 해당사항을 구현하는데 실패했다.




그래서 Node로 짜보자 하고 구현해보니

node-apn, node-fcm 두가지 패키지를 이용함으로서 간단하게 구현이 가능했다.



구조는 위 사진과 같다.


여튼 이런식으로 푸시 메시지 예약전송 시스템을 구현했다.


이상 전달끝.


Name
Password
Homepage
Secret

티스토리 툴바