使用APICloud SuperWebview 的 云修复来更新H5代码修改内容时,更新包下载完成,点击提示框的重新启动按钮后,还需手动重启App,才能看到更新内容,这样对用户来说有些麻烦,所以做了如下解决方案。
更新包下载完成后,如果用户允许重启App,则关闭App,自动打开浏览器(如Safari),窗口提示是否跳转App,选择确定跳转按钮,则会跳转到App,此时widget包就是最新的。代码如下:
- OC
//AppDelegate.m文件
@interface AppDelegate ()<APISmartUpdateDelegate>
@end
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[APIUpdateManager manager].smartUpdateDelegate = self;
}
#pragma mark - APISmartUpdateDelegate
- (void)didSmartUpdateFinished:(NSArray
*)packages {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue
(), ^{
abort();
});
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://yixianglife.com/open.html"]];//链接是H5开发写的,代码如下
}
- H5
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,minimum-scale=1.0">
<title>Mobile Safari调用本地APP,否则进入App Store下载
</title>
<meta name="keywords" content="Mobile Safari 调用本地APP,否则进入AppStore下载" />
<meta name="description" content="Mobile Safari 调用本地APP,否则进入AppStore下载" />
<script type="text/javascript">
/**
浏览器版本信息
* @type {Object}
* @return {Boolean}
返回布尔值
*/
function browser() {
var u = navigator.userAgent.toLowerCase();
var app = navigator.appVersion.toLowerCase();
return {
txt: u, //浏览器版本信息
version: (u.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) ||[])[1], //版本号
msie: /msie/.test(u) && !/opera/.test(u), // IE内核
mozilla: /mozilla/.test(u) && !/(compatible|webkit)/.test(u), //火狐浏览器
safari: /safari/.test(u) && !/chrome/.test(u), //是否为safari
chrome: /chrome/.test(u), //是否为chrome
opera: /opera/.test(u), //是否为oprea
presto: u.indexOf('presto/') > -1, //opera内核
webKit: u.indexOf('applewebkit/') > -1, //苹果、谷歌内核
gecko: u.indexOf('gecko/') > -1 && u.indexOf('khtml') == -1, //火狐内核
mobile: !!u.match(/applewebkit.*mobile.*/), //是否为移动终端
ios: !!u.match(/\(i[^;]+;( u;)? cpu.+mac os x/), //ios终端
android: u.indexOf('android') > -1, //android终端
iPhone: u.indexOf('iphone') > -1, //是否为iPhone
iPad: u.indexOf('ipad') > -1, //是否iPad
webApp: !!u.match(/applewebkit.*mobile.*/) && u.indexOf('safari/') == -1 //是否web应该程序,没有头部与底部
};
}
var timeout;
function open_appstore() {
var b=browser();
if(b.ios||b.iPhone||b.iPad) {
window.location="
itms-apps://itunes.apple.com/app/异享生活/id1116877164?l=zh&ls=1&mt=8";
} else if(b.android) {//}
}
function try_to_open_app() {
var b=browser();
if(b.ios||b.iPhone||b.iPad) {
window.location="Yixianglife://";
} else if(b.android) {//}
timeout = setTimeout(
'open_appstore()', 30);
}
try_to_open_app();
</script>
</head>
<body>
</body>
</html>