DeepTurn 0.3.0

DeepTurn 0.3.0

测试测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2017年5月
SwiftSwift版本3.0
SPM支持SPM

Gabriel Massana维护。



DeepTurn 0.3.0

  • Gabriel Massana

DeepTurn-iOS

这是什么?

DeepTurn是一个Swift工具,用于在iOS应用程序中启用深层链接。

它是基于Turnpike的,一个具有相同目的的Objective-C pod。原始项目由James Lawrence Turner创建。

深层链接概念

深层链接的核心概念是允许从其他应用程序打开您的应用程序的任何视图。

利用关联域功能,我们可以轻松地从任何地方打开应用程序。通过深层链接,我们还可以打开任何视图。

要使用深层链接,我们需要设置适当内部架构。为此,我们将使用URL-Scheme来内部导航应用程序。

DeepTurn会帮助您完成这项工作。

因此,为了完成这项工作,我们将需要设置关联域并注册自定义URL Scheme。

安装

Podfile

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的问题,或者有功能请求,或者想要分享评论,请在此处新建一个问题