最近接到这样的一个需求,通过网上查阅了a lot资料(其实是踩了很多坑),意识到有必要做一个这样的随笔,以便查阅。
先说重点:
1. 第三方浏览器通过网页打开app的普遍方法是通过scheme命令直接打开。
2. 微信或QQ浏览器通过网页打开app最完善的方法是上传应用宝。
3. 微信或QQ浏览器通过网页打开app只有ios9以上可实现(Android和Ios 9以下除外)。
废话不说,上代码:
一。 第三方浏览器直接打开app。
1 安卓:
2
3 var state = null;
4 try {
5 if (scheme != '') {
6 openIframe.src = '【scheme】://【host】/【openwith】';
7 }
8 } catch (e) { }
9 if (state) {
10 window.close();
11 } else {
12 location.href='下载地址';
13 }
14
15 苹果:
16
17 if (scheme != '') {
18 window.location.href = '【scheme】://';
19 }
此处推荐做法:在页面加载的时候尝试打开,加载完毕点击跳转到下载(推荐)。【注:此方式弊端为ios safari浏览器打开时,会提示无法打开】
二。微信或QQ浏览器直接打开app。
注:此方法仅适用于苹果ios9以上系统。
准备以下stuff:
1. 独立域名。
2. SSL证书。
3. 被签名的json文件。
4. Xcode 7・iOS 9 SDK
5. Capabilities
6. AppDelegate的代理设置
步骤:
1. 在Capabilities的设置中,设置`Associated Domains’的Domains内容
例:https://www.facebook.com/ -> applinks:facebook.com
2. apple-app-site-association文件的配置
注:apple-app-site-association文件一定要放在服务器的根目录下。
1 {
2 "applinks": {
3 "apps": [],
4 "details": {
5 "TBEJCS6FFP.com.domain.App": {
6 "paths":[ "*" ]
7 }
8 }
9 }
10 }
paths中的内容为对应App启动的链接路径
全路径的时候使用“*”。
特定位置的时候需要指定具体内容,
1 ["/wwdc/news/", /videos/wwdc/2015/*]
TBEJCS6FFP.com.domain.App这部分使用的是你的TeamID和Bundle Identifier
3. 对apple-app-site-association文件的签名
1 cat apple-app-site-association-unsigned.js | openssl smime -sign -inkey g01-server.key -signer g01-server.crt -certfile g01-dvcacert.cer -noattr -nodetach -outform DER > apple-app-site-association
4. App对应的开发
在AppDelegate.m文件中添加以下代码
1 - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
2 {
3 NSLog(@"continueUserActiity enter");
4 NSLog(@"\tAction Type : %@", userActivity.activityType);
5 NSLog(@"\tURL : %@", userActivity.webpageURL);
6 NSLog(@"\tuserinfo :%@",userActivity.userInfo);
7
8 NSLog(@"continueUserActiity exit");
9 restorationHandler(nil);
10
11 NSHTTPCookieStorage *sharedHTTPCookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
12 NSArray *cookies = [sharedHTTPCookieStorage cookiesForURL:userActivity.webpageURL];
13
14 NSLog(@"COOKIE{name: %@", cookies);
15 return true;
16 }
如代码所示,我们可以获取到跳转链接的一些基本信息
URL内容,ActionType等都是可以获取并且在代码中进行修改的。
微信或QQ浏览器打开ios9以上app 结束。
三。微信或QQ浏览器通过应用宝直接打开app
此方法有待完善(事实是我也没有处理过)。
结束。