美文网首页
App之间的跳转

App之间的跳转

作者: Gxdy | 来源:发表于2017-12-15 11:15 被阅读0次

摘要:简单实现iOS应用之间的跳转,其中一些参数设置和逻辑处理不是太正规(相对标准化的参考文档:自定义 URL Scheme 完全指南)。本文以App1和App2之间跳转为例,实现从App1跳转至App2目标界面,然后从App2回到App1。

实现步骤:

1.获取/注册自定义的URL Scheme

获取:去对应App官方开发者网站获取接口

注册自定义:

默认情况下应用程序是没有自己的URL Scheme的,如果想要拥有自己的URL Scheme,需要设置:

项目-->info-->URL Types-->URL Scheme


Snip20161109_9.png

2.App1中进行跳转


/** URL :  @"App2://App2VC1?App1"

--> App2:// : App2定义的协议头,用于跳转并打开app2

--> App2VC1 : 告知App2 App1需要跳转的目标控制器

--> App1 : App1定义的协议头,用于从App2跳转会App1(需要转换成App1:// 格式) */

// 跳转到App2主页

- (IBAction)jumpToApp2 {

[self skipToURL:@"App2://?App1"];

}

// 跳转到App2控制器1

- (IBAction)skipToApp2VC1 {

[self skipToURL:@"App2://App2VC1?App1"];

}

// 跳转到App2控制器2

- (IBAction)skipToApp2VC2 {

[self skipToURL:@"App2://App2VC2?App1"];

}

- (void)skipToURL:(NSString *)urlString

{

// 1.找到App2的URL

NSURL *url = [NSURL URLWithString:urlString];

// 2.判断是否可以正常打开URL

if ([[UIApplication sharedApplication] canOpenURL:url]) {

// 3.打开App2的URL

[[UIApplication sharedApplication] openURL:url];

} else {

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"跳转错误"

message:@"用户还没有安装App2"

delegate:self cancelButtonTitle:@"Ok"

otherButtonTitles:nil];

[alert show];

}

}

3.打开App2并跳转到目标界面(App2的AppDelegate中)


@implementation AppDelegate// < ios 9.0 即将过期(很多应用程序都是多个方法同时实现)- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {        [self openURL:url];  return YES;}// < ios 9.0- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {        [self openURL:url];        return YES;}// >= ios9.0- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options {

[self openURL:url];

return YES;

}

- (void)openURL:(NSURL *)url {

// 1.获取主控制器

UINavigationController *rootNav = (UINavigationController *)self.window.rootViewController;

ViewController *mainVc = [rootNav.childViewControllers firstObject];

[rootNav popToRootViewControllerAnimated:NO]; // 回到跟控制器

 mainVc.urlString = url.absoluteString;  // 逐级传值url

if ([url.absoluteString containsString:@"App2VC1"]) { // 跳转到目标控制器VC1

[mainVc performSegueWithIdentifier:@"App2VC1" sender:nil];

} else if ([url.absoluteString containsString:@"App2VC2"]) {

[mainVc performSegueWithIdentifier:@"App2VC2" sender:nil];

}

}

@end

  1. 从App2回到App1

- (IBAction)backToApp {

NSString *appURLString = [self.urlString componentsSeparatedByString:@"?"][1];

NSString *appURL = [NSString stringWithFormat:@"%@://", appURLString];

NSURL *url = [NSURL URLWithString:appURL];

[[UIApplication sharedApplication] openURL:url];

}

相关文章

  • 应用间跳转、通信

    应用间跳转 •app应用的跳转的原理 •如何实现两个app应用之间的跳转 •如何实现两个app之间跳转到指定的页面...

  • App之间跳转

    最近项目上架,在审核的时候,被苹果拒绝了. steps 1: 我们提供给苹果审核测试的 账号是固定的. 如图: s...

  • App 之间跳转

    1.从项目A 跳转到项目 B1.首先要在项目 B 里面进行URL Schemes 的设置 参考链接:https:/...

  • app之间跳转

    NSString *weixinURL = @"weixin_schema://app_id?title=xxx&...

  • App之间跳转

    先看代码: [[UIApplication sharedApplication] canOpenURL:url]:...

  • APP 之间的跳转

    App之间跳转实现 在谈App内部的路由之前,先来谈谈在iOS系统间,不同App之间是怎么实现跳转的。 1. UR...

  • APP之间的跳转

    转自:http://www.th7.cn/Program/IOS/201606/881634.shtml

  • App之间的跳转

    应用A跳转到应用B 在app开发过程中,可能会遇到从一个App跳转到另外一个App,比如Uber,如果手机上安装的...

  • App之间的跳转

    摘要:简单实现iOS应用之间的跳转,其中一些参数设置和逻辑处理不是太正规(相对标准化的参考文档:自定义 URL S...

  • App之间的跳转

    AppOne 跳转到 AppTwo //在你要跳到的目的app中做一些配置:info.plist---->>URL...

网友评论

      本文标题:App之间的跳转

      本文链接:https://www.haomeiwen.com/subject/qzbrwxtx.html