被唤起端的APP需要做的工作如下:
设置URL Scheme 只是一个app的标识 具体是什么自己定 一个Scheme对应一个app。URL identifier只是一个标示符,随意填写,建议写成:com..反转域名的方法保证该名字的唯一性,可以使用项目的build id。
唤起端需要做的工作分两种情况:
APP唤起APP:
打开对应的scheme:
需要注意的一点事 这个url需要在scheme的尾部添加:// 比如设定的scheme是A 那么这个要打开的url则是A://
- (void)awakeOtherApp
{
NSString *customURL = @"openDemoApp://";
if ([[UIApplication sharedApplication]
canOpenURL:[NSURL URLWithString:customURL]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"URL error"
message:[NSString stringWithFormat:
@"No custom URL defined for %@", customURL]
delegate:self cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
}
}
在对应的位置调用这个方法即可
在ios9以后,因为注重了安全问题,所以需要在info.plist文件中设置一个白名单,如果不设置的话会包以下错误信息:
-canOpenURL: failed for URL: "openDemoApp://" - error: "This app is not allowed to query for scheme opendemoapp"
2、h5调起APP
大概原理是:判断是安卓还是苹果,如果为苹果显示苹果的标签,点击a标签,执行跳转唤起APP(openAPP),加一个定时器,三秒(可根据需求调整)之后,如果没有唤起成功,跳转到App Store下载页面。
<body>
<div id="btn">
<!-- <button onclick="submitFn()">打开app</button> -->
<a href="安卓配置" class="a-btn" style="display: none">安卓</a>
<a href="苹果URL scheme://" class="i-btn" style="display: none">苹果</a>
</div>
</body>
<script src="http://m-cdn.saclub.com.cn/app/2.4/js/jquery-1.11.3.min.js"></script>
<script type="text/javascript">
var ua = navigator.userAgent.toLowerCase();
var isWeixin = ua.indexOf('micromessenger') != -1;
var isAndroid = ua.indexOf('android') != -1;
var isIos = (ua.indexOf('iphone') != -1) || (ua.indexOf('ipad') != -1);
var d = new Date();
var t0 = d.getTime();
$(function(){
//判断执行安卓按钮还是苹果按钮
if(isAndroid){
$(".a-btn").show();
}else{
$(".i-btn").show();
}
});
//跳转下载
$(".a-btn").click(function(){
//安卓
openApp("安卓下载链接");
});
$(".i-btn").click(function(){
//苹果
openApp("IOS App Store下载链接");
});
function openApp(src) {
// 通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为
// 否则打开a标签的href链接
var delay = setInterval(function(){
var d = new Date();
var t1 = d.getTime();
if( t1-t0<3000 && t1-t0>2000){
alert('请下载APP');
window.location.href =src;
}
if(t1-t0>=3000){
clearInterval(delay);
}
},2000);
}
<a href="苹果URL scheme://" class="i-btn" style="display: none">苹果</a>
注:在IOS中设置URL scheme
前端跳转代码中需要在URL scheme后添加://,否则无法完成跳转。
URL Scheme 是什么?
iOS有个特性就是应用将其自身”绑定”到一个自定义 URL scheme 上,该 scheme用于从浏览器或其他应用中启动本应用。常见的分享到第三方之间的跳转都是基于Scheme的。
通过对比网页链接来理解iOS 上的 URL Schemes,应该就容易多了。
URL,我们都很清楚,http://www.apple.com就是个URL,我们也叫它链接或网址;
Schemes,表示的是一个 URL 中的一个位置——最初始的位置,即 ://之前的那段字符。比如 http://www.apple.com这个网址的Schemes是 http。
根据我们上面对URL Schemes的使用,我们可以很轻易地理解,在以本地应用为主的 iOS 上,我们可以像定位一个网页一样,用一种特殊的 URL 来定位一个应用甚至应用里某个具体的功能。而定位这个应用的,就应该这个应用的URL 的 Schemes 部分,也就是开头儿那部分。比如短信,就是 sms:
网友评论