
1)푸시 허용/거부 상태값을 조회할 수 있음.
2)푸시 허용/거부 설정 웹화면에서 호출하여 변경할수 있음.
1)앱단에서의 푸시수신 허용/거부 처리는 “푸시서버”의 api를 사용하여 수신 허용/거부 처리하는것임.
2)디바이스 os설정 화면의 알림설정값을 앱단에선 강제 변경 할 수 없음.
3)아이폰의 경우처럼 최초 푸시알림 권한사용을 거부한상태에서... 푸시 허용/거부 설정화면에서 허용시엔 디바이스 설정화면으로 이동하여 직접 사용자가 활성화 할수 있도록 하는 UI가 적용됩니다.
// 앱단 메세지 핸들러 호출상태 체크 함수
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: 최대 시도 횟수에 도달했습니다.');
}
}
//메세지 핸들러 호출함수
waitForCallHandler(function() {
var param = {
action: 'get_pushstate',
callback: 'get_pushstate', //상태값을 받을 콜백함수명
}
//앱단으로 푸시수신 상태값 조회요청
window.webkit.messageHandlers.cordova_iab.postMessage(JSON.stringify(param));
});
function get_pushstate(push_state) {
// alert(push_state); //푸시수신 상태값 확인(1이면 허용상태, 0이면 거부상태)
if (push_state == 1) {
//푸시수신 허용 상태로서 아래에 허용상태표시 로직 작성하면 됩니다.
}else{
//푸시수신 거부 상태로서 아래에 거부상태표시 로직 작성하면 됩니다.
}
}
function pushauth_agree(val) {
var param = {
action: 'set_pushstate',
enable_value: val, //기본 1로 세팅하면 됨(1이면 무조건 알림권한활성화 및 수신허용처리함, 0이면 수신거부처리함)
callback: 'get_pushstate', //현재 상태값을 받을 콜백함수명 (리턴되는값은 처리이후의 값이 아닌 현재상태값임)
}
//앱단으로 푸시수신 상태값 전달/처리요청
webkit.messageHandlers.cordova_iab.postMessage(JSON.stringify(param));
}
function get_pushstate(push_state) {
// alert(push_state); //푸시수신 상태값 확인(1이면 허용상태, 0이면 거부상태)
if (push_state == 1) {
//푸시수신 허용 상태로서 아래에 허용상태표시 로직 작성하면 됩니다.
}else{
//푸시수신 거부 상태로서 아래에 거부상태표시 로직 작성하면 됩니다.
}
}
.....
<!-- 아래 적용된 onclick 함수호출구문은 토글버튼사용시엔 해당 토글버튼 액션에 사용되도록 함 -->
<div onclick="pushauth_agree(1)">푸시수신 허용</div>
<div onclick="pushauth_agree(0)">푸시수신 거부</div>