文档章节

iOS-应用跳转

Ethan-GOGO
 Ethan-GOGO
发布于 2015/10/16 21:45
字数 655
阅读 82
收藏 1
点赞 0
评论 0

1.应用跳转

- (IBAction)openWangYi {
    
    // 1.获取application对象
    UIApplication *app = [UIApplication sharedApplication];
    // 2.创建需要打开的应用程序的URL
    // 在应用程序跳转中, 只要有协议头即可, 路径可有可无  
 #warning 协议头在项目设置-info-URL Types设置
    NSURL *url = [NSURL URLWithString:@"wangyi://"];
    // 3.利用application打开URL
    if ([app canOpenURL:url]) {
        // 3.1判断是否可以打开
        [app openURL:url];
    }else
    {
        // 3.2打开App STORE下载
        NSLog(@"根据App id打开App STORE");
    }
}


2.应用跳转的Appdelegate代理

/**
 *  当被其他应用程序通过URL打开时就会调用
 *
 *  @param application 当前的应用程序
 *  @param url         打开当前程序的URL
 *
 *  @return 是否成功处理
 */
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    // 1.获取首页控制器
    UINavigationController *nav = (UINavigationController *)self.window.rootViewController;
    UIViewController *vc = nav.topViewController;
    
    NSLog(@"%@", url);
    // 判断是通过哪一个URL打开的, 做出相应的处理(跳转到相应的控制器)
    NSString *urlStr = url.absoluteString;
    if ([urlStr hasPrefix:@"sina://login"]) {
        
        // 截取打开我们程序的应用的scheme
        NSRange range = [urlStr rangeOfString:@"sina://login?myScheme="];
        NSString *scheme = [urlStr substringFromIndex:range.length];
        
        NSLog(@"跳转到授权界面AAAAAAAAA %@", scheme);
//        if ([vc isKindOfClass:[ViewController class]] == YES) {
#warning 通过SB show跳转方法performSegueWithIdentifier,传送scheme
            [vc performSegueWithIdentifier:@"home2accounts" sender:scheme];
//        }
        
    }else if ([urlStr hasPrefix:@"sina://view?id="])
    {
        NSLog(@"跳转到详情界面BBBBBBBBBB");
        [vc performSegueWithIdentifier:@"home2detail" sender:nil];
        
    }
    
    return YES;
}



#warning iOS7之后的新方法
/**
 *  当被其他应用程序通过URL打开时就会调用(新方法)
 *
 *  @param application       当前的应用程序
 *  @param url               打开当前程序的URL
 *  @param sourceApplication 打开当前程序的Bundle identifier
 *  @param annotation
 *
 *  @return 是否成功处理
 */
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
#warning 注意: 如果实现了新方法, 旧方法旧失效了
    /*
     sourceApplication用途:
     当我们做一些广告, 积分墙等推广的时候, 可以利用这个唯一表一记录当前程序是被哪一个程序推广打开的
    */
    NSLog(@"%@ %@", url, sourceApplication);
    // 1.获取首页控制器
    UINavigationController *nav = (UINavigationController *)self.window.rootViewController;
    UIViewController *vc = nav.topViewController;
    
    NSLog(@"%@", url);
    // 判断是通过哪一个URL打开的, 做出相应的处理(跳转到相应的控制器)
    NSString *urlStr = url.absoluteString;
    if ([urlStr hasPrefix:@"sina://login"]) {
        
        // 截取打开我们程序的应用的scheme
        NSRange range = [urlStr rangeOfString:@"sina://login?myScheme="];
        NSString *scheme = [urlStr substringFromIndex:range.length];
        
        NSLog(@"跳转到授权界面 %@", scheme);
        //        if ([vc isKindOfClass:[ViewController class]] == YES) {
        [vc performSegueWithIdentifier:@"home2accounts" sender:scheme];
        //        }
        
    }else if ([urlStr hasPrefix:@"sina://view?id="])
    {
        NSLog(@"跳转到详情界面");
        [vc performSegueWithIdentifier:@"home2detail" sender:nil];
        
    }
    
    return YES;
}


3.prepareForSegue控制器跳转

prepareForSegue show连接跳转。一定是控制器跳控制器,不能控件跳控制器

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"首页 %@", sender);
    UIViewController *vc = segue.destinationViewController;
    if ([vc isKindOfClass:[TableViewController class]]) {
        // 如果跳转的目标控制器是授权,才需要设置Scheme
        TableViewController *tbVc = vc;
        tbVc.callScheme = sender;
    }
}



© 著作权归作者所有

共有 人打赏支持
Ethan-GOGO
粉丝 13
博文 174
码字总数 82033
作品 0
广州
RN与原生交互(一)——基本页面跳转

React Native(以下简称RN)开发app过程中大部分都可以在JS端完成,但是也有一些功能是需要原生端来完成的。这时RN与原生端就不可避免的需要进行交互,比如页面跳转和数据传递。本篇文章主要以...

不變旋律
06/13
0
0
iOS开发需要了解的基础内容链接整理

https://llvm.org/svn/llvm-project/cfe/trunk/test/SemaObjC/builtinobjcnslog.m http://llvm.org/klaus/clang/commit/5faf5d31fa634e1fdb576c4d9708cd4efa5ea310/ 对Objective-C的NSObjec......

智能小松鼠
2015/01/14
0
2
React Native VS Flutter评测

React Native VS Flutter评测 编辑于 11:34

纪洪波
06/27
0
0
iOS中UIWebView的使用详解

iOS中UIWebView的使用详解 一、初始化与三种加载方式 UIWebView继承与UIView,因此,其初始化方法和一般的view一样,通过alloc和init进行初始化,其加载数据的方式有三种: 第一种: - (voi...

珲少
2015/06/23
0
1
微信小程序唤起其他微信小程序 / 移动应用App唤起小程序

1. 微信小程序唤起微信小程序 小程序唤起其他小程序很简单 先上链接 小程序跳转小程序 Navigator组件 推荐使用 小程序跳转小程序 wx.navigateToMiniProgram(OBJECT) API 即将废弃 不推荐使用...

一个程序猿的每一天
05/30
0
0
《小印记》源码分享--极光推送服务器篇

笔者这几天刚完成《小印记》的推送功能,今天特分享一下在做的过程中实际解决的问题。如果读者学到了有用的东西,希望能前往App Store下载《小印记》支持一下笔者,谢谢! 《小印记》iOS源码...

_子墨
2017/03/21
0
0
Ionic3 应用跳转高德地图 APP

首先检测我们的 Ionic3 应用是否安装高德地图 APP,如果安装则打开该APP。 介绍 App Availability 插件 Ionic Native 官方文档提供的插件,此插件用来检查用户设备上是否已安装指定的 APP。 ...

与蟒唯舞
05/15
0
0
(转)直接拿来用!最火的iOS开源项目(一)

AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目。AFNetworking是一个轻量级的iOS、Mac OS X网络通信类库,现在是GitHub上第三大Objective-C库。它建立在...

孙启超
2013/06/21
0
0
iOS 终于支持了 PWA,一起来认识一下这个强化版「小程序」 | 科普

iOS 终于支持了 PWA,一起来认识一下这个强化版「小程序」 | 科普 发布于 2018-04-13 文章被以下专栏收录

少数派
07/06
0
0
【APP】二维码下载 如何支持全平台?

需求: 无论用户什么手机 扫码,就可以跳转指定自己的平台市场进行下载 目前我光知道,qq应用宝可以 针对ios的机型跳转appsore 安卓的则统一跳转应用宝 有没有 安卓自动识别自己的所安装的应...

kkk111112
04/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

百度云iOS架构师在职场中的忠告

1.工具不能代替思考 在我多年的咨询工作和与许多组织和管理者的共事中,我发现了修复问题的共同套路,那就是管理人员相信工具可以“解决”给出的问题。当问题域被理解透彻,并且不可能有很多...

_小迷糊
22分钟前
0
0
Java基础——异常

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 异常处理: 可以挖很多个陷阱,但是不要都是一样...

凯哥学堂
35分钟前
0
0
180723-Quick-Task 动态脚本支持框架之结构设计篇

文章链接:https://liuyueyi.github.io/hexblog/2018/07/23/180723-Quick-Task-动态脚本支持框架之结构设计篇/ Quick-Task 动态脚本支持框架之结构设计篇 相关博文: 180702-QuickTask动态脚本...

小灰灰Blog
38分钟前
0
0
SBT 常用开发技巧

SBT 一直以来都是 Scala 开发者不可言说的痛,最主要的原因就是官方文档维护质量较差,没有经过系统的、循序渐进式的整理,导致初学者入门门槛较高。虽然也有其它构建工具可以选择(例如 Mill...

joymufeng
43分钟前
0
0
HBase in Practice - 性能、监控及问题解决

李钰(社区ID:Yu Li),阿里巴巴计算平台事业部高级技术专家,HBase开源社区PMC&committer。开源技术爱好者,主要关注分布式系统设计、大数据基础平台建设等领域。连续4年基于HBase/HDFS设计和...

中国HBase技术社区
44分钟前
1
0
ES18-JAVA API 批量操作

1.批量查询 Multi Get API public static void multiGet() {// 批量查询MultiGetResponse response = getClient().prepareMultiGet().add("my_person", "my_index", "1")// 查......

贾峰uk
48分钟前
0
0
SpringBoot2.0使用health

1,引入actuator <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency> 2,application.properties ......

暗中观察
55分钟前
0
0
阿里巴巴Java开发规约

###编程规约 命名风格 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。...

简心
今天
0
0
如何用TypeScript来创建一个简单的Web应用

转载地址 如何用TypeScript来创建一个简单的Web应用 安装TypeScript 获取TypeScript工具的方式: 通过npm(Node.js包管理器) npm install -g typescript 构建你的第一个TypeScript文件 创建...

durban
今天
0
0
分享好友,朋友圈自定义分享链接无效

这个问题是微信6.5.6版本以后,修改了分享规则:分享的连接必须在公众号后台设定的js安全域名内

LM_Mike
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部