DeepLinkSDK 0.2.7

DeepLinkSDK 0.2.7

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2015年5月

Wes SmithChris Maddern维护。



DeepLink SDK

概述

Button DeepLink SDK 是一种出色的基于路由匹配和代码块的方式,用于处理您的深度链接。与其决定如何格式化您的 URL,解析它们,传递数据,导航到特定内容或执行操作,此库以及几行代码将带领您入门。

完整文档

查看

通过运行以下命令尝试运行 DeepLinkSDK 示例项目:

pod try "DeepLinkSDK"

安装

DeepLinkSDK 通过 CocoaPods 提供。要安装库,只需将以下行添加到您的 Podfile

pod "DeepLinkSDK"

用法

按照以下简单步骤,在不到 5 分钟内将深度链接支持添加到您的应用。

注意:0.2.0 开始,在所有注册的路由中,路径被认为是始于第一个正斜杠。第一个正斜杠之前的路由组件将被认为是主机。



1. 请确保您在 Info.plist 中为您的应用注册了 URL 方案


2. 在您的应用代理中创建 DPLDeepLinkRouter 的实例

- (BOOL)application:(UIApplication *)application
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  self.router = [[DPLDeepLinkRouter alloc] init];

  return YES;
}


3. 注册一个路由处理程序

self.router[@"/log/:message"] = ^(DPLDeepLink *link) {
  NSLog(@"%@", link.routeParameters[@"message"]);
};


4. 将传入的 URL 传递给路由器

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {

  [self.router handleURL:url withCompletion:NULL];

  return YES;
}

通过阅读我们的集成指南 了解更多有关 DeepLinkSDK 的信息。

路由注册示例

进入您应用的 URL 将与以下类似:<scheme>://<host>/<path-component>/<path-component>

在注册路由时,请注意,您注册的路由中的第一个正斜杠决定了要匹配的路径的开始。第一个正斜杠之前的路由组件将被认为是主机。

假设您有一个进入的 URL 为 twitter://timeline

// Matches the URL.
router[@"timeline"] = ^{ … }

// Does not match the URL.
router[@"/timeline"] = ^{ … }

另一个例子,URL 为 twitter://dpl.com/timeline

// Matches the URL.
router[@"/timeline"] = ^{ … }

// Does not match the URL.
router[@"timeline"] = ^{ … }

您还可以针对特定方案进行设置。如果您在应用程序中支持多个URL方案,您可以注册与这些方案相关的特定路由,操作如下

一个入境URL为scheme-one://timeline

// Matches the URL.
router[@"scheme-one://timeline"] = ^{ … }

// Does not match the URL.
router[@"scheme-two://timeline"] = ^{ … }

AppLinks 支持

您的应用程序支持AppLinks吗?您可以通过导入DPLDeepLink+AppLinks类别轻松地处理传入的AppLinks。AppLinks类别提供了对所有1.0属性的便捷访问器。

router[@"/timeline"] = ^(DPLDeepLink *link) {
  NSURL *referrerURL  = link.referralURL;
  NSString *someValue = link.extras[@"some-key"];
}

运行示例

要运行示例项目,请在终端中运行pod try DeepLinkSDK。您也可以克隆存储库,然后从项目根目录运行pod install。如果您没有CocoaPods,请从以下指南开始:此指南

有两个演示应用程序,分别为SenderDemoReceiverDemoReceiverDemo中有一些已注册的路由将处理特定的深度链接。SenderDemo有两个操作,可以将深度链接发送到ReceiverDemo进行满足。

首先运行SenderDemo构建方案,然后停止模拟器并切换构建方案到ReceiverDemo并再次运行。现在您可以在模拟器中切换回SenderDemo应用程序并触摸任一操作。

创建深度链接

您还可以使用DPLMutableDeepLink创建深度链接。在两个集成有DeepLinkKit的应用程序之间,您可以通过深度链接从应用程序传递到另一个应用程序的复杂对象,并且在另一端轻松获取该对象。

在第一个应用程序中

NSMutableDeepLink *link = [[NSMutableDeepLink alloc] initWithString:@"app-two://categories"];
link[@"brew-types"] = @[@"Ale", @"Lager", @"Stout", @"Wheat"]
link[@"beers"] = @{
  @"ales": @[
    @{
        @"name": @"Southern Tier Pumking Ale",
        @"price": @799
    },
    @{
        @"name": @"Sierra Nevada Celebration Ale",
        @"price": @799
    }
  ],
  @"lagers": @[
     ...
  ],
  ...
}

[[UIApplication sharedApplication] openURL:link.URL];

在第二个应用程序中

router[@"categories"] = ^(DPLDeepLink *link) {
  NSArray *brewTypes  = link[@"brew-types"];
  NSDictionary *beers = link[@"beers"];
}

作者

Wes Smith
Chris Maddern

许可

DeepLinkSDK根据MIT许可证提供。有关更多信息,请参阅LICENSE文件。

贡献

我们非常希望看到您改进此库的想法。最佳贡献方式是提交pull request。我们将尽最大努力尽快回应您。如果您发现bug或有问题,您还可以提交新的Github问题。:octocat:

请确保遵循我们的通用编码风格并为新功能添加测试覆盖率!