merge master into develop - CscListRForm.jsp FAQ 아코디언 버그 수정
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
// 앱-웹뷰 통신 API
|
||||
|
||||
// 전역 오염을 방지하기 위한 네임스페이스
|
||||
const AppWebviewAPI = (function() {
|
||||
// 비공개 변수 및 함수
|
||||
let pushKeyCallback = null;
|
||||
let pushReceiveCallback = null;
|
||||
let walkCountCallback = null;
|
||||
let pageActiveTimeCallback = null;
|
||||
|
||||
// JS102: 푸시 키 등록을 위한 콜백 처리
|
||||
function handlePushKeyRegist(tokenKey) {
|
||||
if (pushKeyCallback) {
|
||||
pushKeyCallback(tokenKey);
|
||||
}
|
||||
}
|
||||
|
||||
// JS105: 푸시 알림 터치에 대한 콜백 처리
|
||||
function handlePushReceive(pushType, data) {
|
||||
if (pushReceiveCallback) {
|
||||
pushReceiveCallback(pushType, data);
|
||||
}
|
||||
}
|
||||
|
||||
// JS106: 앱에서 걸음 수 가져오기
|
||||
function requestWalkCount() {
|
||||
if (window.webkit && window.webkit.messageHandlers.getWalkCount) {
|
||||
// iOS 웹뷰 호출
|
||||
window.webkit.messageHandlers.getWalkCount.postMessage({});
|
||||
} else if (window.Android && window.Android.getWalkCount) {
|
||||
// 안드로이드 웹뷰 호출
|
||||
window.Android.getWalkCount();
|
||||
}
|
||||
}
|
||||
|
||||
// JS107: 페이지 활성 시간을 앱에 전송
|
||||
function sendPageActiveTime(url, displaySeconds) {
|
||||
if (window.webkit && window.webkit.messageHandlers.sendPageActiveTime) {
|
||||
// iOS 웹뷰 호출
|
||||
window.webkit.messageHandlers.sendPageActiveTime.postMessage({
|
||||
url: url,
|
||||
displaySeconds: displaySeconds
|
||||
});
|
||||
} else if (window.Android && window.Android.sendPageActiveTime) {
|
||||
// 안드로이드 웹뷰 호출
|
||||
window.Android.sendPageActiveTime(url, displaySeconds);
|
||||
}
|
||||
}
|
||||
|
||||
// 공개 API
|
||||
return {
|
||||
// JS102: 푸시 키 등록을 위한 콜백 등록
|
||||
onPushKeyRegist: function(callback) {
|
||||
pushKeyCallback = callback;
|
||||
// 앱에서 호출할 수 있도록 전역 스코프에 콜백 노출
|
||||
window.callback_pushkey_regist = handlePushKeyRegist;
|
||||
},
|
||||
|
||||
// JS105: 푸시 알림 터치에 대한 콜백 등록
|
||||
onPushReceive: function(callback) {
|
||||
pushReceiveCallback = callback;
|
||||
// 앱에서 호출할 수 있도록 전역 스코프에 콜백 노출
|
||||
window.callback_push_receive_process = handlePushReceive;
|
||||
},
|
||||
|
||||
// JS106: 앱에서 걸음 수 요청
|
||||
getWalkCount: function(callback) {
|
||||
walkCountCallback = callback;
|
||||
requestWalkCount();
|
||||
},
|
||||
|
||||
// JS107: 페이지 활성 시간을 앱에 전송
|
||||
sendPageActiveTime: function(url, displaySeconds) {
|
||||
sendPageActiveTime(url, displaySeconds);
|
||||
},
|
||||
|
||||
// 앱에서 호출할 콜백 핸들러
|
||||
handleWalkCountResponse: function(count, date) {
|
||||
if (walkCountCallback) {
|
||||
walkCountCallback({ count: count, date: date });
|
||||
}
|
||||
},
|
||||
|
||||
// 추가적인 유틸리티 함수들을 여기에 추가할 수 있습니다.
|
||||
};
|
||||
})();
|
||||
|
||||
// 사용 예시:
|
||||
// AppWebviewAPI.onPushKeyRegist(function(tokenKey) { console.log('푸시 키 등록됨:', tokenKey); });
|
||||
// AppWebviewAPI.onPushReceive(function(pushType, data) { console.log('푸시 수신됨:', pushType, data); });
|
||||
// AppWebviewAPI.getWalkCount(function(result) { console.log('걸음 수:', result.count, '날짜:', result.date); });
|
||||
// AppWebviewAPI.sendPageActiveTime('https://example.com/best-reviews', 300);
|
||||
|
||||
// 걸음 수가 준비되었을 때 앱에서 호출할 함수
|
||||
// window.AppWebviewAPI.handleWalkCountResponse(10000, '20230101');
|
||||
Reference in New Issue
Block a user