iOS开发 - 应用内打开第三方应用并传值

来源:互联网 发布:医药冷链物流数据 编辑:程序博客网 时间:2024/06/06 01:38

原文地址:http://blog.csdn.net/hitwhylz/article/details/40537031


首先说下这个功能, 应该都有接触过。

比如,你下载了一个电子书,然后选择打开方式的时候,可能会看到你手机中已经安装的阅读类App。

或者,你的QQ收到了某个文件,你也可以选择本地的应用来打开。

那这样的功能,是怎么实现的呢?

简单来说。就是调用URL来实现第三方应用的开启。


首先,被打开的应用需要提供这个功能, 也就是,它需要注册一个 URL Schemes,供第三方使用。


如果你想你的应用被调用, 你可以这样设置。

在 xxxx info.plist 文件中, 添加如下属性

类似这样:


注意, 这里的URL Schemes必填, URL identifier选填。

另外,URL Schemes建议都小写,因为之后接收到数据的时候,不区分大小写, 都是转为小写。

规定的格式是   URL Schemes://URL identifier


之后, 你需要在 Appdelegate.m中添加如下代码, 来处理接受到请求后做出的处理

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. //处理URL请求  
  2. - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url  
  3. {  
  4.     NSLog(@"%@", url);  
  5.       
  6.     if ([[url scheme] isEqualToString:@"myurltest"])  
  7.     {  
  8.         //处理链接  
  9.         NSString *text = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  
  10.         UIAlertView *myAlert = [[UIAlertView alloc]initWithTitle:@"新消息" message:text delegate:self cancelButtonTitle:@"知道了" otherButtonTitles: nil nil];  
  11.         [myAlert show];  
  12.           
  13.         return YES;  
  14.     }  
  15.       
  16.     return NO;  
  17. }  

这里我写了个示范, 判断是否是打开本应用的URL, 如果是, 就弹出一个警告框,显示传来的数据。

当然,传来的数据要怎么处理, 那看你自己了。



之后, 第三方应用就可以直接调用打开它了。

我们做个简单示范, 用Safari来直接打开。

这里输入myurltest://hello   表示打开的应用的URL Schemes是 myurltest, 传入的数据是hello



当然, 在应用中打开,我们可以使用如下方法:


[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. NSURL *url  = [NSURL URLWithString:@"myurltest:"];  
  2. [[UIApplication sharedApplication] openURL:url];  
0 0
原创粉丝点击