
1)웹에서 전화번호부 요청 호출(웹에서 ⇒ 앱단 기능호출 : javascript구문사용) 2)앱단에서 전화번호부 정보를 가져와 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": "contactnumber", //변경하지 마시고 그대로 사용하셔야 합니다.
"callback_fun":"phoneNumbers" //JSON데이터를 전달받으실 js함수명 지정(위처럼 함수정의하셔서 사용)
}));
});
function phoneNumbers(contacts) {
//넘어온 주소록 확인
alert('전화주소록 데이터 : ' + JSON.stringify(contacts));
//아래처럼 연동된 데이터에 따라 처리로직 사용하시면 됩니다.
if(contacts.length == 0){
alert('연락처의 접근 권한을 허용해주셔야 합니다.');
}else{
//alert('연락처 정보 조회 성공!!');
//for(i=0;i<contacts.length;i++){
// contacts[i].username : 사용자이름
// contacts[i].phone : 전화번호
// contacts[i].email : 이메일주소
//}
}
//username : 이름
//phone : 폰번호
//email : 이메일주소 (값이 없을 수 있음)
//*아래 예시 json 규격의 값으로(여러개의 배열값의 형태) 넘어갑니다.
//[{"username":"홍길동","phone":"01079791111","email":"[email protected]"},{…}]
}