function isInIos(){var userAgentInfo = navigator.userAgent ,
Agents = ["iPhone" , "iPad", "iPod"];for(var v = 0; v < Agents.length; v++) {if (userAgentInfo.indexOf(Agents[v]) > 0) { return true;
}
}return false;
}
로그인 후 복사
<activity android:name=".activity.LoadingActivity" android:label="${APP_NAME}" android:screenOrientation="portrait" android:theme="@style/FirstActivityTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="android"android:scheme="wushang" /> </intent-filter></activity>
로그인 후 복사
를 추가하기 위해 AndroidManifest.xml을 먼저 편집합니다. 예를 들어 여기 wushang은 구성표이며 이는 앱의 고유 식별자에 가장 적합합니다. 그렇지 않으면 H5가 깨어나면 시작할 앱을 선택하는 선택 상자가 나타납니다. 그리고 호스트는 페이지를 시작한다는 의미입니다. 실제로는 com.android.sky와 같은 패키지 이름으로 바꿔야 합니다. 이 경우 전체 URL은 wushang://android?data=sky이고 매개변수 전송이 이어집니다. 활동에서 다음 코드를 사용하여 매개변수
public void onCreate(Bundle savedInstanceState) {
Uri uridata = this.getIntent().getData();
String mydata = uridata.getQueryParameter("data");
}
로그인 후 복사
를 가져올 수 있습니다. 그런 다음 문자열 가로채기 등을 수행할 수 있습니다. 다음으로 프론트 엔드 코드에 대해 이야기하겠습니다. 여기에는 두 가지 상황이 있습니다. 1. 페이지가 새로 고쳐지면 앱 호출 권한을 요청하세요.이것은 비교적 간단합니다. 하지만 페이지 상단에
<meta http-equiv="refresh" content="0;url=wushang://android?data=sky">
로그인 후 복사
가 표시되어 있고 페이지가 새로고침되면 이 링크에 액세스하여 앱을 시작할 수 있습니다. 하지만 Apple 시스템의 Safari 브라우저인 경우 이 메타로 헤더에 액세스하면 오류 메시지가 표시됩니다. 따라서 페이지를 렌더링할 때 클라이언트의 일반 클래스를 통해 이 헤더를 추가할 수 있습니다. 백엔드. 2. 클릭 이벤트를 통해 APP를 호출하는 가장 쉬운 방법은 물론 다음과 같이 a 태그를 직접 사용하는 것입니다
<a href="wushang://android">open Android app</a>
로그인 후 복사
그러나 실제 사용에서는 클라이언트의 플랫폼 유형과 해당 여부를 알아야 합니다. WeChat 내장 브라우저에서 판단이 필요하므로 이러한 접근 방식은 절대 허용되지 않습니다. 다음으로, 개발 과정에서 겪은 문제에 대해 이야기하고 기록해보겠습니다. 여기 모바일 단말에서 사용하는 툴 라이브러리는 zepto이고, 사용되는 클릭 이벤트는 탭이기 때문에, 처리를 위해 탭을 사용할 때, APP를 활성화하기 위해 여러 번 클릭해야 하는 경우가 종종 있습니다
<script type="text/javascript">
$('#go').tap(function(){
window.location.href = "wushang://android";
});</script>
로그인 후 복사
모르겠습니다. 구체적인 이유는 있지만 탭 이벤트일 수도 있습니다. 그런 다음 몇 가지 탐색 후에 이 문제를 피하기 위해 click 이벤트를 사용하거나 a 태그에 핸들러 기능을 직접 표시했습니다
<a id="go" >open Android app</a><a href="javascript:startApp()">
open</a><script src="../res/lib/zepto.min.js?1.1.11"></script><script src="../res/lib/public.js?1.1.11"></script><script>$('#go').click(function () { if(publicFun.isIos()){
alert('it is IOS')
}else{
window.location.href = "wushang://android";
}
});function startApp(){ if(publicFun.isIos()){
alert('it is IOS')
}else{
window.location.href = "wushang://android";
}
}</script>
로그인 후 복사
그래서 앞으로 이런 종류의 문제가 발생하면 이 두 가지 방법을 사용하기로 결정했습니다. 아래는 실제 처리 기능입니다
window.startApp = function(){ //启动APP if(publicFun.isInWx()){ //微信中alert("请在浏览器中打开");
}else{ //非微信中if(publicFun.isIos()){ //IOS系统,直接去itunes中,既可以下载也可以打开window.location.href = "https://itunes.apple.com/cn/app/[name]/id[id]";
}else{ //android系统,通过定时器的方式,判断是否安装有APPvar hasApp = true , t = 1000;
setTimeout(function () { //没有安装APP则跳转至应用宝下载,延时时间设置为2秒 if(!hasApp) window.location.href = "http://a.app.qq.com/o/simple.jsp?pkgname=[name]";
} , 2000);var t1 = Date.now();
window.location.href = "wushang://android";
setTimeout(function () { //t的时间就是出发APP启动的时间,若APP启动了,再次返回页面时t2这行代码执行,hasApp即为true。反之若APP没有启动即为false var t2 = Date.now();
hasApp = !(!t1 || t2 - t1 < t + 150);
} , t);
}
}
}
로그인 후 복사
사실 앱으로 바로 이동하는 아주 간단한 방법이 있습니다. Android든 IOS든, WeChat이든 WeChat이 아니든 마찬가지입니다. App Store의 다운로드 페이지에는 다운로드와 열기의 두 가지 기능이 있습니다(IOS 플랫폼인 경우 앱 스토어에 연결하는 것입니다)
4. IOS 플랫폼
ios9과 위의 링크는 열 수 없습니다. 실제로 iOS 9는 더 나은 솔루션인 범용 링크를 제공합니다.
이 기능은 iOS9에서 출시된 기능입니다. 앱이 유니버설 링크를 지원하는 경우 기존 HTTP 링크를 통해 쉽게 앱을 시작할 수 있습니다. (앱이 이미 iOS 기기에 설치되어 있는 경우 추가 판단 등을 할 필요가 없습니다.) , 또는 웹 페이지를 엽니다(앱이 iOS 장치에 설치되지 않음). 아마도 더 간단하게 설명할 수 있을 것입니다. iOS9 이전에는 Safari, UIWebView 또는 WKWebView와 같은 다양한 브라우저에서 앱을 깨워야 하기 때문에 일반적으로 스키마만 사용할 수 있었습니다.
위 내용은 인터넷의 범용 링크에 대한 소개에서 나온 것입니다. 프런트 엔드의 경우 간단히 말하면 http URL에 액세스합니다. 이 URL에 개발 플랫폼에 제출한 구성 파일의 규칙과 일치하는 콘텐츠가 포함되어 있으면 iOS 시스템이 앱을 열려고 시도합니다. 앱을 열 수 없으면 시스템이 브라우저에서 액세스하려는 링크로 리디렉션됩니다. 이는 매우 좋은 속성입니다. 이 속성을 통해 WeChat의 가로채기를 우회하고 iOS9에서 앱을 열 수 있기 때문입니다.
그래서 위의 클릭 이벤트는 단지 앱 스토어에 액세스하기 위한 것입니다. 앱이 설치되어 있으면 브라우저에서 액세스할 때 이미 앱에 있을 것이기 때문입니다.
이것들은 모두 IOS 구성이므로 더 이상 쓰지 않겠습니다. 매개변수 전달 및 페이지 방향은 실제로 UIWebView에서 현재 연결된 URL을 얻은 다음 문자열 분할 및 검증을 수행하여 이동할 페이지를 결정하고 매개변수 값을 얻는 것과 같습니다.
위 내용은 APP 기본 페이지를 시작하는 H5 인스턴스 메소드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!