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吗?您可以通过导入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,请从以下指南开始:此指南。
有两个演示应用程序,分别为SenderDemo
和ReceiverDemo
。ReceiverDemo
中有一些已注册的路由将处理特定的深度链接。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"];
}
DeepLinkSDK根据MIT许可证提供。有关更多信息,请参阅LICENSE文件。
我们非常希望看到您改进此库的想法。最佳贡献方式是提交pull request。我们将尽最大努力尽快回应您。如果您发现bug或有问题,您还可以提交新的Github问题。
请确保遵循我们的通用编码风格并为新功能添加测试覆盖率!