출처 : http://blog.naver.com/biboi99/90108496796
오늘은 푸시서버를 구현해보도록 할께요
카카오톡이나 많은 SNS서비스를 제공하는 앱들이 해당 기능을 활용하여 통신을 하고 있죠?
간단할 것 같지만, 막상 해보면 어디서 시작해서 어떤 방식으로 구현을 해야하는지 막막할 수 있어요
저 또한 그랬고 그래서 많은 서핑들을 하게 되는데,
항상 뭔가 아쉽더라구요.
너무 쉬워서 생략해놓은 곳도 있고 기본이라고 생각하고 그냥 언급하지 않은 내용들 때문에
하나 성공하고 나면 결국 다른걸로 막혀서 또 검색하고,,, 그걸 반복하면. 반나절이 지나가더라구요
저 처럼 헤매실 분들을 위하여 정리해보아요~
"렘군와 함께하는 푸시서버 만들기"
자~ 한 시간만 따라하면 아이폰으로 "Hello World" 메세지가 뜰 수 있어요~
대신 엄청 집중하셔야 되요~
깔끔하게 Action위주로 정리해서 알려드릴께요
(참고로 APNS는 시뮬레이터에서는 테스트 불가능,개발자라이센스 보유하여야 아이폰장비에서 테스트가능)
가정1 : Provisioning Portal 에서 Certificates, Devices 등록되어 있다는 가정 만약 안되어 있다면 -> http://artyst.egloos.com/2650529 참고 (보노님 블로그)
<가정1 요약> 1. App IDs 등록 일단, APNS 테스트를 위해서 App등록부터 해야되요. 아직 프로젝트 진행은 아니고 테스트단계니까 일단 편하게 이름짓자구요. 저는 APNS로 일단 등록했어요 어디서 하는지 알죠? developer.apple.com 사이트 > member center > provision Portal 접속 > App IDs
2. Provisioning 생성 프로비저닝 명 정해주고, 인증서 선택하고, 1번에서 만든 App ID 선택하고 Devices 선택해주면되죠
|
가정2 : APNS SSL Certificate 발급 받고 xCode 프로젝트속성에 설정 잡았다는 가정 만약 안되어 있다면 -> http://artyst.egloos.com/2652130 참고 (보노님 블로그)
<가정2 요약> 1. 푸시 가능 SSL Certificate 를 받아야되요 <- 이게 제일 중요~!! 어플 여러개 개발해봤지만, 여기 숨어있으리라곤 생각못했어요 App IDs 로 가셔서 APNS 앱 오른쪽에 Configure 클릭 > Enable for Apple Push Notification Service 선택 > Done 버튼 클릭 -> 이때, 패스워드 설정하실 꺼에요 나중에 서버구현시 필요하니까. 꼭 적어놓으세요
2. Download 해서 SSL Certificate 를 내려받기 (푸시기능이 되는 프로비져닝이죠)
3. xCode 새 프로젝트 생성 > 프로젝트속성에서 code sign 프로비져닝 선택하기
4. 운영서버 구현 1) APNS 보안통신할 때 사용할 인증서 추출해서 웹서버 특정 폴더에 밑에 복사하기 <- 아주 중요 (복사방법은 위에 보노님블로그에 기설명됨) 2) 톰캣 서버 구성 (프로젝트 생성 및 코딩)
5. 클라이언트 구현
|
1,2,3번까지는 대부분 순조롭게 진행되실꺼구요
4 번 5번은 좀더 구체적으로 들어가볼게요~
4. 운영서버 구현
<사전준비물>
1) 자바 jdk 1.6 설치 : http://www.oracle.com/technetwork/java/javase/downloads/index.html 2) 이클립스 설치 : http://eclipse.org/downloads/ 3) 톰캣 설치 : http://tomcat.apache.org/ (6버전) 4) 이클립스 톰캣 플러그인 설치(option) : http://www.eclipsetotale.com/tomcatPlugin.html
이클립스 톰캣 설정 방법은 검색을 통해 진행하세요 http://blog.naver.com/ssari93/130086724100 (소토로님 블로그) http://blog.naver.com/ssari93/130086768842 (소토로님 블로그)
|
<프로젝트 생성>
1) APNS 라는 이름으로 톰캣 프로젝트 생성하구요, 경로는 이클립스 workspace 밑에 둡니다. 2) 톰캣 실행시 해당 경로를 홈으로 잡혀야겠죠? 톰캣이 설치되어 있는 폴더 주소(기본)를 아래와 같이 따라가보시면 아무것도 없을 수 있는데요 C:\Tomcat 6.0\conf\Catalina\localhost 여기에 아래의 내용을 담아 프로젝트명.xml 파일을 만들어 주세요 (ex apns.xml) (톰캣프로젝트 생성하면 자동으로 생성되는 경우도 있음) <Context path="/apns" reloadable="true" docBase="E:\eclipse\workspace\apns" workDir="E:\eclipse\workspace\apns\work" /> 이게 없으면 http://localhost:8080/apns/index.jsp 이렇게 호출 했을 때 해당 프로젝트를 정확히 인식할 수 없어요
3) 톰캣 프로젝트 바로 아래에 index.jsp 파일 하나 생성해주시구요 Hello world 적고 출력해보세요 http://localhost:8080/apns/index.jsp (포트는 톰캣 server.xml 설정에 따라 달라 질 수 있어요) 이게 제대로 나온다면 이제 코딩들어가죠
4) 첨부파일 다운로드 받아서 압축을 풀면 lib 폴더가 나오는데, 해당 폴더 아래의 내용들을 eclipse\workspace\apns\WEB-INF\lib 폴더에 copy 해주세요 APNS서버 구성을 위해 필요한 라이브러리들입니다. (개별로 서핑해서 찾으실려면 고생하실까봐 첨부했어요) javapns
|
<index.jsp 코딩>
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%
String deviceToken = "4a525b59 273042ce ba95afae eb09db8f 2782ed06 cb5370b9 a57c02d1 fd6cf11d"; //토큰 번호는 아이폰 클라이언트 구현 후 디버그 모드로 출력하면 알 수 있어요. 아래 5번 클라이언트구현 글 참고
PayLoad payLoad = new PayLoad(); payLoad.addAlert("hello kim, 반가워~!!"); // 아이폰에 통지 보낼 메세지 내용입니다.
String certificatePassword = "APNS인증서 패스워드"; // 위에 가정2 1번 부분에 설명한 패스워드에요 pushManager.initializeConnection(host, port, certificatePath, certificatePassword, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12); pushManager.sendNotification(client, payLoad); pushManager.stopConnection(); pushManager.removeDevice("iPhone");
please wait ...!
|
(빨간 색 부분만 변경하시면되요)
5. 클라이언트 구현
아이군님의 블로그에 설명이 너무나 잘 되어 있어서 링크 걸어요 http://theeye.pe.kr/entry/how-to-programming-push-notification-on-my-iphone-with-javapns
<내용 요약> APNS 관련 함수들 몇가지면 수정해주시면되요 - (void)application:(UIApplication *)application
- (void)application:(UIApplication *)application
- (BOOL)application:(UIApplication *)application
|
일단, 구현은 다 되었네요. 테스트를 해봐야 하는데요
<테스트방법> 1. 맥북에 아이폰 연결 후 실행모드(Device) 변경 해서 실행 (폰에 설치되고 실행됩니다. 화면에는 회색 화면만 뜨겠죠) 2. http://localhost:8080/apns/index.jsp pc 브라우저에 해당 페이지 호출 3. 몇 초 후 아이폰에 푸시메시지 들어옴 확인 어플이 실행중이지 않을 경우 닫기/보기 버튼 중 보기버튼을 누르면 해당 어플이 뜹니다.
|
메세지가 잘 들어왔나요?
한번만에 되신 분은 정말... 존경~!!
저는 톰캣 설정하는 것부터 오랫만에 해보는 거라 많이 헤맸거든요 ^^;
처음부터 다시 꼼꼼히 살펴보시면~~~ 되실거에요
일단, 무작정 따라하기로 통보는 정상적으로 들어왔네요~!
이제 앞으로 몇가지 응용을 더 해봐야겠죠?
특정인에게만 통보 하기~
통보 받은 걸 화면에 대화창에 보여주기~
메신저 비스무리해보이는 어플 만들어보기~
완성되는 대로 포스팅할께요~~!!
긴글 읽어주셔서 감사합니다.
'Developer > iOS' 카테고리의 다른 글
NSNumber 활용법 (2) | 2011.05.24 |
---|---|
[IPhone] 현재화면 캡쳐하기 (1) | 2011.05.24 |
[IPhone] String -> MD5(암호) 변환 샘플 (3) | 2011.03.21 |
[IPhone]코드로 버튼 추가하기. (1) | 2011.03.21 |
[IPhone]UIBarButtonItem에 Custom Button으로 Image로 바꾸기 (0) | 2011.01.24 |