iOS - (两个APP之间的跳转)
一个程序若要跳到另一个程序。需要在目标程序的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之间的跳转)的更多相关文章
- ios两个app之间跳转,传值的实现
两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个AP ...
- iOS中两个APP之间的跳转和通信
app间的跳转 一:在第一个app首先要做下面这些操作: 1.在info.plist文件中的Information Property List下添加一项:URL types. 2.点开URL type ...
- 两个App之间的跳转 并传值
两个App之间的传值最主要的是方法是 Intent intent = getPackageManager().getLaunchIntentForPackage("com.example.a ...
- iOS 两个App之间调起通信
前言 假设需求是这样的:由一个app1跳转到app2之后,app2完成某项任务之后,怎么把app2的完成信息传到app1(自己的程序是app1),传的是什么类型的数据,怎么进行解析? 逻辑 本文章使用 ...
- iOS 两个页面之间的跳转
-------->-------->-------->-------->-------->-------->--------> 以上完成页面one跳到页面 ...
- iOS APP之间到跳转,以及热门应用,手机自带到应用跳转
应用之间的跳转 在第一个APP中,做如下操作:1.在info.plist文件中的"信息属性列表"下添加一项:"URL类型"; 2.点开"URL类型&q ...
- 两个APP之间怎么调用《IT蓝豹》
两个app之间怎么调用? (1):通过显示Intent 启动 首先:配置好B app 的action,即AndroidManifest.xml中声明 <intent-filter> ...
- 通过AIDL在两个APP之间Service通信
一.项目介绍 [知识准备] ①Android Interface definition language(aidl,android接口定义语言),其目的实现跨进程的调用.进程是程序在os中执行的载体, ...
- iOS开发-应用之间的跳转及通信
Update 2016-08-12: 在Github的Demo上增加Mac自定义Url Scheme,可以在Safari上输入特定协议头打开应用,并传递参数) 简介 我们接下来将要实现应用程序之间的跳 ...
随机推荐
- POJ 1062 dij
一道读题读的不明所以的题... 每个人只能接受和自己等级差距不超过m的人进行交易 包括间接交易 所以我们可以枚举每一个长度为m的围绕着酋长的等级区间 每次都对这个等级区间内的人进行操作 求dis[1] ...
- breadth-first depth-first best-first
Computer Science An Overview _J. Glenn Brookshear _11th Edition For our example in Figure 11.7, we c ...
- ArrayList调用remove方法需要注意的地方
ArrayList中有remove 方法和 removeAll方法, ArrayList中不仅继承了接口Collection中的remove方法,而且还扩展了remove方法. Collection中 ...
- ArcGIS Server发布服务,打包成功,发布失败
打包成功,发布失败 部分解决方案: ① 查看Server对于源数据所在文件夹是否有读写权限,若无赋予Server账户至少读写权限.读写权限的赋予:对应存放数据的文件夹上右键→属性→ 安全 赋予ar ...
- PureBasic—数控编辑框与调节块和进度条
三个有关上下限问题的控件,它们也是主要控件的组成部分,分别为:SpinGadget() 数控编辑框TrackBarGadget() 调节块控件ProgressBarGadget() ...
- 【转】深入浅出 JavaScript 中的 this
Java 等面向对象的语言中,this 关键字的含义是明确且具体的,即指代当前对象.一般在编译期确定下来,或称为编译期绑定.而在 JavaScript 中,this 是动态绑定,或称为运行期绑定的,这 ...
- jdk1.7
http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-windows-i586.exe?AuthParam=1450748157_ ...
- http://d3js.org/
http://d3js.org/ http://www.ourd3js.com/wordpress/?p=51 http://www.ourd3js.com/wordpress/?p=104file: ...
- html之内联元素与块状元素;
html之内联元素与块状元素 一.html之内联元素与块状元素 1.块状元素一般比较霸道,它排斥与其他元素位于同一行内.比如div,并且width与height对它起作用. 2.内联元素只能容纳文本或 ...
- [收藏]ASP.NET MVC管道详述
ASP.NET MVC从诞生到现在已经好几个年头了,这个框架提供一种全新的开发模式,更符合web开发本质.你可以很好的使用以及个性化和扩展这个框架,但这需要你对它有足够的了解.这篇文章主要从整体角度总 ...