ios | ios도 모르고 하이브리드 앱 개발하기 [ 21.2 APNS 구현 - APNS 서버 만들기 (프로바이더 구성) ]

2016.10.07 10:48mobile/ios



ios도 모르고 하이브리드 앱 개발하기 [ 21.2 APNS 구현 - APNS 서버 만들기 (프로바이더 구성) ]






필자는 APNS를 선행작업을 제외한 3단계로 구분하여 포스팅 할 계획이다.

21.1 APNS 구현 - APNS 인증서 만들기

21.2 APNS 구현 - APNS 서버 만들기 (프로바이더 구성)

21.3 APNS 구현 - APNS 클라이언트 만들기 (IOS 구성)




APNS 를 사용할 서버를 만들어 보자.


서버는 JSP 기반의 Dynamic Web Project 로 구성한다.


Dynamic Web Project 를 구성하는 방법은 아래 포스팅정보들을 참고한다.

ios | ios도 모르고 하이브리드 앱 개발하기 [ 3.1 Mac 에 Java 설치 / jdk 설치 ]

ios | ios도 모르고 하이브리드 개발하기 [ 3.2 Mac 에 eclipse 설치 / 이클립스 설치 ]

ios | ios도 모르고 하이브리드 개발하기 [ 3.3 Mac 에 Tomcat 설치 / 톰캣 설치 ]

ios | ios도 모르고 하이브리드 개발하기 [ 4.1 eclipse에서 tomcat 생성 / 서버생성 ]

ios | ios도 모르고 하이브리드 개발하기 [ 4.2 eclipse에서 webproject 생성 / dynamic web project / jsp ]







가장 먼저 해야할 일은 다음 파일들을 다운받는다.

javapns-jdk15-165.jar 가 엄청 예전 라이브러리더군요...

그래서 javapns-jdk16-2.2.1 버전으로 버전업 하고 소스도 수정합니다.

스크린샷은 수정하지 못했으니 ㅠㅠ 참고하시기 바랍니다.

bcprov-jdk16-146.jar

commons-io-2.0.1.jar

commons-lang.jar

commons-lang3-3.0-beta-javadoc.jar

commons-lang3-3.0-beta-sources.jar

commons-lang3-3.0-beta.jar

javapns-jdk16-2.2.1.jar

log4j-1.2.16.jar



다운받은 파일을 아래 경로에 복사한다.

Project > WebContent > WEB-INF > lib




Project > WebContent 하위에 iosApns.jsp 파일을 생성한다.




iosApns.jsp 파일

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="javapns.devices.Device" %>
<%@ page import="javapns.devices.implementations.basic.BasicDevice" %>
<%@ page import="javapns.notification.AppleNotificationServerBasicImpl" %>
<%@ page import="javapns.notification.PushNotificationManager" %>
<%@ page import="javapns.notification.PushNotificationPayload" %>
<%@ page import="javapns.notification.PushedNotification" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
 
<%
boolean devFlag = true// 개발 환경 플래그
 
System.out.println("========== START ==========");
 
// 토큰 번호
String deviceToken = "";
// host
String host = "";
// Push Notification 인증서 위치 (바탕화면)
String certificatePath = "";
 
if(devFlag){ // 개발
    host = "gateway.sandbox.push.apple.com";
    certificatePath = "/Users/test/desktop/apnsDev.p12"// Push Notification 인증서 위치 (바탕화면)
}else// 운영
    host = "gateway.push.apple.com";
    certificatePath = "/Users/test/desktop/apnsReal.p12"// Push Notification 인증서 위치 (바탕화면)
}
 
//Connect to apns
 
int port = 2195;
String certificatePassword = ""// 인증서 암호
 
PushNotificationManager manager = new PushNotificationManager();
manager.initializeConnection(new AppleNotificationServerBasicImpl(certificatePath, certificatePassword,"PKCS12",host,port));
 
PushNotificationPayload payLoad = new PushNotificationPayload();
payLoad.addBadge(1);
payLoad.addSound("default");
payLoad.addAlert("테스트 입니다."); // 아이폰에 보낼 메세지
Device device = new BasicDevice();
device.setToken(deviceToken);
PushedNotification notification = manager.sendNotification(device, payLoad);
boolean result = notification.isSuccessful();
 
System.out.println("========== END ==========");
%>
 
<body>
    apns
</body>
</html>
cs


17# : 개발환경인지 배포환경인지 구분하는 플래그

22# : 테스트 디바이스의 토큰을 입력한다. (클라이언트 부분에서 획득함)

30#, 33# : 인증서 경로

39# : 인증서 암호


위 4부분만 상황에 맞게 변경해주면 끝

 




http://localhost:8080/IOSweb/iosApns.jsp 를 호출해보자.


오류가 없다면 정상이다.



Received fatal alert: certificate_unknown 애러를 만날 수 도 있다.

그럴 땐 아래 포스팅 참고, 지금 미리 봐두는것도 나쁘지 않음 ^^

ios도 모르고 하이브리드 앱 개발하기 [ 21.3 APNS 구현 - Received fatal alert: certificate_unknown 오류  ]


 

 

 



 * 경고


IOS에 무지한 상태에서 구글링만으로 앱 개발 및 포스팅이 진행됨


누구나 따라할 수 있겠지만 결코 완벽한 정답이 아닐 수 있음


아주 주관적인 입장에서의 포스팅임



'mobile > ios' 카테고리의 다른 글

ios | ios도 모르고 하이브리드 앱 개발하기 [ 25 ERROR ITMS-4238 ]  (4) 2016.10.11
ios | ios도 모르고 하이브리드 앱 개발하기 [ 24 ERROR ITMS-90096 ]  (0) 2016.10.11
ios | ios도 모르고 하이브리드 앱 개발하기 [ 23 앱 배포하기 / 앱스토어에 등록 / Xcode로 앱 배포하기 ]  (0) 2016.10.11
ios | ios도 모르고 하이브리드 앱 개발하기 [ 22 APNS 구현 - Received fatal alert: certificate_unknown 오류 ]  (0) 2016.10.07
ios | ios도 모르고 하이브리드 앱 개발하기 [ 21.3 APNS 구현 - APNS 클라이언트 만들기 (IOS 구성) ]  (8) 2016.10.07
ios | ios도 모르고 하이브리드 앱 개발하기 [ 21.2 APNS 구현 - APNS 서버 만들기 (프로바이더 구성) ]  (4) 2016.10.07
ios | ios도 모르고 하이브리드 앱 개발하기 [ 21.1 APNS 구현 - APNS 인증서 만들기 ]  (0) 2016.10.07
ios | ios도 모르고 하이브리드 앱 개발하기 [ 20 키체인에서 인증서는 언제 유효해 질까? ]  (0) 2016.10.07
ios | ios도 모르고 하이브리드 앱 개발하기 [ 19 Provisioning 설정 후 Unable to install "project name" 에러 ]  (0) 2016.10.07
ios | ios도 모르고 하이브리드 앱 개발하기 [ 18 아이폰으로 테스트 하기 / Xcode에 아이폰 연결 / 디바이스 테스트 ]  (6) 2016.10.04
ios | ios도 모르고 하이브리드 앱 개발하기 [ 17 아이폰 해상도별 storyboard 설정 / 디바이스 해상도 설정 ]  (0) 2016.10.04
  • 프로필사진
    2017.04.04 22:09

    비밀댓글입니다

    • 프로필사진
      Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS2017.04.05 09:18 신고

      선생님 덕분에 암것도 모르는 제가 간단한 앱을 하나 만들었습니다. 감사드립니다.
      푸시테스트를 진행하면서 잘 따라 오다가
      아래의 부분에서 막혀버렸습니다.
      조금만 상세히 설명해 주시면 안될까요?
      부탁드립니다.

      17# : 개발환경인지 배포환경인지 구분하는 플래그
      22# : 테스트 디바이스의 토큰을 입력한다. (클라이언트 부분에서 획득함)
      30#, 33# : 인증서 경로

      ==================================================
      답변드립니다.

      17# : apns push 서버는 개발용과 운영용으로 나누어져있고 인증서 역시 나누어져 있습니다. 이를 구분하기 위한 플래그이며 배포 시 해당 플래그를 false 로 변경하여 운영용 host와 인증서 주소를 획득하도록 합니다.

      22# : 아이폰에서 획득한 토큰값을 입력합니다.

      30#, 33# : 앞선 강좌에서 만든 인증서가 pc 상에 어디에 위치하고 있는지 그 경로 및 인증서 명을 적어주시면 됩니다.

      즐거운 개발하시고 더 궁금한 사항은 언제든지 물어봐 주시면 제가 알고있는 내에서 설명드리겠습니다 ^^

  • 프로필사진
    2017.04.06 18:41

    비밀댓글입니다