本项目是 MobileDeepLinking 规范的 iOS 库组件,该规范是移动应用程序深层链接的行业标准。本规范和相关库简化了深层链接的实施,并提供了灵活强大的路由功能。
给定一个配置文件(MobileDeepLinking.json
),本库提供了一个应用路由传入深层链接到视图控制器或自定义逻辑的能力。它能够自动实例化和将视图控制器推送到导航控制器,以及注册在匹配深层链接时执行的回调处理程序。
当在配置文件中定义了视图时,库会适当实例化 viewController 并尝试将其推送到相应的导航控制器。配置文件中定义的路由参数(路径和查询参数)将设置在 viewController 上。
支持三种类型的 viewController。以下列出了这些类型及其相应的 json 配置设置:
storyboard
(Storyboard 名称)和 identifier
(视图Storyboard标识符)属性identifier
(Xib 名称)和 class
(ViewController类名称)属性。class
(ViewController类名称)属性。在某些情况下,您可能需要在显示视图之前设置视图。此功能可以通过使用自定义处理程序来实现。在 AppDelegate 中的 didFinishLaunchingWithOptions
方法中,您可以注册在关联路由匹配时执行的块(实际上是回调函数)。这种关联在配置 json 中进行。
这些处理程序提供了一个包含所有在深层链接中找到的路由参数的 NSDictionary。它们可以修改此字典的内容,这将传递给处理程序数组中的下一个处理程序。处理程序可以在多个路由之间重复使用,并且可以与视图实例化一起使用或单独使用。
该库使用ARC开发,并支持所有架构上iOS 5及更高版本。
本库遵循以下此处概述的iOS框架构建流程。库可以在releases/文件夹中找到。它也可以通过CocoaPods获取。
从源代码构建
MobileDeepLinking-iOS
方案。Framework
方案。Products
文件夹,右键点击.a文件,然后点击“在Finder中显示”。在这个文件夹中,您将看到您的.framework
文件夹。这是可以放入其他项目的已构建框架文件。在你的项目中创建一个MobileDeepLinking.json
文件,包含你想要的路径和选项。请参见示例应用程序和规范获取示例。
在AppDelegate的方法- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
中插入以下行
[[MobileDeepLinking sharedInstance] routeUsingUrl:url];
在你的AppDelegate的didFinishLaunchingWithOptions
方法中注册自定义处理程序(如有需要)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[MobileDeepLinking sharedInstance] registerHandlerWithName:@"exampleHandler" handler:^void(NSDictionary *params)
{
NSLog(@"exampleHandler");
}];
}
此假设你已经安装了CocoaPods。
pod install
MobileDeepLinking.xcworkspace
MobileDeepLinking.xcworkspace
的一部分包括了MobileDeepLinkingDemo
。这是一个示例应用程序,它提供了一个示例实现MobileDeepLinking.json
文件的示例,还包括几个自定义处理程序,演示如何路由到客户端指定的功能。它还提供了基于Storyboard视图、基于xib视图以及没有任何Interface Builder元素的视图的示例路由。
版权所有 © 2014 MobileDeepLinking.org 及其他贡献者 http://mobiledeeplinking.org
任何获得此软件及其相关文档文件(“软件”)副本的个人,允许免费(无论何种目的)在软件上进行操作,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或转售副本,并允许软件提供者这样做,前提是遵守以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
本软件按“现状”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、适用于特定目的和无侵权性的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任承担责任,无论该索赔、损害或其他责任是基于合同、侵权或其他原因,无论是在软件或使用或操作软件的过程中产生的。