출처 : http://artyst.egloos.com/2652130

(2) 서버 소스코드


개발환경 : 자바(JAVA)

@ PHP 나 Objective C 는 다루는 곳이 많으므로 자바(JAVA) 로만 작성하도록 하겠다.


APNS 와 통신하려면 먼저 java에서 편리하게 이용할 수 있는 라이브러리를 다운로드 받자. http://code.google.com/p/javapns/ 에서 jar 파일을 다운로드 받을 수 있다.



그런데 이 API를 사용하기 위해서 필요한 라이브러리가 있다.


commons-lang-x.x.jar 가 없다면 org.apache.commons.lang.StringUtils 를 찾을 수 없다며 에러가 발생한다.

bcprov-ext-jdk16-xxx.jar 가 없다면 암호화관련 에러가 발생한다.


http://commons.apache.org/lang/ => apache

http://www.bouncycastle.org/ => 암호화 모듈


위의 사이트에서 각각 다운로드 받을 수 있다.


이제 서버에서 APNS로 메시지를 발송하는 JAVA 서버 프로바이저를 작성해보자.

deviceToken 에는 아이폰 클라이언트 어플에서 APNS 에 등록하고 나서 받은 토큰값을 넣어주자.

certificatePath 에는 인증서 경로와 파일명을 넣어주고, password에는 인증서를 추출할때 입력한 암호를 넣자.


import javapns.back.PushNotificationManager;

import javapns.back.SSLConnectionHelper;

import javapns.data.Device;

import javapns.data.PayLoad;


public class ApnsManager {

  public void provider() throws Exception {

    try {

      String deviceToken = "6a4aa1981062d0b8bxxbbaa3b6b0fdc275exyyx0f5dcac1ce101d314acca1a35";


      PayLoad payLoad = new PayLoad();

      payLoad.addAlert("알림 메시지 테스트");

      payLoad.addBadge(1);

      payLoad.addSound("default");

      PushNotificationManager pushManager = PushNotificationManager.getInstance();

      pushManager.addDevice("iPhone", deviceToken);

      //Connect to APNs

      String host = "gateway.sandbox.push.apple.com";

      int port = 2195;

      String certificatePath = "/work/project/apple-apns-key.p12";

      String certificatePassword = "인증서암호";

      pushManager.initializeConnection(host, port, certificatePath, certificatePassword, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);

      //Send Push

      Device client = pushManager.getDevice("iPhone");

      pushManager.sendNotification(client, payLoad);

      pushManager.stopConnection();


      pushManager.removeDevice("iPhone");

    }

    catch (Exception e) {

      e.printStackTrace(); 

    }

}



혹시 푸시알림을 제대로 받지 못했다면 아이폰의 설정을 살펴보자.



~ 끝 ~

+ Recent posts