
1)웹에서 전화번호부 요청 호출(웹에서 ⇒ 앱단 기능호출 : javascript구문사용) 2)앱단에서 전화번호부 화면을 띄움. 3)전화번호부 목록에서 웹으로 전달할 사용자연락처를 선택하면 JSON규격의 데이터 생성. 3)JSON데이터를 웹으로 전달해주며 웹에서 전달받은 JSON데이터를 필요한 로직에 사용.
// 앱단 메세지 핸들러 호출상태 체크 함수
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() {
//네이티브 호출 구문
window.webkit.messageHandlers.cordova_iab.postMessage(JSON.stringify({
"action": "phonenumber", //변경하지 마시고 그대로 사용하셔야 합니다.
"callback_fun":"phoneNumbers" //JSON데이터를 전달받으실 js함수명 지정(위처럼 함수정의하셔서 사용)
}));
});
function phoneNumbers(contacts) {
//넘어온 연락처정보 확인
alert('전화주소록 데이터 : ' + JSON.stringify(contacts));
//contacts.username : 이름
//contacts.phone : 폰번호
//contacts.email : 이메일주소 (값이 없을 수 있음)
}