iOS app之间互相调用

因为项目上有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  allocinit];

   __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就是后被调用的方法。

     这个方法还是很靠谱的一个好方法,以后可以这么借用了。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值