一个程序若要跳到另一个程序。需要在目标程序的plist文件里面修改:

打开info.plist,添加一项URL types

展开URL types,再展开Item0,将Item0下的URL identifier修改为URL Scheme

展开URL Scheme,将Item0的内容修改为 SecondApp(此为跳转的key)

话不多说,下面开始讲解步骤:

首先创建两个工程,第一个 FirstAPP , 第二个 SecondAPP

第一个 First APP 的 info.plist 需要设置 key(url) 与 白名单

接下来我们再对第二个 SecondAPP 工程来做相应的处理

将这两个工程设置好了之后,接下来上代码

  第一个 FirstApp工程

//

//  ViewController.m

//  FirstAPP

//

//  Created by luorende on 16/8/25.

//  Copyright © 2016年 luorende. All rights reserved.

//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];

button.frame = CGRectMake(100, 100, 200, 50);

button.backgroundColor = [UIColor darkGrayColor];

[button setTitle:@"跳转到SecondApp" forState:UIControlStateNormal];

button.titleLabel.font = [UIFont systemFontOfSize:20];

[button addTarget:self action:@selector(clickButton:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button];

}

//跳转到SecondApp

-(void)clickButton:(UIButton *)button{

NSLog(@"执行了点击事件");

//之前配置的白名单,就是需要跳转对方App的key,即对方设置的url

NSString * UrlStr = @"SecondApp://xxxxx";

NSURL * url = [NSURL URLWithString:UrlStr];

// 在这里可以先做个判断

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

[[UIApplication sharedApplication] openURL:url];

}else{

NSLog(@"应用程序未安装");

}

}

//跳转到AppStore

-(void)abc{

[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@""]];

[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@""]];

}

  第二个工程 SecondAPP 里的代码

//

//  ViewController.m

//  SecondAPP

//

//  Created by luorende on 16/8/26.

//  Copyright © 2016年 luorende. All rights reserved.

//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];

button.frame = CGRectMake(100, 100, 200, 100);

button.backgroundColor = [UIColor darkGrayColor];

[button setTitle:@"SecondApp,跳转到另一个APP" forState:UIControlStateNormal];

button.titleLabel.font = [UIFont systemFontOfSize:20];

[button addTarget:self action:@selector(clickButton:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button];

}

-(void)clickButton:(UIButton *)button{

NSLog(@"执行了点击事件");

NSString * UrlStr = @"FirstAPP://xxxxx";

NSURL * url = [NSURL URLWithString:UrlStr];

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

[[UIApplication sharedApplication] openURL:url];

}else{

NSLog(@"应用程序未安装");

// 程序未成功跳转,我们还可以做一个提示

UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"应用程序未安装"message:@"确定下载<xxxx>应用吗?" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定",nil];

alertView.alertViewStyle = UIAlertViewStyleDefault;

[alertView show];

}

  注: 另外说明一下

例如:相互跳转的时候双方都要设置URL与白名单 ,若是 FirstAPP 不设置URL types 项(自己注册自己URL)

则实现的功能是:FirstAPP 可以跳转到 SecondAPP  ,但SecondAPP无法跳转过来

当然双方只设置 LSApplicationQueriesSchemes  项也是不行的,会提示应用程序未安装  (白名单)

简单说来 就是需要有一个要设置 URL

自己设置了的话,就是说已经有了URL,别人不注册, 使用设置白名单后也能跳转

总结:谁要跳,谁就要设置谁为白名单。  白名单要与跳到App设置的域名URL 要保持一致 另外代码部分的URL也要以域名URL打头即可

iOS - (两个APP之间的跳转)的更多相关文章

  1. ios两个app之间跳转,传值的实现

    两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个AP ...

  2. iOS中两个APP之间的跳转和通信

    app间的跳转 一:在第一个app首先要做下面这些操作: 1.在info.plist文件中的Information Property List下添加一项:URL types. 2.点开URL type ...

  3. 两个App之间的跳转 并传值

    两个App之间的传值最主要的是方法是 Intent intent = getPackageManager().getLaunchIntentForPackage("com.example.a ...

  4. iOS 两个App之间调起通信

    前言 假设需求是这样的:由一个app1跳转到app2之后,app2完成某项任务之后,怎么把app2的完成信息传到app1(自己的程序是app1),传的是什么类型的数据,怎么进行解析? 逻辑 本文章使用 ...

  5. iOS 两个页面之间的跳转

    -------->-------->-------->-------->-------->-------->-------->   以上完成页面one跳到页面 ...

  6. iOS APP之间到跳转,以及热门应用,手机自带到应用跳转

    应用之间的跳转 在第一个APP中,做如下操作:1.在info.plist文件中的"信息属性列表"下添加一项:"URL类型"; 2.点开"URL类型&q ...

  7. 两个APP之间怎么调用《IT蓝豹》

    两个app之间怎么调用?   (1):通过显示Intent 启动    首先:配置好B app 的action,即AndroidManifest.xml中声明 <intent-filter> ...

  8. 通过AIDL在两个APP之间Service通信

    一.项目介绍 [知识准备] ①Android Interface definition language(aidl,android接口定义语言),其目的实现跨进程的调用.进程是程序在os中执行的载体, ...

  9. iOS开发-应用之间的跳转及通信

    Update 2016-08-12: 在Github的Demo上增加Mac自定义Url Scheme,可以在Safari上输入特定协议头打开应用,并传递参数) 简介 我们接下来将要实现应用程序之间的跳 ...

随机推荐

  1. php preg_match_all 和 str_replace 替换图片链接

    需求:在 a 网站的后台添加一片文章,需要同步到 b 网站(两个网站数据库在同一台服务器). 思路是添加文章时,除了往 b 网站的数据库中添加数据外,再往 a 网站的数据库中添加数据. a 添加文章的 ...

  2. IDM 通过防火墙规则阻止激活验证

    1. 打开Windows防火墙 2. 高级设置-->出站规则-->新建规则 3. 添加IDM程序路径,阻止连接 4. 在属性中添加作用域,远程IP地址: DNS解析出IP:register ...

  3. PL/SQL Developer 显示中文乱码问题

    简单版本: 首先,通过 select userenv('language') from dual; 查询oracle服务器端的编码,如为:AMERICAN_AMERICA.ZHS16GBK; 在我们的 ...

  4. 使用Xpath对XML进行模糊查询

    如果要对XML文件进行模糊查找的话是一个比较麻烦的事情,Xpath表达式中没有像文件系统中的“*”或"?" 或者有像SQL表达式中的"%",这样的模糊查找的通配 ...

  5. delphi下TList的用法

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  6. WIN API 擦除所绘图像

    COLORREF circle_color = RGB(0, 105, 255); //获取窗口DC HDC hdc = GetDC(hWnd_); //背景色透明 SetBkMode(hdc, TR ...

  7. 蓝牙的AVDTP协议笔记

    1.概述    AVDTP(AUDIO/VIDEO DISTRIBUTION TRANSPORT PROTOCOL)是用来描述音频/视频在蓝牙设备间的传输的协议,是A2DP协议的基础协议,其在协议栈中 ...

  8. TOMCAT源码分析(启动框架)

    建议: 毕竟TOMCAT的框架还是比较复杂的, 单是从文字上理解, 是不那么容易掌握TOMCAT的框架的. 所以得实践.实践.再实践. 建议下载一份TOMCAT的源码, 调试通过, 然后单步跟踪其启动 ...

  9. linux环境下的伪分布式环境搭建

    本文的配置环境是VMware10+centos2.5. 在学习大数据过程中,首先是要搭建环境,通过实验,在这里简短粘贴书写关于自己搭建大数据伪分布式环境的经验. 如果感觉有问题,欢迎咨询评论. 一:伪 ...

  10. BeanUtils 学习教程

    what happens in more sophisticated environments where you do not necessarily know ahead of time whic ...