Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Tomcat
- WebView
- iphone
- jsp
- 이클립스
- spring
- MySQL
- Memory
- encoding
- 티스토리 초대장
- ios
- HTML
- XML
- java
- 톰켓
- 티스토리 초대
- udp
- 한글
- C#
- jQuery
- permgen space
- Android
- JavaScript
- 메모리
- Eclipse
- Database
- UIWebView
- ipad
- Objective C
- 인코딩
Archives
- Today
- Total
suroMind
[iPhone] APNS 서버단 PHP 코드 본문
먼저 키체인에서 해당 인증서를 이용해 .p12파일로 내보내기를 하여야 합니다.
PUSH인증서를 마우스 오른쪽 클릭하여 내보내기 합니다. (ex : cert.p12)
그리고 PUSH인증서에 물려있는 개인키 또한 내보내기 합니다. (ex : key.p12)
터미널을 열어서 2개의 파일이 있는 곳으로 이동하여 아래는 명령어를 입력합니다.
openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12
openssl pkcs12 -nocerts -out key.pem -in key.p12
openssl rsa -in key.pem -out key.unencrypted.pem
cat cert.pem key.unencrypted.pem > ck.pem
이렇게 하면 최종 산출물인 ck.pem 파일이 생성됩니다.
이 하나의 파일을 서버에 업로드 하면 됩니다.
아래는 서버단의 PHP소스 코드 입니다. 간단하게 인터넷에 널린 소스로 작성해 봤습니다.
<?php
$pass = 'C:\\APM_Setup\\htdocs\\ck.pem'; // 파일 경로
$token64 = '0fb09763c1278d20ec92045321501130fe16963728ecf98f3201b9c651e9a047'; // 테스트할 토큰..
// The actual notification payload
$body = array();
$body['aps'] = array('alert' => 'Message received from Bob');// 보낼 메세지
/* End of Configurable Items */
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $pass);
$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
if (!$fp) {
echo "Failed to connect $err $errstr\n";
return;
}
$payload = json_encode($body);
// Thank you to the Perl example
$msg = chr(0).pack("n",32).pack('H*',$token64).pack("n",strlen($payload)).$payload;
fwrite($fp, $msg);
fclose($fp);
echo $err." bbbb<br/>";
echo $errstr." cccc";
?>
파일경로와 토큰만 제대로 써주시면 테스트하는데는 무리 없으리라 봅니다.
위와 같은 소스가 인터넷에 널려있는데.. 아무리 해도 안되길래..
$msg 쪽을 계속 바꿔봤더니 되더군요.. 소스마다 조금씩 틀리더군요..
그리고 php의 경우 openssl을 사용할 수 있도록 PHP에 설정을 해야합니다.
apmsetup의 경우 php확장 탭에 php_openssl.dll을 체크해주시고 restart 해주시면 됩니다.
리눅스 쪽은 찾아보진 않았지만 수정하면 되겠죵?ㅋ 참고하세요
'IT분야 > iOS' 카테고리의 다른 글
[iPhone]아이폰/아이패드 배포시 이미지 (0) | 2011.05.17 |
---|---|
[iPhone] UIWebView bounce 없애기 (0) | 2011.05.09 |
[iPhone] 로그 남기기, Debug Release 구분하여 찍기 (0) | 2011.03.24 |
[iPhone] 네트워크 연결 상태 체크 (0) | 2011.03.24 |
[iPhone]JSON 사용하기 (2) | 2011.03.24 |
Comments