`

从web页面打开iOS应用

阅读更多

本文介绍从web页面打开iOS app的方法
<!--more-->

从web页面打开app是一个常见场景,大致上有2种做法

利用Safari原生Banner

只需要在html中加入一段meta,即可在Safari中显示一个Banner。如果未安装此app,会跳转到app store的下载页面,否则会直接打开应用

效果图:

Safari Banner

html代码如下:

<meta name='apple-itunes-app' content='app-id=你的应用的app-id'>

另外我在简书的网站上,看到代码是这样写的:

<meta name="apple-itunes-app" content="app-id=888237539, app-argument=jianshu://notes/2283513">

特别的地方在于,多了一个app-argument参数,可能可以传递到app的这个方法里进行处理:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options

使用自定义链接

第一种方法的好处是方便,但是缺点是样式是固定的,不能自定义,所以更好的办法是采用自定义链接。代码如下:

<a href="https://itunes.apple.com/cn/app/id995195037" id="openApp">打开应用</a>

<script type="text/javascript">

    document.getElementById('openApp').onclick = function(e){

    // 通过iframe的方式尝试打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为
    // 否则打开a标签的href链接
    var ifr = document.createElement('iframe');
    ifr.src = 'com.yilos.nailstar://topic/abcdefg';
    ifr.style.display = 'none';
    document.body.appendChild(ifr);

    window.setTimeout(function(){
        document.body.removeChild(ifr);
    },3000)
};
</script>

本质上是发起了一个请求:

com.yilos.nailstar://topic/abcdefg

这个请求会在iOS系统中查找对应的url schema,然后打开此应用,同样会进入以下方法:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options

所以有机会对自定义的参数进行处理

比较巧妙的地方在于,打开app的行为,会阻止a链接的默认跳转行为;而如果打开失败,则会进入app store的下载页面

简书的代码是利用同样的原理:

if (/iphone|ipad|ipod/.test(ua)) {

    // in iOS
    if (ua.match(/MicroMessenger/i) || ua.match(/weibo/i)){

        Maleskine.showWeixinHelp();

    }else if (ua.match(/MQQBrowser/i) || ua.match(/QQ/i)) {

        Maleskine.showQQHelp();

    } else {

        window.location = "jianshu://p/12345678";
        window.setTimeout(function() {
            window.location = "https://itunes.apple.com/cn/app/jian-shu/id888237539?ls=1&amp;mt=8";
        }, 400);
    }
}

也是先尝试打开app,如果打开失败,就跳转到app store下载页面

微信的兼容性问题

微信做了特殊处理,在微信中打开的web页,既不能跳转到app,也不能跳转到app store

所以一般的做法是提示用户在Safari中打开

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    web版IOS powered by HTML5

    在压缩包中的"ios"文件可能是相关的示例代码、文档或资源,对于学习和理解如何利用HTML5构建Web版iOS应用非常有帮助。通过深入研究这些文件,开发者可以更好地掌握如何创建具有iOS风格界面和交互体验的Web应用。

    IOS Web Clip 代码保存内容到手机桌面

    这种技术主要基于Safari浏览器,使得用户无需每次都打开浏览器输入网址,而是直接从手机桌面启动Web应用。 创建iOS Web Clip的过程涉及到以下几个关键知识点: 1. **HTML5 Web App Manifest**: 为了让Web Clip有更...

    iOS 应用开发入门

    ### iOS应用开发入门详解 #### 一、iOS应用开发概述 在移动互联网时代,iOS作为苹果公司的操作系统之一,在全球范围内拥有庞大的用户基础。对于开发者来说,掌握iOS应用开发技术不仅能够帮助他们创建出高质量的...

    ios应用源码之类似chrome浏览器的多页签视图 2018128

    在iOS应用开发中,创建一个类似Chrome浏览器的多页签视图是一项常见的需求。这个源码项目名为"ios应用源码之类似chrome浏览器的多页签视图 2018128",旨在提供一种实现方式,帮助开发者理解和构建这种功能。下面将...

    U3D嵌入Web页面,利用webview

    此外,Web页面还可以通过API与Unity引擎通信,实现游戏逻辑或者应用功能的扩展。 在Unity中嵌入Web页面的方法主要有两种: 1. 使用Unity的内置WebView组件:Unity 2018.3版本之后引入了一个内置的WebView组件,...

    IOS应用源码——一个功能还算完整的浏览器.zip

    这个压缩包文件“IOS应用源码——一个功能还算完整的浏览器.zip”显然包含了iOS平台上一个名为“TSMiniWebBrowser”的小型浏览器应用的源代码。这个应用可能由Tonisalae开发,版本号为e8373e2。下面将详细讨论iOS...

    Unity3D web网页跳转的问题及解决办法2

    首先,当Unity3D应用运行在Web Player上时,使用`Application.OpenURL()`函数尝试打开一个新的网页链接,会发现它并不是像预期那样在新标签页或窗口中打开,而是试图在当前Web Player窗口内加载新的页面,覆盖原有的...

    safari调试iOS app web页面的步骤

    Safari调试iOS App Web页面的步骤 Safari浏览器是 macOS 和 iOS 系统的默认浏览器,同时它也提供了强大的开发者工具,可以帮助开发者调试和优化 Web 应用程序,包括 iOS App 中的 Web 页面。在移动端开发过程中,很...

    IOS应用源码Demo-类似Chrome浏览器的多页签视图-毕设学习.zip

    在本压缩包“IOS应用源码Demo-类似Chrome浏览器的多页签视图-毕设学习.zip”中,我们可以找到一个iOS应用的源代码示例,这个应用模仿了Google Chrome浏览器的多页签视图功能,非常适合那些正在进行iOS毕业设计或者...

    ios-浏览器分页选项功能Web.zip

    9. **性能优化**:为了提供流畅的浏览体验,iOS浏览器通常会进行内存管理和页面预加载,确保即使打开多个标签页,应用仍能保持稳定运行。 10. **安全与防护**:iOS系统和浏览器内置的安全机制会检测并阻止恶意网站...

    iOS webview Hybrid开发预加载.zip

    Webview是iOS SDK提供的一种组件,它能够在一个iOS应用内部展示网页内容。开发者可以使用UIWebView或WKWebView(自iOS 8引入,性能更优)来加载HTML、CSS和JavaScript代码,为用户提供类似于浏览器的体验,但又可以...

    IOS应用源码之类似Chrome浏览器的多页签视图

    在页面加载方面,源码可能使用`WKWebView`来渲染网页内容,因为它是Apple推荐的Web内容展示控件,相比老的`UIWebView`,它提供了更好的性能和内存管理。`WKWebView`允许开发者通过`WKWebViewConfiguration`设置各种...

    Swift-ChromeDeveloperTools远程调试您的原生iOS应用

    总的来说,通过Chrome Developer Tools进行远程调试,Swift开发者可以充分利用Web开发的便利性,提高对原生iOS应用的调试效率,同时减少了在模拟器和真机间切换的麻烦。理解并掌握这一工具,对于提升开发者的生产力...

    iOS 在线安装 ipa 网页

    ipa文件是iOS应用程序的打包格式,包含应用程序的二进制文件、资源文件以及Info.plist等元数据。而itms-services是一种HTTP协议,允许iOS设备通过Safari浏览器直接下载并安装ipa文件,无需通过App Store。这种方式常...

    ios-WKWebView.zip

    通过这个项目,开发者可以学习如何在iOS应用中实现类似“今天头条”那样的网页浏览体验,包括加载新闻文章、实现页面滑动效果、以及可能的广告拦截和用户登录等功能。 总之,WKWebView是iOS开发中的重要工具,用于...

    iOS和Js互调的简单例子

    在iOS和JavaScript交互的场景中,开发者经常需要在原生应用和Web页面之间进行方法调用,以便充分利用两者的优势。这个“iOS和Js互调的简单例子”将为我们揭示这一技术的核心原理和实现方式。 首先,我们要理解的是...

    iOS与HTML的嵌入式开发

    在iOS应用开发中,混合开发模式常常被用来融合原生平台的能力与Web技术的优势,以实现更高效、灵活的开发流程。"iOS与HTML的嵌入式开发"这个项目就是一个典型的例子,它利用UICollectionView和UIScrollView来展示...

    iOS生成桌面icon

    "iOS生成桌面icon"是指为iOS应用创建在用户设备主屏幕上显示的个性化图标的过程。AppWebClip-master.zip文件包含的资源和代码可能是一个帮助开发者快速生成iOS桌面快捷方式(Web Clip)的工具,它可以模拟真实应用...

    ios-原生添加 本地H5页面.zip

    在iOS开发中,将原生应用与HTML5(H5)页面结合,可以实现丰富的交互效果,同时利用原生应用的性能优势。...通过以上步骤,你可以轻松地在iOS应用中展示和操作本地H5页面,实现原生应用与Web技术的无缝融合。

    JS实现点击网页判断是否安装app并打开否则跳转app store

    常常有这样的场景,咱们开发出来的APP需要进行推广,比如在页面顶部来一张大Banner图片,亦或一张二维码。但往往我们都是直接给推广图片加了一个下载链接(App Store中的)。所以咱们来模拟一下用户的操作步骤: 1、...

Global site tag (gtag.js) - Google Analytics