h5가 앱에서 이러한 요구를 불러일으키는 것이 일반적입니다. 모바일이 왕인 시대에 h5는 앱 트래픽 전환에 중요한 역할을 합니다.
현재 우리가 사용하는 호출 방법은 URL 체계(iOS 및 Android 플랫폼 모두에서 지원됨)입니다. 기본 APP 개발 중에만 체계를 등록하면 사용자가 해당 링크를 클릭하면 자동으로 APP로 이동합니다.
세 가지 각성 옵션아이프레임
var last = Date.now(), doc = window.document, ifr = doc.createElement('iframe');//숨겨진 iframe 만들기 ifr.src = NativeUrl;ifr.style.cssText = 'display:none;border :0;너비:0;높이:0;';doc.body.appendChild(ifr);setTimeout(function() { doc.body.removeChild(ifr); //setTimeout이 2000 미만이면 일반적으로 호출 실패입니다. if (Date.now() - last < 2000) { if (typeof onFail == 'function') { onFail() } else; { //팝업 프롬프트 또는 다운로드 처리 등} } else { if (typeof onSuccess == 'function') { onSuccess() } }}, 1000);
iframe 솔루션의 호출 원리는 프로그램이 백그라운드로 전환되면 타이머가 지연된다는 것입니다(타이머가 부정확한 또 다른 상황). 앱이 깨어나면 웹페이지는 필연적으로 백그라운드로 들어갑니다. 사용자가 앱에서 다시 전환하면 일반적으로 시간이 2초를 초과합니다. 앱이 깨어나지 않으면 웹페이지는 기본적으로 백그라운드로 들어가지 않습니다. 시간은 2초를 초과하지 않습니다.
window.location.href가 직접 점프합니다.
window.location.href=nativeUrl;
태그가 연상시킨다
<a href=nativeUrl>앱 취소</a>
세 가지 호출 시나리오의 브라우저 테스트
iframe은 앱 테스트 결과를 불러옵니다.
window.location.href는 앱 테스트 결과를 불러옵니다.
태그는 앱 테스트 결과를 불러옵니다
iframe과 window.location.href는 대비를 불러일으킵니다.
iframe, window.location.href 및 태그는 세 가지 간의 비교를 불러일으킵니다.
테스트 결과 분석첫째, 테스트한 모델과 브라우저는 제한되어 있으며 위 결과는 참고용일 뿐입니다.
iframe 호출과 location.href를 비교하면 다음을 찾을 수 있습니다.
위의 비교 분석을 통해 Android의 경우 iframe을, iOS의 경우 window.location.href를 사용하는 것이 더 적합합니다.
페이지 진입 시 직접 호출과 이벤트 중심 호출의 차이점
iframe 또는 location.href에 의해 유발되는지에 관계없이 Android의 이 두 가지 각성 시나리오 사이에는 분명한 차이점이 있습니다. Xiaomi 1s의 크롬을 예로 들어 보겠습니다.
<a id=goApp href=javascript:void(0);>앱을 열려면 나를 클릭하세요</a>
바인딩 이벤트는 호출을 수동으로 구동합니다.
//성공적으로 호출됨 window.onload = function () { $('#goApp').on(click, function () { window.lib.callapp(nativeUrl);//iframe //window.location.href = NativeUrl; });};
직접 호출할 페이지를 입력하세요.
//호출 실패 window.onload = function () { window.lib.callapp(nativeUrl);//iframe //window.location.href = NativeUrl;};
바인드 이벤트, js evoke
//호출 실패 window.onload = function () { $('#goApp').on(click, function () { window.lib.callapp(nativeUrl);//iframe //window.location.href = NativeUrl; }); $('#goApp).trigger('클릭');};
원래 $('#goApp).trigger('click'); 방법은 수동 클릭과 같다고 생각했는데 실제 성능은 js 트리거 이벤트의 성능이 직접 페이지 이동만큼 무효합니다.
참고 블로그 게시물에서 Android 플랫폼과 다양한 앱 제조업체가 매우 다르다는 것을 알 수 있습니다. 예를 들어 Chrome은 25부터 js(비사용자 클릭)를 통한 트리거링 스키마 점프, iframe src 주소 설정 등을 더 이상 지원하지 않습니다. 앞으로. 따라서 js 트리거링과 직접 사용자 클릭 사이에는 여전히 큰 차이가 있으며 이는 오디오 재생에 대한 제한과 유사할 수 있습니다.
마침내위의 테스트 및 분석 결과 기본적으로 iOS에서는 window.location.href를, Android에서는 iframe을 사용하는 것이 더 적합하다고 판단되었습니다. iframe을 사용하여 호출하는 경우 일반적으로 직접 다운로드하여 호출 실패를 처리합니다. 그러나 여기에는 문제가 있습니다. 즉, 호출 성공 후 브라우저로 돌아오면 브라우저가 감지할 수 없다는 것입니다. 호출이 성공하더라도 브라우저는 여전히 팝업으로 표시됩니다. 정보 다운로드 환경은 매우 좋지 않습니다. 물론 일부 성공 또는 실패 콜백 함수도 처리해야 할 수도 있습니다. 시나리오를 호출하기만 하면 되고 실패 후 다운로드가 필요하지 않을 수도 있습니다.
iPhone에서 기본 앱을 호출하기 위해 location.href를 사용하는 경우 현재 페이지를 직접 처리하는 것보다 중간 페이지로 이동하는 방법이 더 나을 수 있습니다.
위 내용은 이 기사의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다. 또한 모든 분들이 VeVb Wulin Network를 지지해 주시길 바랍니다.