您好, , 海量一手媒体资源,专业、正规、高效,为企业提供一站式营销推广服务!
温馨提示
运营小帮手
一站式互联网营销服务平台
  全国免费咨询热线
0755-23071973
运营小帮手
软文发稿
PC端 选择媒体
更方便、更快捷!
查看媒体价格
软文发布、软文代写、百科制作、问答营销、微信营销、微信营销
查看媒体价格
当前位置: 运营小帮手首页 > 新闻中心 > 文章正文

iOS App之间如何通信

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

逻辑

本文章使用TestApp1作为第一个app的URL Schemes,TestApp2为第二个app的URL Schemes。

TestApp1工程配置

如下图,要适配iOS9.0

对于URL Schemes中的TestApp1是本应用提供给其它应用调用的。

TestApp2工程配置

如下图,要适配iOS9.0

对于URL Schemes中的TestApp2是本应用提供给其它应用调用的。

TestApp1工程中实现代码测试

-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions{
//TestApp2是TestApp2这个app在info.plist中配置的URLSchemes
if([[UIApplicationsharedApplication]canOpenURL:[NSURLURLWithString:@"TestApp2://"]]){
[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"TestApp2://success=1&count=100"]];
}

returnYES;
}

-(BOOL)application:(UIApplication*)applicationhandleOpenURL:(NSURL*)url{
NSString*receText=[[urlhost]stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@%@",receText,url.absoluteString);


returnYES;

}

我们首先需要判断手机是否安装了应用TestApp2,通过TestApp2工程公开的URL Schemes来判断,即TestApp2://。需要传参数时,是通过URL参数来传的。如:TestApp2://success=1&count=100就是一个URL。

TestApp2工程中实现代码测试

-(BOOL)application:(UIApplication*)applicationhandleOpenURL:(NSURL*)url{
NSString*receText=[[urlhost]stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@%@",receText,url.absoluteString);


[selfperformSelector:@selector(goBackToApp1)withObject:nilafterDelay:2];

returnYES;

}

-(void)goBackToApp1{
if([[UIApplicationsharedApplication]canOpenURL:[NSURLURLWithString:@"TestApp1://"]]){
[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"TestApp1://paySuccess=1"]];
}
}

我们在- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url处理来自TestApp1应用的调用,获取到相应的参数了。

当我们处理数据完成,需要反馈给TestApp1时,就需要调用通过TestApp1://paySuccess=1调用回到TestApp1并将状态带回去。

TestApp1打印日志

2015-12-0322:30:10.250TestApp1[9008:678123]paySuccess=1TestApp1://paySuccess=1

说明参数从TestApp2正确的传过来了。

TestApp2打印日志

2015-12-0322:29:59.690TestApp2[9004:677942]success=1&count=100TestApp2://success=1&count=100

说明参数也能正确地从TestApp1传过来了。

最后

最近不少朋友问到我应用之间如何相互调用,又如何传参数的问题,在这里统一讲解了。

源代码

如果单看文章,看不太明白,可以到github下载源代码运行看看效果:https://github.com/CoderJackyHuang/AppCommunicationDemo

关键词:

猜您可能需要的服务: