iOS 카카오톡 링크를통한 웹 -> 어플리케이션 이동 시 웹에서 visibility 인식불가

안녕하세요. 질문하나가 있어서 글 남깁니다.

웹페이지에서 어플리케이션이 있는지 여부를 확인. 있으면 어플리케이션을 호출하고 없으면 앱스토어를 호출하여 다운로드가 가능하도록 합니다.

이를 위해

  1. 카카오톡을 통한 웹페이지 url 전달
  2. url call -> 카카오톡 웹페이지를 통해서 open
  3. 어플리케이션 설치 확인.
    3.1 어플리케이션이 설치되어 있으면, 어플리케이션 호출 및 1의 url 페이지내에서 web visibility 확인. hidden 이면 아무 작업 X
    3.2 어플리케이션이 설치되어 있지 않으면, App 스토어 호출 후 다운로드 가능하도록 가이드.

여기 3.1에서 어플리케이션을 호출했음에도 web visibility 가 hidden 이 아닌 visible 로 detect 됩니다.

ios에서만 그러는데… ios의 특징일까요…ㅠ?

아래는 소스일부입니다.
저기서 어플리케이션이 열려도 document.hidden은 false값이되고 나머지는 읽히지도 않습니다…

setIntervalTime = () => {
let now = +new Date();
let hidden = ‘’;
if (typeof document.hidden !== “undefined”) {
alert('hidden ’ + document.hidden);
hidden = “hidden”;
} else if (typeof document.mozHidden !== “undefined”) {
alert('mozHidden ’ + document.mozHidden)
hidden = “mozHidden”;
} else if (typeof document.msHidden !== “undefined”) {
alert('msHidden ’ + document.msHidden)
hidden = “msHidden”;
} else if (typeof document.webkitHidden !== “undefined”) {
alert('webkitHidden ’ + document.webkitHidden)
hidden = “webkitHidden”;
}

        alert(document.visibilityState);  // visibilityState도 계속 visible이 됩니다.

        if ((now - startTime < 1000) && !(document[hidden])) {
                    let marketUrl = "";
                    if (isAndroid) {
                        marketUrl = androidMarketUrl;
                    } else if (isIos) {
                        marketUrl = iosMarketUrl;
                    }
                    window.location.href = marketUrl;
                }
        }
    };
    setTimeout(setIntervalTime, 800);

    if (isAndroid) {
        openAndroid();
    } else if (isIos) {
        openiOS();
    } else {
        alert('제공되지 않는 운영체제 입니다.');
        console.error("Unsupported OS");
        clearTimeout(setIntervalTime);
        setIntervalTime = null;
    }

function openAndroid() {
    const iframe = document.createElement('iframe');
    iframe.style.visivility = 'hidden';
    iframe.src = url;
    document.body.appendChild(iframe);
    document.body.removeChild(iframe);

}

function openiOS() {
    const iframe = document.createElement('iframe');
    iframe.style.visivility = 'hidden';
    iframe.src = url;//'schemeName://hostName?param1=someValue1¶m2=someValue2';
    document.body.appendChild(iframe);
    document.body.removeChild(iframe);
    // window.location.href = url;
}