안드로이드에서도 포함될 자바스크립트 파일은 두개가 된다.
두개의 js 파일은 아래와 같이 포함되게 된다.
<script type="text/javascript" charset="utf-8" src="cordova_android.js"></script> <script type="text/javascript" charset="utf-8" src="PushNotification.js"></script>
페이지가 로딩이 되면.. 다음과 같이 우선 푸쉬서버에 등록을 진행한다.
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
// 푸쉬 서비스에 등록하는 부분임.
var pushNotification = window.plugins.pushNotification;
if (device.platform == 'android' || device.platform == 'Android') {
// 안드로이드 푸쉬 등록
pushNotification.register(successHandler, errorHandler,{"senderID" : "123456789012" , "ecb" : "onNotificationGCM"});
} else {
// 아이폰 푸쉬 등록
pushNotification.register(tokenHandler, errorHandler,{"badge" : "true" , "sound" : "true" , "alert" : "true" , "ecb" : "onNotificationAPN"});
}
}
위에 진하게 표시된 안드로이드 푸쉬등록 코드를 살펴보자.
register 함수를 통해서 successHandler 와 errorHandler 를 등록하고 옵션으로 배열을 넘겼다.
뒷부분의 옵션은 다음과 같다.
senderID : 안드로이드 개발지원센터에서 GCM 신청하고 발급받은 send_id
이 값을 발급받는 방법은 아래의 링크를 참조하자.
ecb : 푸쉬 이벤트 받을 함수명 지정
앞서 iOS 에서는 tokenHandler 함수에서 파라메터로 device token 이 넘어왔었지만, 안드로이드는 ecb 에서 지정한 함수에서 모든 처리가 이루어진다. ecb에서 지정한 함수인 onNotificationGCM 함수를 살펴보자
함수 파라메터로 넘어오는 이벤트 메시지를 통해서 처리해야 될 동작을 지정할 수 있다.
// Android 푸쉬 관련 이벤트
function onNotificationGCM(e) {
switch( e.event )
{
case 'registered':
if ( e.regid.length > 0 )
{
// GCM에 등록된 단말기의 registrationID 값이 넘어온다!!
// 여기에서 서버로 e.regid 를 전송하여 저장해 두어야 서버에서 푸쉬발송이 가능하다.
console.log("regid = " + e.regid);
}
break;
case 'message':
// 서버에서 푸쉬 메시지가 도착한 경우에 호출된다.
if (e.foreground)
{
// 앱이 현재 실행중인 상태이다!!
// 사운드로 푸쉬메시지가 왔음을 알리자!!
//var my_media = new Media("/android_asset/www/"+e.soundname);
//my_media.play();
}
else
{
// 상태바에서 사용자가 클릭해서 앱이 실행되는 경우.
if (e.coldstart) {
// 앱이 새로 구동되는 경우의 처리
} else {
// 앱이 백그라운드에서 실행되고 있을때의 처리
}
}
console.log("msg : " + e.payload.message);
console.log("msg count : " + e.payload.msgcnt);
break;
case 'error':
// 에러 발생
console.log("Error = " + e.msg);
break;
default:
// 알수없는 메시지.. 무시하자!
break;
}
}
안드로이드는 iOS 처럼 뱃지를 설정하는 기능은 없지만.. 메시지 도착시의 다양한 상황에 따른 액션을 지정할 수 있다.
세가지 경우를 생각해 볼수 있다.
1. 앱이 현재 화면상에 실행중인 경우
2. 앱이 백그라운드에서 실행중인 경우
3. 앱이 실행되지 않고 있는 경우
phonegap 3.5 에서 푸쉬(Push Notification) 적용하기 - 4. 서버 작성 (Android) (0) | 2014.07.13 |
---|---|
phonegap 3.5 에서 푸쉬(Push Notification) 적용하기 - 4. 서버 작성 (iOS) (0) | 2014.07.12 |
phonegap 3.5 에서 푸쉬(Push Notification) 적용하기 - 3. 클라이언트 작성 (iOS) (0) | 2014.07.09 |
phonegap 3.5 에서 푸쉬(Push Notification) 적용하기 - 2.아이폰 인증서 받기 2/2 (0) | 2014.07.08 |
phonegap 3.5 에서 푸쉬(Push Notification) 적용하기 - 2.아이폰 인증서 받기 1/2 (0) | 2014.07.08 |