iOS开发 ☞ 应用间跳转

iOS应用间跳转详解
本文详细介绍了如何在iOS应用中实现应用间的跳转,包括使用URL Schemes进行跳转的具体步骤,以及如何引导用户从App Store下载目标应用。此外,还介绍了如何利用openURL调用其他应用程序,如谷歌地图、邮件客户端等,并提供了应用间跳转时的状态管理说明。

You should know

What is URL?
统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

所以拿到一个应用的URL,就可以实现跳转了

步骤如下:A ☞ B
1、设置B的URL

这里写图片描述

//只根据设置的URLSchemes 实现跳转 注意不要忘记添加 ://
- (IBAction)goToB:(id)sender {

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"b://"]];
}
如果这个应用不存在,可以提示用户去Appstore下载,方法如下: 这里的AppID不是应用程序的BundleID 在你自己的应用商店里可以查询
NSString *str = [NSString stringWithFormat:

                     @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=%@",
                     @"YourAppID"];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
还可以集成去评分功能
//    NSString *str = [NSString stringWithFormat: @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%@", @"YourAppID"];
//    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
此外,利用openURL还可以调用以下应用程序

注意都调用了哪些应用程序

  • 调用谷歌地图(Google Maps)

  • 调用邮件客户端(Apple Mail)

  • 拨号(Phone Number)

  • 调用短信(SMS)

  • 调用应用商店(AppStore)



处理函数:
当一个应用程序被其它应用程序打开时调用

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url NS_DEPRECATED_IOS(2_0, 9_0, "Please use application:openURL:options:") __TVOS_PROHIBITED;

在这个方法里,可以通过下面的方法拿到跳转的URL

//这个协议头当然是当前应用程序的协议头,否则怎么打开这个应用呢?
NSString *url = url.absoluteString

判断函数
判断当前应用是否可以打开另一个应用程序

[[UIApplication sharedApplication] canOpenURL:url];

关于应用间跳转的一些特性:
在A的某个界面,点击了某个按钮跳转到了B,然后从B点击某个按钮跳转回A,此时回到A的位置是跳转到B时的位置(A没有被杀死的情况下,否则 跳回根视图控制器咯…),合情合理~~~~

A应用与B应用,当从A应用跳转至B应用时,B有两种状态,后台运行或者未运行。如果B处于后台运行状态,那么B将会执行如下方法

2016-05-04 10:53:15.332 A[2634:732388] -[AppDelegate applicationWillEnterForeground:]
2016-05-04 10:53:16.311 A[2634:732388] -[AppDelegate applicationDidBecomeActive:]

相应的A则会进入后台状态,执行如下方法

2016-05-04 10:53:03.602 A[2634:732388] -[AppDelegate applicationWillResignActive:]
2016-05-04 10:53:04.642 A[2634:732388] -[AppDelegate applicationDidEnterBackground:]

如果B处于未运行状态,这个没有测试过,应当是执行正常启动程序方法,A还是会进入后台状态,与上面执行方法类似。

还有一点要特别注意,那就是在应用间跳转的时候,是不会执行当前控制器的生命周期方法的,除非被打开的应用处于未运行状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值