两个App之间调起通信
前言
经常使用一些app的分享功能,比如点击QQ分享,就从app打开(跳转到)QQ,然后分享完之后又回到我们的app,那么这是怎样实现的呢?
假设有这么一个需求,由app1跳转到app2,当app2完成任务之后,要把app2中的某些信息传到app1中(假设我们自己的程序是app1)
过程
我们创建两个新的工程,一个叫Test1,一个叫Test2。
本篇文章将使用Test1作为第一个app的URL Schemes,Test2作为第二个app的URL Schemes。
Test1工程配置
由于iOS9.0之后跳转URL Schemes需要将添加白名单

对于URL Schemes中的Test1是本应用留给其他应用调用的。
Test2工程配置

对于URL Schemes中的Test2是本应用留给其他应用调用的。
Test1工程中测试代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Test2是在Test2这个项目的info.plist中配置的URL Schemes
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"Test2://"]]) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"Test2://success=1&&name=test2"]];
}
return YES;
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
NSString *str = [[url host] stringByRemovingPercentEncoding];
NSLog(@"%@---%@",str, url.absoluteString);
return YES;
}
我们首先需要判断手机是否安装了应用Test2,通过Test2工程公开的URL Schemes来判断,即Test2://。需要传参数时,是通过URL参数来传的。如:Test2://success=1&&name=test2就是一个URL。
Test2工程中测试代码
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
NSString *str = [[url host] stringByRemovingPercentEncoding];
NSLog(@"%@---%@",str, url.absoluteString);
[self performSelector:@selector(goBackToApp1) withObject:nil afterDelay:2];
return YES;
}
- (void)goBackToApp1 {
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"Test1://"]]) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"Test1://loginSuccess=1"]];
}
}
我们在- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url处理来自Test1应用的调用,获取到相应的参数了。
当我们处理数据完成,需要反馈给Test1时,就需要调用通过Test1://loginSuccess=1调用回到Test1并将状态带回去。
Test1打印日志
2016-06-05 23:23:09.807 test1[1277:219009] loginSuccess=1---Test1://loginSuccess=1
说明参数能从Test2正确地传递过来。
Test2打印日志
2016-06-05 23:22:15.008 test2[1243:216871] success=1&&name=test2---Test2://success=1&&name=test2
说明参数能从Test1正确地传递过来。
两个App之间调起通信的更多相关文章
- iOS 两个App之间调起通信
前言 假设需求是这样的:由一个app1跳转到app2之后,app2完成某项任务之后,怎么把app2的完成信息传到app1(自己的程序是app1),传的是什么类型的数据,怎么进行解析? 逻辑 本文章使用 ...
- 通过AIDL在两个APP之间Service通信
一.项目介绍 [知识准备] ①Android Interface definition language(aidl,android接口定义语言),其目的实现跨进程的调用.进程是程序在os中执行的载体, ...
- 安卓中不同APP之间的消息通信
昨天在腾讯实习生招聘初试面试时面试官问道我关于两个APP之间相互通信的方式,当时自己回道到了contentProvider与BroadcastReceiver.但他接着问还有没有其它的方式,我跟他说可 ...
- 两个APP之间怎么调用《IT蓝豹》
两个app之间怎么调用? (1):通过显示Intent 启动 首先:配置好B app 的action,即AndroidManifest.xml中声明 <intent-filter> ...
- 两个App之间的跳转 并传值
两个App之间的传值最主要的是方法是 Intent intent = getPackageManager().getLaunchIntentForPackage("com.example.a ...
- 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 ...
- iOS - (两个APP之间的跳转)
一个程序若要跳到另一个程序.需要在目标程序的plist文件里面修改: 打开info.plist,添加一项URL types 展开URL types,再展开Item0,将Item0下的URL ident ...
- Android Studio复制项目 两个App之间不覆盖安装操作步骤
步骤一:修改包名 第五步注意:不能以数字等作为包名的开头. 步骤二:修改清单文件里面的包名 第八步注意:如果报红,从新引入新的包名下的Mainactivity类. 步骤三:修改Gradle Scrip ...
随机推荐
- 基于ssm的poi反射bean实例
一:该例子是笔者在实际项目应用过程中,针对项目完成的一套基于poi的导入导出例子,其中一些与项目有关的代码大家直接替换成自己的需求即可. 二:笔者在项目中使用的是poi的XSSF,对应maven的po ...
- Highcharts tooltip显示多条线的信息
直接上代码吧,简单粗暴点: tooltip: { shared: true, valueSuffix: '分', formatter: function () { let s = "&quo ...
- Python内置函数(39)——help
英文文档: help([object]) Invoke the built-in help system. (This function is intended for interactive use ...
- linux下的Shell编程(6)case和select
第一个,除了if语句之外,Shell Script中也有类似C语言中多分支结构的case语句,它的语法是: case var in pattern 1 ) - ;; pattern 2 ) - ;; ...
- python入门(1)python的前景
python入门(1)python的前景 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于 ...
- MySql入门(2-2)创建数据库
mysql -u root -p; show databases; create database apigateway; use apigateway; show tables;
- Web框架之Django基础篇
Web框架之Django基础篇 本节介绍Django 简介,安装 基本配置及学习 路由(Urls).视图(Views).模板(Template).Model(ORM). 简介 Django 是一 ...
- C# 基于Bootstrap的三级联动
实现效果如图: 一.声明市.县.乡对应的下拉控件select <div class="form-group"> <label class="col-sm ...
- yum 安装Apache
1.查看是否安装Apache,命令: rpm -qa httpd 2.yum install httpd ,yum安装Apache 3.chkconfig httpd on s ...
- javasciprt性能优化
本文主要是在我读<高性能Javascript>之后,想要记录下一些有用的优化方案,并且就我本身的一些经验,来大家一起分享下, Javascript的加载与执行 大家都知道,浏览器在解析DO ...