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

2016. 10. 7. 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에 무지한 상태에서 구글링만으로 앱 개발 및 포스팅이 진행됨


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


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