APICloud 云修复(iOS)更新包下载完成后重启App

使用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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,226评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,707评论 25 709
  • 新疆行第二天:离开满眼青翠的多山重庆,我们来到了四川。似乎是到了另一个世界,连空气好像也清新得令人惊喜。没有城市的...
    梦觉C欢喜舍阅读 1,183评论 0 1
  • 核心单词(15个) 1、code number 2、contract 3、fax 4、popular 5、uncl...
    浸泡一种心情阅读 1,059评论 0 0
  • 夜风在呜咽 窗户沙沙作响 期盼春日的暖阳 赶走漫长的黑 被窝里的温度越来越低 暖器片不再有热气 午夜惊醒时 微凉 ...
    杨颜阅读 3,780评论 0 2