• 手机网页通过js打开app


    最近接到这样的一个需求,通过网上查阅了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(@"	Action Type : %@", userActivity.activityType);
     5     NSLog(@"	URL         : %@", userActivity.webpageURL);
     6     NSLog(@"	userinfo :%@",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

    此方法有待完善(事实是我也没有处理过)。

    结束。

  • 相关阅读:
    ZOJ 3818 Pretty Poem
    HDU 4597 Play Game
    HDU 4497 GCD and LCM
    CSU 1335 高桥和低桥
    UVA 10791 Minimum Sum LCM
    CSU 1119 Collecting Coins
    CSU 1120 病毒
    UVA 12169 Disgruntled Judge
    HDU 1301 Jungle Roads
    POJ 1258 Agri-Net
  • 原文地址:https://www.cnblogs.com/jerry-liu/p/7491219.html
Copyright © 2020-2023  润新知