IOS 唤醒另一个APP(app之间互相通信

转载 2015年07月08日 12:06:53

 功能实现做各大平台分享的时候由于账号混乱,导致分享回调的时候启动了另一个app,这个时候我在猜想这些SDK是怎么唤醒没有启动的其他app的,不难想象,肯定跟AppDelegate处理回调openUrl有关,于是搜了一下才发现,一个应用程序可以唤醒另一个应用程序,只怪我菜,好啦,现在告诉不知道的朋友怎么来实现一个app怎么唤醒另一个app,以及让两个app之间互相通信。。。

测试工程操作如下

1.新建一个app1,在Info.plist文件的信息属性列表里新建一组,类型是URL types 设置如下IOS 唤醒另一个APP(app之间互相通信)这里最关键的部分在于URL Schemes数组里的Item 0,后面的填写的字符串就是你用来通信的命令前缀“achao”,URL identifier只是一个标示符,随意填写然后再AppDelegate里处理重载下面的回调方法-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{ if ([[url scheme] isEqualToString:@"achao"]) { NSLog(@"%@",url); } return YES;}可以看见[url scheme]这个命令是为了拿到url的scheme,就是命令前缀“achao”

2.新建app2,这个app什么都不用操作,只需要去唤醒app1即可,于是我们在viewDidLoad里写上这一句[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"achao://hello"]];"achao"就是app1里的url scheme,我叫它命令前缀(我怀疑apple的应用程序装上过后有个像通知中心一样的应用程序来统一管理,而每个应用程序的url scheme都会在那里被记录,以供其他app来调用该app,至于url scheme属于哪个应用程序,当然是和app的Bundle identifier相关的),格式采用“前缀://..."

3.我们关闭app1,app2,然后再启动app2,发现app2启动过后唤醒了app1,并且成功跳转;我们再关闭app1,app2,然后我们打开app1进行监测,发现app1被启动后,进入了IOS 唤醒另一个APP(app之间互相通信)这就实现了两个app之间的唤醒和通信

4.当然这时候你可能才想到,那不是很多应用程序都会被其他垃圾程序调用了,查找资料过后,原来还有后续我们重载这个方法-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{ if ([sourceApplication isEqualToString:@"AC.achao.com"]) 

 { NSLog(@"%@", sourceApplication); //来源于哪个app(Bundle identifier) NSLog(@"scheme:%@", [url scheme]); //url scheme NSLog(@"query: %@", [url query]); //查询串 用“?...”格式访问 return YES; } else return NO; }这就满足我们的需求了,我们可以通过sourceApplication来判断来自哪个app以决定要不要唤醒自己的app,也可以通过[url query]来获得查询串,这个时候我们需要更改app2的访问方式才能获得这个参数[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"achao://hello?name=achao-AC"]];我们也可以直接在safari离输入"achao://hello?name=achao-AC"来访问我们的app1,这个时候sourceApplication就是@"com.apple.mobilesafari"总结:类似下面的方法[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.baidu.com"]];[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://158********"]];[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://158********"]];[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://362****@qq.com"]];

IOS 唤醒另一个APP(app之间互相通信)

IOS 唤醒另一个APP(app之间互相通信)    实现一个app怎么唤醒另一个app,以及让两个app之间互相通信。。。 测试工程操作如下 1.新建一个...
  • bjash
  • bjash
  • 2015年06月07日 12:43
  • 3232

iOS 一个app跳转另一个app并实现通信(如A跳到B并打开B中指定页面)

功能实现:A跳到B并打开B中指定页面步骤: 首先创建两个项目(项目A,项目B),在项目B中的info.plist文件中添加URL Types,如下图所示:其中URL idenifier是项目B的bun...

Training--与其他APP通信(1)-- 导航用户到另一个应用

与其他APP通信(1)-- 导航用户到另一个应用   安卓最重要的功能之一就是一个应用可以根据一个它想执行的“动作(action)”,来导航用户到另一个应用。例如,如果你的应用有一个商业地址想在地...

iOS App 唤醒另一个App

网上也有讲这块的,感觉讲得都不是很好。而且有一些细节根本没有讲清楚。这里重写整理一下相关知识点。 主要内容 URL Scheme 是什么?项目中关键的配置注意事项 URL Schem...

[转]iOS App 唤醒另一个App

App 唤醒另一个App

iOS App 唤醒另一个App

主要内容 URL Scheme 是什么?项目中关键的配置注意事项 URL Scheme 是什么? iOS有个特性就是应用将其自身”绑定”到一个自定义 URL scheme 上,该 scheme用于从...

iOS App 唤醒另一个App

iOS App 唤醒另一个App 网上也有讲这块的,感觉讲得都不是很好。而且有一些细节根本没有讲清楚。这里重写整理一下相关知识点。 主要内容 URL Scheme 是什么?项目中关键的配置注意事...

iOS App 唤醒另一个App

主要内容 URL Scheme 是什么?项目中关键的配置注意事项 URL Scheme 是什么? iOS有个特性就是应用将其自身”绑定”到一个自定义 URL scheme 上,该...

IOS9中打开另一个App

//==================================================================================================...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS 唤醒另一个APP(app之间互相通信
举报原因:
原因补充:

(最多只允许输入30个字)