Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Archives
Today
Total
관리 메뉴

개발자인생

iOS push for java 본문

IT/iOS

iOS push for java

정석봉 2016. 7. 7. 19:18

고생 고생 생고생해서 iOS push를 성공 시켰다... 


iOS push는 APNs를 이용하여 만들었다. 

jar 파을은 아래 javapns를 이용하였다. 


<dependency>

<groupId>com.github.fernandospr</groupId>

<artifactId>javapns-jdk16</artifactId>

<version>2.2.1</version>

</dependency>


메이븐에 추가를 하고 


try{

PushNotificationPayload payload = PushNotificationPayload.complex();

payload.addAlert("hi~ push");

payload.addBadge(1);

payload.addSound("default");


System.out.println(payload);


// payload, 인증서파일.p12, 인증서비빌번호, true/false, 디바이스 토큰값

// true : 실서버 gateway.push.apple.com

// false : 개발서버 gateway.sandbox.push.apple.com

PushedNotifications notice = Push.payload(payload, APNS_SSL_CERTIFICATE, APNS_SSL_CERTIFICATE_PWD, true, deviceToken);


System.out.println( "push 실패건수 :: " + notice.getFailedNotifications().size() );

System.out.println( "push 성공건수 :: " + notice.getSuccessfulNotifications().size() );


}catch(Exception e){

e.printStackTrace();

}


위와 같이 간단하게 자바로 생성하여 push를 발송 할수 있다. 

java에서는 인증서.p12 파일 인증서를 사용 함으로 iOS 개발자 분한테 인증서.p12 파일을 전달 받으면 된다. 


관련소스나 jar파을은 찾아보면 많이 존재를 한다. 


정상발송은되나 푸쉬가 오지 않을경우가 존재를 한다. 

이경우는 인증서.p12에 문제가 있어 발송 되지 않는다. ( jdk1.6에서는 정상 발송 될수도 있다.. )


iOS개발자한테 전달 받은 인증서 파일로 푸쉬가 발생이 되지 않을떄를 방법으로는 생성된 인증서.cer과 인증서.p12 파을을 함께 받아

openssl로 다시 인증서.p12 파을을 만들어주면 된다.

 

=======================================================================

#> openssl x509 -in aps.cer -inform DER -out aps_pro.pem -outform PEM


#> openssl pkcs12 -nocerts -in 인증서.p12 -out key.pem


#> openssl pkcs12 -export -inkey key.pem -in aps_pro.pem -out 최종인증서.p12

=======================================================================


이렇게 3번의 명령어로 새로운 인증서를 만들어주면 push가 발송된다. 


iOS push 인증서는  개발단 인증서와 실제 서버 인증서가 존재를 한다. 

aps_development.cer ( 개발 ), aps.cer ( 운영 ) 으로 나뉜다. 실서버인지 개발인지를 잘 확인하고 인증서를 만들면 된다. 

어차피 둘다 만들어야 함으로 만들때 2개다 만들면 된다. 





Comments