• iOS DeepLinkKit使用简单介绍


    Update: 2017.04.08 添加了使用iOS DeepLinkKit使用Universal Links的部分

    ---------------------------------------------------------

    废话不多说,先说做这个的需求:

    1.应用中有些社交元素的分享会分享一个链接到facebook, twitter, google+这类的社交媒体上

    2.当用户点击某个链接的时候先跳转到自己的页面,然后再传递參数到iOS应用上打开指定的分享数据


    思路:iOS提供了Scheme这个东西能够从浏览器或者其它应用跳转到自己的应用,查询scheme相关的内容。

    在大概了解了Scheme机制之后在github上找到DeepLinkKit这个第三方组件。


    使用例如以下:

    1.在plist中加入一个URL Type, 比方URL Schemes叫com.test.test

    2.在AppDelegate 中加入例如以下代码:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        router = [[DPLDeepLinkRouter alloc] init];
        
        //浏览器调用url: "com.test.test://L/aa/123/456", 这样bb取到123, cc取到456
        router[@"/aa/:bb/:cc"] = ^(DPLDeepLink *link) {
            NSLog(@"----------DeepLink: %@, %@----------", link.routeParameters[@"bb"], link.routeParameters[@"cc"]);
        };
    }

    3.在AppDelegate 中加入例如以下代码:
    - (BOOL)application:(UIApplication *)application
                openURL:(NSURL *)url
      sourceApplication:(NSString *)sourceApplication
             annotation:(id)annotation {
        BOOL success = [router handleURL:url withCompletion:nil];
        return success;
    }

    4.将应用退到后台,在浏览器中输入com.test.test://L/aa/123/456,这里router的block会生效。


    解释一下,这里L是DeepLinkKit这个组件需要的。但内容可随便输入,总之在host之前必需要有一个字段。aa是DeepLinkKit中提到的host。这个要跟router注冊时的字符一样。其它不必解释了。

    用下来,DeepLinkKit还是比較简单的,但文档写得比較不好,我看了好久代码,当中研究他的demo帮助最大。



    希望对须要做深度链接的同学有帮助,有不论什么问题,请在这里留言,我们一起交流。谢谢!


    -------------------------

    Update: 2017.04.08

    从iOS 9.2開始增加了Universal Links机制来进一步加强应用间跳转相关的功能,关于这方面的内容推荐阅读一下Deferred Deep Linking in iOS ,这篇文章对Deep Linking的两种方式有非常具体的解说。你不可错过。我就不搬运过来了。

    使用iOS DeepLinkKit要支持Universal Links,首先你要在你官网的根文件夹下放一个JSON文件,前面提到的网页里面都有具体的讲述。

    在做好这些前期准备后,你须要将下面代码增加到你的项目里面:

    - (BOOL)application:(UIApplication *)application
            continueUserActivity:(NSUserActivity *)userActivity
              restorationHandler:(void (^)(NSArray *))restorationHandler {
    
        return [self.router handleUserActivity:userActivity withCompletion:NULL];
    }


    另外,由于我有比較多的类似于收集效果之类的需求,非常早之前就開始使用Branch了。这个用起来也不错,只是官方的文档也全是英文的,眼下还没有比較好的中文使用简单介绍,可能对一些对自己的英文能力不够自信的朋友会造成压力,有时间我整理一份中文的使用简单介绍出来吧。



  • 相关阅读:
    Django的开发服务的搭建和使用
    Openerp
    Django Url设计 小知识点
    try...finally的用法
    SQL rownum的用法
    oracle 日期常用函數sysdate
    datetime.datetime.now()时间格式转化是碰到的问题
    CSS BACKGROUND汇总
    css3动画效果小结
    javascript花式理解闭包
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7137342.html
Copyright © 2020-2023  润新知