1)앱실행시 푸시솔루션으로 부터 푸시토큰이 생성됨.(최초한번 유니크한 푸시키)
2)웹소스상에서 이 푸시토큰을 가져와 사용자별로 db에 저장필요(로그인 인증처리시 해당사용자의 계정과 함께 저장)
3)해당사용자의 푸시토큰을 db에서 가져와 해당사용자에게 푸시발신
1)db 사용자 테이블에 푸시토큰 필드 생성필요
2)사용자 로그인시(인증완료시) 사용자테이블에 해당사용자로 푸시토큰을 저장시킴(update)
3)아래처럼 웹소스를 사용하여 푸시토큰을 가져올수 있음(어느 페이지에서든 사용가능)
// 앱단 메세지 핸들러 호출상태 체크 함수
function waitForCallHandler(callback_func, attempts = 0) {
if (window.webkit && window.webkit.messageHandlers) {
callback_func();
} else if (attempts < 100) { // 100회까지 시도
setTimeout(function() {
waitForCallHandler(callback_func, attempts + 1); // 시도 횟수를 증가
}, 100);
} else {
//console.log('waitForCallHandler: 최대 시도 횟수에 도달했습니다.');
}
}
//javascript 함수선언(푸시토큰을 받을수 있는 함수)
function get_pushid(pushid) {
//푸시토큰 확인(푸시토큰 저장처리등의 로직이 들어가면 됨)
alert(pushid); //푸시토큰 확인(테스트용)
}
//메세지 핸들러 호출함수
waitForCallHandler(function() {
window.webkit.messageHandlers.cordova_iab.postMessage(JSON.stringify({"action": "getpushid","callback": "get_pushid"}));
});
//참고사항)아래처럼 곧바로 로컬스토리지를 사용해 조회할수도 있으나,
//최초 한번 앱설치후 실행시엔, 약간의 지연시간이(수초내외) 생겨 가져오지 못할수 있음.
$(document).ready(function(){
//document.addEventListener("DOMContentLoaded", function(){
pushid = localStorage.getItem("pushid");
})
푸시발신 api는 HTTP API V1 방식으로 아래 구글가이드를 참고하세요. 구글가이드 : https://firebase.google.com/docs/cloud-messaging/migrate-v1?hl=ko
{
"message": {
"token": "cOvjRC7fR527RP....", //수신대상자의 푸시토큰(전체푸시발신은 topic 속성사용)
//"topic": "all", //전체푸시발신인경우 token 대신 사용(all 이외의 값 사용필요시 협의필요)
"notification": {
"title": "mstore 이벤트", //메세지 제목
"body": "mstore 이벤트가 진행 중입니다! 지금 확인하세요.", //메세지 내용
"image": "<https://mstore.co.kr/up/fa/a8easdfjVfMq8.jpeg>", //메세지와 함께 표시될 이미지 URL
},
"data": {
"title": "mstore 이벤트", //메세지 제목
"body": "mstore 이벤트가 진행 중입니다! 지금 확인하세요.", //메세지 내용
"image":"<https://mstore.co.kr/up/fa/a8e4VasiRMq8.jpeg>",//메세지와 함께 표시될 이미지 URL
"link": "<https://mstore.co.kr/st/3151/conveniences>" //연결될 링크url
},
"webpush": {
"fcm_options": {
"link": "<https://mstore.co.kr/st/3151/conveniences>" //연결될 링크url
}
},
"apns": {
"payload":{
"aps":{
"mutable-content" :1
}
},
"fcm_options": {
"image": "<https://mstore.co.kr/up/fa/a8e4V7HQ5jVfq8.jpeg>" //메세지와 함께 표시될 이미지 url
}
}
}
}
아래 샘플코드는 구글에서 제공되는 구버전인 HTTP API 방식의 javascript 예제코드로 현재 사용되지 않는 코드입니다.