zoukankan      html  css  js  c++  java
  • iOS9上的Universal Link实现(教程)

    1.Universal Link

    理解为苹果官方支持deeplink就行了

    2.通过点击HTTP链接启动APP

    Web・iOS应用在支持Universal Link的前提下,当用户点击特点的链接时会自己起动应用

    ・App已经安装的前提下:直接启动App然后现实链接内容

    ・App没有安装的前提下:Web上继续显示链接内容

    3.Universal Link的实现方法

    首先需要准备一下内容

    Web服务器

       ・独立的domain

       ・SSL证书

     ・被签名的JSON文件

    iOS应用

      ・iOS9以上

      ・Xcode 7・iOS 9 SDK

      ・Capabilities

      ・AppDelegate的代理设置

    3.1 Capabilities的设置

    在Capabilities的设置中,设置`Associated Domains’的Domains内容

    例:https://www.facebook.com/ -> applinks:facebook.com

    注意:对于subdomain,www的有无要仔细考虑一下

    3.2 apple-app-site-association文件的配置

    apple-app-site-association文件一定要放在服务器的根目录下!!!!!!

    首先要准备一下apple-app-site-association文件

    {
      "applinks": {
        "apps": [],
        "details": {
          "TBEJCS6FFP.com.domain.App": {
            "paths":[ "*" ]
          }
        }
      }
    }
    

     paths中的内容为对应App启动的链接路径

    全路径的时候使用“*”。

    特定位置的时候需要指定具体内容,

    ["/wwdc/news/", /videos/wwdc/2015/*]
    

     TBEJCS6FFP.com.domain.App这部分使用的是你的TeamID和Bundle Identifier

    3.3 对apple-app-site-association文件的签名

    我使用的是以下的方法对apple-app-site-association进行签名。

    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
    

    3.4 App对应的开发

    AppDelegate.m文件中添加以下代码

    - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
    {
        NSLog(@"continueUserActiity enter");
        NSLog(@"	Action Type : %@", userActivity.activityType);
        NSLog(@"	URL         : %@", userActivity.webpageURL);
        NSLog(@"	userinfo :%@",userActivity.userInfo);
        
        NSLog(@"continueUserActiity exit");
        restorationHandler(nil);
        
        NSHTTPCookieStorage *sharedHTTPCookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
        NSArray *cookies = [sharedHTTPCookieStorage cookiesForURL:userActivity.webpageURL];
    
         NSLog(@"COOKIE{name: %@", cookies);
        return true;
    }
    

     如代码所示,我们可以获取到跳转链接的一些基本信息

    URL内容,ActionType等都是可以获取并且在代码中进行修改的。

    4.结果

    通过以上的配置后,一个基础的Universal Link应用就开发结束了

    点击对应的链接我们可以看到自己的App被成功启动

    5.一些事实

    相同的服务器不同的目录结构可能导致Universal Link不启动

    应用和json文件同时更新时,json更新的部分可能会没有效果

    如果需要使用我的服务器和app进行测试的同时可以私信我。

     

  • 相关阅读:
    php7 & lua 压测对比
    .NET CORE——Console中使用依赖注入
    EntityFramework Core 自动绑定模型映射
    月末总结与推书
    Dapper连接与事务的简单封装
    EntityFramework Core 学习扫盲
    从输入url到页面返回到底发生了什么
    [译]C#和.NET中的字符串
    利用C#迭代器的一个杨辉三角示例
    用 dotTrace 进行性能分析时,各种不同性能分析选项的含义和用途
  • 原文地址:https://www.cnblogs.com/dinghing154/p/5111487.html
Copyright © 2011-2022 走看看