xml地图|网站地图|网站标签 [设为首页] [加入收藏]

皇家赌场网址唤起本地app

来源:http://www.ccidsi.com 作者:集成介绍 人气:139 发布时间:2019-05-03
摘要:      随着事情的增多,或者存在那样1种必要,正是须求从h5中一向跳转到app。假如未有安装app的话,则提示到利用商场照旧appstore下载安装。可是难题就在那个地点,单纯的用h伍是未

       随着事情的增多,或者存在那样1种必要,正是须求从h5中一向跳转到app。假如未有安装app的话,则提示到利用商场照旧app store下载安装。可是难题就在那个地点,单纯的用h伍是未有办法判定是或不是安装过app的,不过这几个是难不倒程序猿的,他们一般会用这种代码来化解

详解如何通过H五(浏览器/WebView/别的)唤起本地app,h5webview

前两日接到贰个有线的要求,小编那一个小白然而忙活了几许天……在页面上有一个总是, 假设用户设置了应用软件,则点击展开对应的应用软件借使用户并未有设置,则点击张开对应的装置连接.上网寻找了1晃,基本都说能够兑现,可是实际情况却不乐观.

当然只是在这之中的贰个须求,还有的是明日种种app,分享出来的H5页面中,一般都会带着一个登时张开的按键,如若本地安装了app,那么就平素唤起本地的app,假使未有设置,则跳转到下载。那是三个很健康的拓宽和导流量的宗旨,近日出品老总就提议了这样的叁个必要,做3个像明日头条效益雷同的带张开app的下载条等等,其余的就不说了!

上面进入大家明日的宗旨,H伍怎么着开拓大概说唤起手提式有线电话机本地的app,纵观百度和谷歌上边的答案,无非是二种:

先是种方法:

透过在html的a标签里面包车型地铁href中一向配置android端的schema,当然,固然有host其余的配备,跟在前边就足以了,android端配置和代码如下:

android端配置:

    <activity android:name = ".MainActivity">
        <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="jingewenku.com"
                             android:scheme="abraham"/>
        </intent-filter>
    </activity>

注:倘若这几个是布局在开行页要和标签并列在1道,不然运转后手提式有线电话机app的Logo会未有;注意schema协议要小写,不然会有不能够响应的百般!

html代码:

<html>
       <head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
                      <title>Insert title here</title>
       </head> 
        <body> 
            <a href="abraham://jingewenku.com/?pid=1">打开app</a><br/>
        </body>
</html>

 这里大家来看看schema拼接协议的格式:

< a href="[scheme]://[host]/[path]?[query]">启动应用程序< /a>

梯次档案的次序含义如下所示:

scheme:判断运行的App。 ※详细后述

host:适当记述

path:传值时务必的key ※未有也能够

query:获取值的Key和Value ※未有也能够

如上就会促成张开本地的app了,当然是在app存在的景色下,否则的话未有影响。

世家可能会问上边的html代码中布署的不是android里面配备的schema协议呢?作者明显未有布署pid,为何要写那些啊?那是因为大家某些时候在引起本地app的时候恐怕会向app传递一些参数,那么些参数大家就足以安排在那边,大家只供给在oncreate里面获得就足以了,代码如下:

Intent intent = getIntent();
    Uri uri = intent.getData();
    if (uri != null) {
        String pid = uri.getQueryParameter("pid");
    }

只要还想要获取android里面配备的schema协议以来,还足以如此:

Uri uri = getIntent().getData();
if(uri != null) {
 // 完整的url信息
 String url = uri.toString();
 Log.e(TAG, "url: "    uri);
 // scheme部分
 String scheme = uri.getScheme();
 Log.e(TAG, "scheme: "    scheme);
 // host部分
 String host = uri.getHost();
 Log.e(TAG, "host: "    host);
 //port部分
 int port = uri.getPort();
 Log.e(TAG, "host: "    port);
 // 访问路劲
 String path = uri.getPath();
 Log.e(TAG, "path: "    path);
 List<String> pathSegments = uri.getPathSegments();
 // Query部分
 String query = uri.getQuery();
 Log.e(TAG, "query: "    query);
 //获取指定参数值
 String goodsId = uri.getQueryParameter("goodsId");
 Log.e(TAG, "goodsId: "    goodsId);
}

 怎么着决断二个Schema是还是不是管用 :

PackageManager packageManager = getPackageManager();
Intent intent = newIntent(Intent.ACTION_VIEW, Uri.parse("abraham://jingewenku.com:8888/goodsDetail?goodsId=10011002"));
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
booleanisValid = !activities.isEmpty();
if(isValid) {
 startActivity(intent);
}

那种格局也是自己百度到的最多的点子,可是这么就推动了一个问题了,上边包车型客车急需说的是“在页面上有三个总是, 假使用户安装了APP,则点击展开对应的APP;假设用户没有安装,则点击打开对应的设置连接”,这明明就不切合须要了,那只好当作一些独家须要来使用了。

第二种方法:

既然如此经过在href配置schema协议不行,那就只能通过js代码来实现了,只有这么技能凭借剖断落成app有的时候就开采,未有的时候就跳转到下载链接下载。
大家领略,js是无能为力确定手提式无线电话机是还是不是安装了某款app的,所以我们只好曲线救国了,大家能够拿走时间一旦,长日子不可能呼起app则默感觉未有安装那款app,然后跳转到下载页。当然那不是自家想出去的,是英特网的诸位大佬的主见。在此间又要分开为二种情景了。

一.直接唤醒

说明:通过h五可换醒app,如访问贰个UPRADOL,点击开关,展开应用,固然该应用APP未有设置,那么直接跳转到App Store的应用软件下载页面,通过点击的格局包容性较好,假如设置了app,在小弟大各大浏览器(360浏览器、uc浏览器、搜狗浏览器、QQ浏览器、百度浏览器 )和QQ客户端中,能提示。微信、乐乎乐乎客户端、腾讯腾讯网客户端不能唤起。

代码如下:

<html xmlns=http://www.w3.org/1999/xhtml>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<head>
<script src="http://www.ccidsi.com/uploads/allimg/190503/0G02351S-0.jpg"></script>
<title>点击唤醒demo</title>
</head>
<body>
<style>
#zjmobliestart{font-size:40px;}
</style>
<!--
说明:通过h5可换醒app,如访问一个URL,点击按钮,打开应用,如果该应用APP没有安装,那么直接跳转到App Store的APP下载页面,通过点击的方式。兼容性较好,如果安装了app,在手机各大浏览器(360浏览器 uc浏览器 搜狗浏览器 QQ浏览器 百度浏览器 )和QQ客户端中,能唤醒。微信 新浪微博客户端 腾讯微博客户端无法唤醒。
-->
<a href="zjmobile://platformapi/startapp" id="zjmobliestart" target="_blank">唤醒浙江移动手机营业厅!</a>
<script type="text/javascript"> 
function applink(){  
    return function(){  
        var clickedAt =  new Date;  
         setTimeout(function(){
             !window.document.webkitHidden && setTimeout(function(){ 
                   if ( new Date - clickedAt < 2000){  
                       window.location = 'https://itunes.apple.com/us/app/zhe-jiang-yi-dong-shou-ji/id898243566#weixin.qq.com';  
                   }  
             }, 500);       
         }, 500)   
    };  
}  
document.getElementById("zjmobliestart").onclick = applink();  
</script>   
</body>
</html>

二.点击唤醒

证实:通过h5可换醒app,如访问二个UPAJEROL就能够平昔展开应用,假设该应用APP未有安装,那么直接跳转到App Store的APP下载页面。包容性一般:在二弟大各大浏览器(360浏览器、uc浏览器、搜狗浏览器 QQ浏览器、百度浏览器 )能唤醒。微信、QQ客户端、腾讯网和讯客户端、 天涯论坛易客户端不能唤起。

代码如下:

<!Doctype html>
<html xmlns=http://www.w3.org/1999/xhtml>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<head>
<script src="http://www.ccidsi.com/uploads/allimg/190503/0G02351S-0.jpg"></script>
<title>直接唤醒demo</title>
</head>
<body>
<style>
#zjmobliestart{font-size:40px;}
</style>
<!--
说明:通过h5可换醒app,如访问一个URL就能直接打开应用,如果该应用APP没有安装,那么直接跳转到App Store的APP下载页面
兼容性一般:在手机各大浏览器(360浏览器 uc浏览器 搜狗浏览器 QQ浏览器 百度浏览器 )能唤醒。微信 QQ客户端 新浪微博客户端 腾讯微博客户端无法唤醒。
-->
<p id="zjmobliestart">唤醒浙江移动手机营业厅!</p>
<script type="text/javascript"> 
function applink(){   
    window.location = 'zjmobile://platformapi/startapp';  
        var clickedAt =  new Date;  
         setTimeout(function(){
             !window.document.webkitHidden && setTimeout(function(){ 
                   if ( new Date - clickedAt < 2000){  
                       window.location = 'https://itunes.apple.com/us/app/zhe-jiang-yi-dong-shou-ji/id898243566#weixin.qq.com';  
                   }  
             }, 500);       
         }, 500)   

}
applink();
</script>   
</body>
</html>

 那样就完事了我们的须要了,在那么些进度中,也超出了过多令人的讲课,这里记录一下,刚起头有人没精晓我的须要,感到自个儿是在android端来贯彻,让本身经过包名的形式来核实app是或不是安装,这里记录一下方法,代码如下:

皇家赌场网址 1

越来越多格局请查看本人的工具类: CommonUtilLibrary

还有的正是感觉小编是要在app里面通过加载webview的花样来引起本地的app,这里也记录一下,代码如下:

webView.setWebViewClient(new WebViewClient(){ 
            @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { 
                    Uri uri=Uri.parse(url);
                   if(uri.getScheme().equals("abraham")&&uri.getHost().equals("jingewenku.com")){ 
                            String arg0=uri.getQueryParameter("arg0");
                           String arg1=uri.getQueryParameter("arg1"); 
                      }else{ 
          view.loadUrl(url); 
        } return true; 
}});

还要注意的是,假诺是在微信中挑起本地app,手提式有线电话机的微信中,是应用微信内置的浏览器(你能够将事先得到的页面在服务器上的地点发给你的别的联系人,点击发送的新闻就能够展开网页)张开那些轻易的HTML页面,注意:直接打开scheme://host/datastring是不可行的,微信不会把那串字符解析成网站,必须包装成网页才具依据微信的浏览器张开。进入后就是大家刚刚设计的页面。这年,直接点击“运行应用程序”是不会提示从前安装的应用程式的,因为微信做了遮掩,你必要在右上角的菜单中选用“在浏览器中张开”。那年,有个别浏览器就足以提示,有个别浏览器则十二分,举例作者测试机MX四上的嵌入浏览器不行,UC浏览器就能够提醒。部分浏览器不可能唤醒,作者查阅了成都百货上千资料也不可能透彻化解,小编今日唯一能体会精通的是将际遇题目的浏览器让前者做3个剖断,提醒不援救,应该选拔什么浏览器。要是有读者有化解方案,敬请留言,感激!

后记:

微信中缘何不能唤醒App,要求“用浏览器张开”?

因为微信对具备的享受连接做了scheme屏蔽,相当于说分享连接中装有对于scheme的调用都被微信封掉了。

那怎么某个应用是能够引起的,举个例子大众点评,嘀嘀打车?

从非才具角度讲,因为公众点评,嘀嘀打车都以微信的养子,亲孙子。对于外孙子有特殊看护。

从本事角度讲,微信有三个白名单,对于在白名单中的分享连接是不会遮掩掉scheme调用的。

听不晓得?那大家举八个例证。

举例说大众点评的享用连接是

对应到微信白名单中就能够有 那一项,全体源自于这几个延续的享用,都不会遮掩scheme,

比如

就到底大众点评的子公司也得以

到此处,我们就相应知道,想借用大众点评的scheme,绕过这么些主题材料是不恐怕的,除非您的享用连接能挂到公众点评的根域名上。

以此主题素材应该说西魏楚了,其余提一句,对于下载apk那种,微信是挡住任何利用的,对于孙子也不例外,所以您想提供下载链接,无论你是或不是外甥,都逃然则使用浏览器展开个中low的措施了.

附录:常见应用的U猎豹CS六L Scheme

1,系统私下认可使用

名称 URL Scheme Bundle identifier
Safari http://
maps http://maps.google.com
Phone tel://
SMS sms://
Mail mailto://
iBooks ibooks://
App Store itms-apps://itunes.apple.com
Music music://
Videos videos://

二,常用第1方软件

名称 URL Scheme Bundle identifier
QQ mqq://
微信 weixin://
腾讯微博 TencentWeibo://
淘宝 taobao://
支付宝 alipay://
微博 sinaweibo://
weico微博 weico://
QQ浏览器 mqqbrowser:// com.tencent.mttlite
uc浏览器 dolphin:// com.dolphin.browser.iphone.chinese
欧朋浏览器 ohttp:// com.oupeng.mini
搜狗浏览器 SogouMSE:// com.sogou.SogouExplorerMobile
百度地图 baidumap:// com.baidu.map
Chrome googlechrome://
优酷 youku://
京东 openapp.jdmoble://
人人 renren://
美团 imeituan://
1号店 wccbyihaodian://
我查查 wcc://
有道词典 yddictproapp://
知乎 zhihu://
点评 dianping://
微盘 sinavdisk://
豆瓣fm doubanradio://
网易公开课 ntesopen://
名片全能王 camcard://
QQ音乐 qqmusic://
腾讯视频 tenvideo://
豆瓣电影 doubanmovie://
网易云音乐 orpheus://
网易新闻 newsapp://
网易应用 apper://
网易彩票 ntescaipiao://
有道云笔记 youdaonote://
多看 duokan-reader://
全国空气质量指数 dirtybeijing://
百度音乐 baidumusic://
下厨房 xcfapp://

以上正是本文的全部内容,希望对大家的学习抱有帮忙,也盼望大家多多支持帮客之家。 

前二日接到3个有线的急需,作者这些小白然则忙活了好几天在页面上有叁个连接...

第3明晰,微信里屏蔽了schema协议。除非您是微信的合营伙伴之类的,他们尤其给您安插进白名单。不然,大家就不能通过那一个协议在微信中央直机关接唤起app。

故此,大家须要先判定页面场景是或不是在微信中,假诺在微信中,则会唤起用户在浏览器中开采。

1 window.location.href = 'app的协议';
2 
3 setTimeout(function() {
4 window.location.href = 'app的下载地址'
5 },500)

H5中直接推断应用是不是安装

那边的逻辑很简短,当没有得逞张开app的时候,新页面不会弹出则页面逻辑继续打开;否则假诺进入了新页面,则页面逻辑便偃旗息鼓了。所以我们能够另开贰个延时的线程来判别这些事情

if(...){
document.location = '';
setTimeout(function(){
   //此处如果执行则表示没有app
},200);
}

本文由68399皇家赌场发布于集成介绍,转载请注明出处:皇家赌场网址唤起本地app

关键词: 68399皇家赌场 Android开发

最火资讯