Swift:在Safari中打开App

简介:

打开之前会发生什么呢,先看看这个图:

我这里只是简单模拟了一下。当你输入一个特殊的“url”之后,Safari弹出一个提示,问你是否继续打开这个App。如果你这个时候confirm的话。那么这个App就会打开。

我们打开看看这个app是什么样的App。看图:

是一个灰常简答的TableView。然后点击某一行的时候会跳转到一个号称是详细也的地方。其实什么都没有。只有一个地方可以看的,那就是这个页面的title。记住这个title,后面的功能展示就全靠他了。

当你跳转到详细页的时候就是这个样子的:

是的就一个title,然后没别的了。

我们接着上文继续。上文说到在Safari中输入一个特殊的“URL”,confirm了Safari的弹出框以后就会打开这个应用。到这里来说只是初级的功能。因为这样显然还是不够的。我们需要的是用户完成confirm弹出框以后可以打开详细页。一步一步来。

1. 在Xcode6+版本中选择你的项目,之后选择infotab。看图:

从左到右一共三步就到了设置url scheme的地方了。图:

在info页面里的最下面有个URL Types,点开以后在里面设置URL Scheme为deeplink,当然了,这里可以按照你需要的方式设置任意的URL Scheme。

到这里,保存一下然后运行你的App。App运行起来以后按下cmd+shift+H,调到app界面。之后打开Safari,在地址栏中输入deeplink://,然后点Go按钮。接下来就会弹出一个comfirm的弹框。点击open,你的app就会打开。图:

1. 在地址栏中输入你定义的url scheme。

2. 点Go按钮后弹出confirm框

点open按钮后,你的app就会打开。

但是。。我们要得不只是这样而已。url scheme能提供给我们的也不只是这样而已。我们要打开的是详细页。

url 有了scheme,那么就可以有后面的一堆东西。比如:http://baidu.com。有了http://后面就可以有baidu.com。我们也可以这样用。在deeplink://后面加入一串数字,用这串数字可以代表很多。在这里我们就用这串数字来代表一个详细页需要展示的产品的产品编号。这些都很简单,但是怎么实现呢???

其实,很多的App的第三方登录用的就是这个东西。比如微博或者微信的登录或者分享之类的。在选择了登录之后就会跳到微信或者微博里,等登录了以后就可以跳转回去。这些都是用的自定义url scheme。在配置SDK的时候你都会看到这样的要求。使用这样的方法打开的方法是:func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool,这个方法是在AppDelegate类中得。默认没有提供实现,需要我们自己添加。

 

在这个方法执行的时候,添加一段代码:println(url.absoluteString),可以打印出来开启App的url是什么。我们这里当然是,比如,我要包括产品的详细编号的话就是:"deeplink://1234567890"。那么在这里打印出来的就是整个的这个字符串:"deeplink://1234567890"。因为,我们的url scheme是固定不变的。那么我们可以截取产品的具体编号。

var itemCode = (url.absoluteStringas NSString).substringFromIndex(11)

这样就可以获得产品的编号。然后调用window的rootViewController(需要说明的是,我们的rootViewControllerUINavigationController)。只需要把产品编号赋值给产品详细页的Controller,让这个Controller使用这个产品编号从服务器后端获取产品的详细信息就可以了。当然在后面的实现中是不包括从后端获取信息的内容的。这些功能也很容易添加。

我们在DetailViewController中添加一个产品编号的属性:var productDetail: String!。之后,将这个属性赋值给Controller的title,在页面中展示出来。

1
2
3
4
5
6
7
override func viewDidLoad() {
     super .viewDidLoad()
 
     self .view.backgroundColor = UIColor.whiteColor()
     
    <em><strong>  self .title =  self .productDetail</strong></em>
}

了解了具体的展示以后,看看如何在上面说到的方法:func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool中如何处理页面的跳转,不处理的话只是打开了UINavigationController的rootViewController。

这样的处理其实也很简单。UINavigationController本来已经是rootViewController了,只要push一下初始化好的DetailViewController就完事大吉了。非常简单。代码:

1
2
3
4
5
6
7
8
         if  let window =  self .window, let rootController = window.rootViewController {
//            self.window?.rootViewController
             println( "window is cool" )
             var navController = rootController as! UINavigationController
             <em><strong>var detailController = DetailViewController()
             detailController.productDetail = itemCode
             navController.pushViewController(detailController, animated:  true )</strong></em>
         }

这样就处理完毕了。打开safari,输入“deeplink://1234567890”,看看运行效果吧:

so far so good!但是,还有一个bug。重复多次试验就会看到。想想怎么解决吧,就当是课后作业。

 

欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 572064792 | Nodejs:329118122 做人要厚道,转载请注明出处!












本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sunshine-anycall/p/4527831.html ,如需转载请自行联系原作者
相关文章
|
5月前
|
JavaScript 前端开发 PHP
用swift开发ios移动端app应用初体验
直接跟着 apple 官方的 SwiftUI 教程跑的,写惯了 javascript 奔放的代码,很多语法理解起来还是有点费劲
57 1
|
移动开发 前端开发 weex
手淘 App 如何落地 Swift ?一边探索实践,一边“打怪升级”
自从 2014 年苹果发布 Swift 至今,历经多次迭代,Swift 终于迎来了 ABI 稳定,SwiftUI 的发布也引起无数 Apple 平台开发者的欢呼。多年来广受关注而又备受争议的 Swift,终于开始被很多大型 App 坚定地采用。在这其中,淘宝 App 就是一个典型:从 Swift 2.0 时代的浅尝辄止,到去年 3 月 ABI 稳定后充分调研并正式采用,这其间经历了什么样的考量过程?淘宝 App 落地 Swift 的最关键环节有哪些?如何解决落地 Swift 过程中的挑战?
1783 0
手淘 App 如何落地 Swift ?一边探索实践,一边“打怪升级”
|
iOS开发 Swift
iOS解决App启动时闪屏问题(swift)
创建一个工具类MTAppHelper import UIKit fileprivate let isIphone4 = Int(kScreenH) == 480 fileprivate let isIphone5 = Int(kScre...
1080 0
|
Swift 定位技术 开发工具
swift UI专项训练43 Swift实现APP引导页
   第一次加载APP的时候通常会采用引导页来展示特色或者告知用户如何使用。打开我们的Storyboard,然后导入一个Page View Controller,作如下设置,修改Transition Style: 然后给我们的Page View Controller设置一个storyboard的ID为PageViewController。
1015 0
|
27天前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
83 3
|
28天前
|
Android开发 开发者 UED
个人开发 App 成功上架手机应用市场的关键步骤
个人开发 App 成功上架手机应用市场的关键步骤
|
28天前
|
开发工具 数据安全/隐私保护 Android开发
【教程】APP 开发后如何上架?
【教程】APP 开发后如何上架?

热门文章

最新文章