ele.me在IOS浏览器端启动APP的技巧分析
ele.me在IOS浏览器端启动APP的技巧分析
- 巧妙利用后台重定向,在schemes启动时提示用户打开,启动不了APP时能够及时跳转至下载页面。
- 避免报错页面的出现以及用户还没来的及选择就跳转到下载页面。
- 在没有universal link时,此种方法是一种很好的解决方案。
附上ele源码
<script type="text/javascript">
"use strict";
window.onload = function() {
//尝试schemes码打开app
location.href = "eleme://";
//判断andriod还是ios还是微信
var e = window.navigator.userAgent,
i = "",
n = (new UParams).from;
if(/iphone|iPad/i.test(e) && /micromessenger/i.test(e))
return void(location.href = "http://a.app.qq.com/o/simple.jsp?pkgname=me.ele");
if(/Android/i.test(e) && /micromessenger/i.test(e))
return void document.write('\n <div class="wechat-warning">\n <img src="//static11.elemecdn.com/eleme/activities/dist/download/tip.0ccdda.png" alt="下载应用请点击右上角按钮选择[在浏览器中打开]">\n <div>下载应用请点击右上角按钮<br/>选择[在浏览器中打开]</div>\n </div>\n ');
if(!/iPhone|iPad/.test(navigator.userAgent))
return void(location.href = "//uxmgnt.ele.me/download/" + (n ? n : "eleme"));
//后台重定向处理(关键步骤)
i = "//uxmgnt.ele.me/download/eleme";
//ajax请求,怀疑是统计下载量
var o = new XMLHttpRequest; //
o.open("POST", location.origin.replace(/h\./, "mainsite-restapi.") + "/ugc/download/channels/ios"),
o.withCredentials = !0;
var t = {
source: n || "",
is_web: !0
};
o.onload = o.onerror = function() {
//触发后台重定向
i && (location.href = i)
},
o.send(JSON.stringify(t))
};
// withCredentials解惑
// 如果需要读取读取cookie:
// 需要配置参数:Access-Control-Allow-Credentials:true
// 同时在xhr发起请求的时候设置参数withCredentials为true:
// var xhr = new XMLHttpRequest(); ;
// xhr.open('GET', 'http: //b.com/cros/ajax.php', true);
// xhr.withCredentials = true;
// xhr.onload = function () {
// alert(xhr.response);//reposHTML;
// };
// xhr.onerror = function () {
// alert('error making the request.');
// };
// xhr.send();
// 如:Access-Control-Allow-Origin:http://a.com表示允许a.com下的域名跨域访问;
</script>
原文来至:http://www.cnblogs.com/chunlei36/articles/6287148.html
ele.me在IOS浏览器端启动APP的技巧分析的更多相关文章
- 【js】手机浏览器端唤起app,没有app就去下载app 的方法
这种功能的作用: 1.一般公司有自己的app,而app是需要不断有新用户涌入才能持续运营,达到不错的收入.就需要使用这种方式进行引入新的用户. 2.一些内容在网页端体验不好,或者一些功能需要app内才 ...
- fiddler实现B/S端、APP抓包分析遇到的各种疑问
阅读本文前您需要先下载fiddler并成功安装,并且要有一丢丢测试和接口基础或者在学习fidder时遇到了问题,或许本文可以帮助到你 一.B/S端抓包 Fiddler设置 1. 官网下载fiddler ...
- Netty之旅三:Netty服务端启动源码分析,一梭子带走!
Netty服务端启动流程源码分析 前记 哈喽,自从上篇<Netty之旅二:口口相传的高性能Netty到底是什么?>后,迟迟两周才开启今天的Netty源码系列.源码分析的第一篇文章,下一篇我 ...
- Netty入门一:服务端应用搭建 & 启动过程源码分析
最近周末也没啥事就学学Netty,同时打算写一些博客记录一下(写的过程理解更加深刻了) 本文主要从三个方法来呈现:Netty核心组件简介.Netty服务端创建.Netty启动过程源码分析 如果你对Ne ...
- Android在浏览器启动APP
要想在浏览器启动APP的方法例如以下: 在须要跳转的ACTIVITY中加入intent-filter的相关信息: <intent-filter> <data android: ...
- 浏览器通过Scheme协议启动APP中的页面
在APP开发过程中,通过外部浏览器调起APP页面的场景也很普遍使用.下面就介绍一下通过外部H5页面唤起APP中页面的通用方法. 1.首先需要在AndroidMainifest.xml中对你要启动的那个 ...
- ios移动端浏览器点击事件失效的解决方案
点击事件失效的原因可能是因为,你用了事件代理了, 比如这样 $(document).on("click",".fd",function(){ }) 这段代码在安 ...
- ios下微信浏览器如何唤醒app?app已上架应用宝
android下可以通过在应用宝微下载地址后面加参数&android_schema='应用schema'来实现,ios下如何实现? ios下微信浏览器如何唤醒app?app已上架应用宝 > ...
- appium启动app(ios)
Appium启动APP至少需要7个参数 'platformVersion','deviceName'.'udid'.'bundleId'.'platformName'.'automationNam ...
随机推荐
- c#二进制、十进制、16进制之间的转换
//十进制转二进制 Console.WriteLine(Convert.ToString(69, 2)); //十进制转八进制 Console.WriteLine(Convert.ToString(6 ...
- Backbone.js的技巧和模式
Backbone.js的技巧和模式 Backbone.js的技巧和模式 本文由白牙根据Phillip Whisenhunt的<Backbone.js Tips And Patterns> ...
- 由ASP.NET所谓前台调用后台、后台调用前台想到HTTP
由ASP.NET所谓前台调用后台.后台调用前台想到HTTP 在由ASP.NET所谓前台调用后台.后台调用前台想到HTTP——理论篇中描述了一下ASP.NET新手的三个问题及相关的HTTP协议内容,在由 ...
- 【NET】Winform分页控件初探
public partial class WinFormPager : UserControl { ; /// <summary> /// 当前页 /// </summary> ...
- springMVC3学习(七)--Interceptor拦截器
Spring为我们提供了:org.springframework.web.servlet.HandlerInterceptor接口, org.springframework.web.servlet.h ...
- ASP.NET MVC页面UI之多级数据选择UI(行业信息、专业信息、职位信息的选择)
多级数据选择操作在开发中是常见的操作,比如选择行业信息时,一般有个大类,每个大类下边又包含很多小类,本文简单实现了弹出窗口一级一级选择功能. 本文博客出处:http://www.kwstu.com/A ...
- Spring整合Hibernate笔记
1. Spring 指定datasource a) 参考文档,找dbcp.BasicDataSource i. c3p0 ii. dbcp <bean id="dataSource&q ...
- ASP.NET Web API的消息处理管道: HttpRoutingDispatcher
ASP.NET Web API的消息处理管道: HttpRoutingDispatcher 认情况下,作为消息处理管道“龙头”的HttpServer的Dispatcher属性返回一个HttpRouti ...
- Excel 菜单系统
Excel 菜单系统 在开始Excel开发之前,需要把架子搭起来.最直接的那就是Excel里面的菜单了,他向用户直观的展现了我们的插件具有哪些功能.菜单出来之后我们就可以实现里面的事件和功能了.Exc ...
- Complexity Behind Closure
这篇文章同时发布在github上 这篇文章是我对ooc编译器里一个小bug调试时作的手记.虽然相信大多数人对编译器(并且是一门小众语言的编译器)并不感兴趣,但这篇文章可以给C用户们提供一些Object ...