iOS app之间互相调用
2014-10-27 22:00
399 查看
因为项目上有app互相调用需求,需要实现第三方客户端或者浏览器调用的接口。初次面临这个问题,一时间都不知道该怎么处理,幸好网上能查到相关资料。现将思路记录如下,以供自己日后参考。
首先需要设置被调用的app的URL Scheme,关于URL
Scheme的讲解及其作用这篇文章里有详细描述点击打开链接。与Android的URL
Scheme类似,ios的app
URL Scheme也是为方便app之间互相调用而设计的。具体设置方式如下:
打开程序的Info.plist,
1: 如果列表里没有URL types,随意点一个key行后面+号,输入大写URL选择URL types
2: 右键URL types,选择add row
3: item0下改成url identifier,后面的value值随意写,com.xx,xx
4: 加一行,选择url schemes,item后面值写成你需要的,譬如sql://,以后别的app就可以用
比如有另一个程序需要调用此标示的app,可以按以下方式:
[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"sql://******"]];
“****”里可以是自己随便给的约定参数,只要前缀没错,且能唯一标识被调用的app,那其它应用就可以通过上述语句调起该app。
在被调用的app的下面这个方法里,可以接收传过来的相应参数,进行处理
//----------------
//处理接收过来的url
//----------------
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
NSString *urlStr = [NSString stringWithFormat:@"%@",url];
NSArray *targetStrArray = [[NSArray alloc] init];
__block NSString *targetStr =nil;
targetStrArray = [urlStr componentsSeparatedByString:@"//"];
targetStrArray = [targetStrArray objectAtIndex:1];
targetStrArray = [urlStr componentsSeparatedByString:@"."];
targetStr = [targetStrArray lastObject];
if()
{
[_delegatetoNavi];
}
else if ([targetStr isEqualToString:@"MAP"])
{
}
return YES;
}
!!!注意一点,appdelegate中的
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions;
方法比上面的那个处理接收过来的urlstring会更早的被app调用。检验方法就是分别在两个方法里各写一个alertView,这样显示在上面的alertview就是后被调用的方法。
这个方法还是很靠谱的一个好方法,以后可以这么借用了。
首先需要设置被调用的app的URL Scheme,关于URL
Scheme的讲解及其作用这篇文章里有详细描述点击打开链接。与Android的URL
Scheme类似,ios的app
URL Scheme也是为方便app之间互相调用而设计的。具体设置方式如下:
打开程序的Info.plist,
1: 如果列表里没有URL types,随意点一个key行后面+号,输入大写URL选择URL types
2: 右键URL types,选择add row
3: item0下改成url identifier,后面的value值随意写,com.xx,xx
4: 加一行,选择url schemes,item后面值写成你需要的,譬如sql://,以后别的app就可以用
比如有另一个程序需要调用此标示的app,可以按以下方式:
[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"sql://******"]];
“****”里可以是自己随便给的约定参数,只要前缀没错,且能唯一标识被调用的app,那其它应用就可以通过上述语句调起该app。
在被调用的app的下面这个方法里,可以接收传过来的相应参数,进行处理
//----------------
//处理接收过来的url
//----------------
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
NSString *urlStr = [NSString stringWithFormat:@"%@",url];
NSArray *targetStrArray = [[NSArray alloc] init];
__block NSString *targetStr =nil;
targetStrArray = [urlStr componentsSeparatedByString:@"//"];
targetStrArray = [targetStrArray objectAtIndex:1];
targetStrArray = [urlStr componentsSeparatedByString:@"."];
targetStr = [targetStrArray lastObject];
if()
{
[_delegatetoNavi];
}
else if ([targetStr isEqualToString:@"MAP"])
{
}
return YES;
}
!!!注意一点,appdelegate中的
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions;
方法比上面的那个处理接收过来的urlstring会更早的被app调用。检验方法就是分别在两个方法里各写一个alertView,这样显示在上面的alertview就是后被调用的方法。
这个方法还是很靠谱的一个好方法,以后可以这么借用了。
相关文章推荐
- iOS 程序之间的互相调用
- IOS开发~两个App互相调用
- iOS app之间的通讯 相互调用
- iOS内APP之间相互调用
- IOS APP唤醒另一个APP(app之间互相通信)
- IOS之URL Scheme的使用(可以在app之间调用传递数据)
- iOS URL Scheme的使用(可以在app之间调用传递数据)
- IOS高级开发 两个App互相调用
- IOS 唤醒另一个APP(app之间互相通信
- IOS 唤醒另一个APP(app之间互相通信)
- IOS之URL Scheme的使用(可以在app之间调用传递数据)
- IOS应用之间调用 app call app
- IOS之URL Scheme的使用(可以在app之间调用传递数据)
- iphone ios app互相调用
- iOS APP互相调用
- iOS巅峰之两个App之间相互调用并携带参数传值
- IOS之URL Scheme的使用(可以在app之间调用传递数据)
- iOS 两个APP之间互相跳转
- IOS 唤醒另一个APP(app之间互相通信)
- mark! IOS 各APP应用之间的相互调用