测试测试 | ✗ |
Lang语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017年5月 |
SwiftSwift版本 | 3.0 |
SPM支持SPM | ✗ |
由Gabriel Massana维护。
DeepTurn是一个Swift工具,用于在iOS应用程序中启用深层链接。
它是基于Turnpike的,一个具有相同目的的Objective-C pod。原始项目由James Lawrence Turner创建。
深层链接的核心概念是允许从其他应用程序打开您的应用程序的任何视图。
利用关联域
功能,我们可以轻松地从任何地方打开应用程序。通过深层链接
,我们还可以打开任何视图。
要使用深层链接,我们需要设置适当内部架构。为此,我们将使用URL-Scheme
来内部导航应用程序。
DeepTurn会帮助您完成这项工作。
因此,为了完成这项工作,我们将需要设置关联域并注册自定义URL Scheme。
platform :ios, '9.0'
pod 'DeepTurn'
然后,运行以下命令
$ pod install
遵循本操作指南
您还需要将以下内容添加到Info.plist中:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>com.company.app</string>
<key>CFBundleURLSchemes</key>
<array>
<string>com.company.app</string>
</array>
</dict>
</array>
另外,您需要捕捉AppDelegate中的任何来自应用程序外部的URL:application(_:open:sourceApplication:annotation:)
代码中的示例尽可能简单。如果您打算使用DeepTurn,您将需要一个Manager来处理应用程序的整个导航。
您可能将存储了对您的rootViewController
的强引用。有了RootViewController,您将能够推送或呈现您的深层链接视图。
Deepturn有三个公开函数可使用
mapRoute()
:用于设置应用程序支持的所有路由。mapDefault()
:用于设置默认路由,以防我们尝试使用深链接,但路由未知。resolve()
:将URL推送到系统。// Setting up the Routes
Deepturn.mapRoute(withFormat: "other/viewController/:red/:green/:blue", toDestination: {
(request: RouteRequest?) in
guard let routeParameters = request?.routeParameters,
let queryParameters = request?.queryParameters,
let red = routeParameters["red"],
let green = routeParameters["green"],
let blue = routeParameters["blue"],
let floatRed = Float(red),
let floatGreen = Float(green),
let floatBlue = Float(blue) else {
return
}
let color = UIColor(red: CGFloat(floatRed) / 255.0,
green: CGFloat(floatGreen) / 255.0,
blue: CGFloat(floatBlue) / 255.0,
alpha: 1.0)
let isAnimated = queryParameters["is_animated"]
var animated = true
if isAnimated == "false" {
animated = false
}
let otherViewController = OtherViewController(nibName: nil,
bundle: nil)
otherViewController.view.backgroundColor = color
rootViewController.present(otherViewController,
animated: animated,
completion: nil)
})
Deepturn.mapDefault { (request: RouteRequest?) in
}
// Calling to resolve a URL
let red = String(arc4random_uniform(256))
let green = String(arc4random_uniform(255))
let blue = String(arc4random_uniform(255))
var animated = true
if arc4random_uniform(2) == 0 {
animated = false
}
if let url = URL(string: "other/viewController/\(red)/\(green)/\(blue)/?is_animated=\(animated)") {
Deepturn.resolve(url: url)
}
在这个示例中,我们将以模态方式演示ViewController,背景随机,动画随机。
该示例允许您了解如何使用查询和路由参数。
DeepTurn-iOS在MIT许可证下发布。请参阅名为LICENSE的文件。
$ git tag -a 0.2.0 -m 'Version 0.2.0'
$ git push --tags
Gabriel Massana
如果您遇到特定于DeepTurn-iOS的问题,或者有功能请求,或者想要分享评论,请在此处新建一个问题。