앱케이크_appcake_하이브리드앱제작_Admin.png

애플에선 공식적으로 쿠키 사용 지원이 안됩니다. 웹소스에 쿠키사용을 통한 로그인유지(자동로그인처리)기능은 사용을 할수가 없게 되어~ 이를 디바이스 저장소를사용 및 연동을 통해 자동로그인 처리가 될 수 있도록 함. (쿠키사용의 로그인유지기능을 사용하지 않더라도 아래를 적용하여 자동로그인처리가 되게 할수 있음)

1.연동 프로세스

1)웹에서 로그인시.. 앱의 함수 호출하여 개인정보(사용자아이디와 비번)를 앱의 저장소(sqlite)에 저장한다.

2)사용자가 다시 앱을 실행시... 앱의 저장소(sqlite)에 저장된 개인정보를(아이디와 비번) 불러와 로그인처리 웹페이지의 url이나 함수로 넘겨준다.

3)웹서비스에서 로그아웃시 앱의 저장소에 저장된 정보를 삭제한다.

2.연동가이드(javascript 소스)

1)사용자 로그인 인증정보 연동 호출

//1.웹에서 로그인이 완료되어 로딩되는 메인 웹소스에...
//- 아래 처럼 javascript구문을 사용하여 호출하여주세요.

// 앱단 메세지 핸들러 호출상태 체크 함수
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": "savelogin","loginid": "사용자ID","passwd": "사용자PW"}));
});

2)자동로그인 처리 (인정정보 가져오기)

//2.자동로그인 처리
//- 앱을 사용자가 실행시 자동로그인 처리되는 메인페이지에 아래 구문 사용

// 앱단 메세지 핸들러 호출상태 체크 함수
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": "autologin","callback": "auto_login"}));
});

function auto_login(userid,passwd) {
    //앱에서 user 변수에 아이디와 비밀번호를 넘겨줍니다.
    alert(userid);    //정보 확인(테스트)
    alert(passwd);    //정보 확인(테스트)
    //넘겨받은 아이디와 비번이 있다면 로그인 인증처리 로직을 태우면 됩니다.(기존웹에 적용한 인증로직으로...)
}

3)로그아웃 연동 (옵션)

//3.웹에서 로그아웃시(옵션)
//- 로그아웃시에는 저장된 정보를 지웁니다.
//- 기존 로그아웃 함수 및 url호출 전에 아래가 먼저 호출되도록 해주세요.(페이지 이동처리전 실행되도록 함)

setTimeout(function(){
	webkit.messageHandlers.cordova_iab.postMessage(JSON.stringify({"action": "offlogin"}))
},100);