如何实现通过URL超链接打开IOS的APP

本文来自百度:

http://zhidao.baidu.com/link?url=BRIvWtquPb9cDh33Khhowx8dp2VLuYs20wifJcwYJaXSv0vfYYrFF8U5elkqAoEolqDZ5mWWJ0IBO7Fq6Zoj9d-cGaxgpJHzZqe5IrjEftG&qq-pf-to=pcqq.discussion 最近要在IOS中实现一个应用启动另外一个应用的功能,搜了一些资料,使用UIApplication的openURL:的方法就能实现,现在整理和大家分享一下!

  注册自定义URL协议

  首先被启动的应用需要向iPhone注册一个自定义URL协议。这是在你的项目文件夹的info.plist文件进行的(就是你改变应用程序图标的同一个文件)。  Step1. 右键,选择“Add Row”Step2. Key值选择“URL types”  Step3. 打开“Item 0″,然后为该key增加一个URL identifier。可以是任何值,但建议用“反域名”(例如 “com.fcplayer.testHello”)。  Step4. 在“Item 0”下再加一行。  Step5. 选择“URL Schemes” 作为Key。  Step6. 输入你的URL协议名 (例如“testHello://” 应写做“testHello”)。如果有必要,你可以在这里加入多个协议。  操作截图如下:

  访问自定义URL

  在主应用程序中通过访问自定义URL启动另外一个应用:

  

  [csharp] view plaincopy  NSURL * myURL_APP_A = [NSURL URLWithString:@"testHello://"];  if ([[UIApplication sharedApplication] canOpenURL:myURL_APP_A]) {  NSLog(@"canOpenURL");  [[UIApplication sharedApplication] openURL:myURL_APP_A];  }  

  

  自定义处理URL

  有些时候我们除了启动还需向另外一个应用发送参数,这是也可以通过自定义的URL来实现,如:

  testHello://  testHello://com.fcplayer.testHello  testHello://config=1&abar=2

  这时我们在被启动应用中就必须进行自定义处理,在delegate中实现该消息(Cocos2d加在AppDelegate中),例如:  - (BOOL)application:(UIApplication *)applicationhandleOpenURL:(NSURL*)url {   // Do something withthe url here }

  通常,我们会从参数中解析出URL以便在视图中显示或者存储到UserPreference。下面的例子把URL存储为User Preference的url变量中或者打印出来:

  

  [csharp] view plaincopy  -(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url  {  if (!url) {  return NO; }  NSString *URLString = [url absoluteString];  NSLog(@"%@",URLString);  //[[NSUserDefaults standardUserDefaults] setObject:URLString forKey:@"url"];  //[[NSUserDefaults standardUserDefaults] synchronize];  return YES;  }  

  其他

  基本上至此我们就已经实现一个应用程序中启动另外一个应用的功能,但是为了是我们的代码更加强壮,我在网上又找了一段访问代码,如下:

  

  [csharp] view plaincopy  // 检查用户是否配置了AppId  // 有没有准确配置Info的CFBundleURLSchemes字段  // 是不是可以正确打开  if (!kAppId) {  UIAlertView *alertView = [[UIAlertView alloc]  initWithTitle:@"Setup Error"  message:@"Missing app ID. You cannot run the app until you provide this in the code."  delegate:self  cancelButtonTitle:@"OK"  otherButtonTitles:nil,  nil];  [alertView show];  [alertView release];  } else {  // Now check that the URL scheme fb[app_id]://authorize is in the .plist and can  // be opened, doing a simple check without local app id factored in here  NSString *url = [NSString stringWithFormat:@"fb%@://authorize",kAppId];  BOOL bSchemeInPlist = NO; // find out if the sceme is in the plist file.  NSArray* aBundleURLTypes = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleURLTypes"];  if ([aBundleURLTypes isKindOfClass:[NSArray class]] &&  ([aBundleURLTypes count] > 0)) {  NSDictionary* aBundleURLTypes0 = [aBundleURLTypes objectAtIndex:0];  if ([aBundleURLTypes0 isKindOfClass:[NSDictionary class]]) {  NSArray* aBundleURLSchemes = [aBundleURLTypes0 objectForKey:@"CFBundleURLSchemes"];  if ([aBundleURLSchemes isKindOfClass:[NSArray class]] &&  ([aBundleURLSchemes count] > 0)) {  NSString *scheme = [aBundleURLSchemes objectAtIndex:0];  if ([scheme isKindOfClass:[NSString class]] &&  [url hasPrefix:scheme]) {  bSchemeInPlist = YES;  }  }  }  }  // Check if the authorization callback will work  BOOL bCanOpenUrl = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString: url]];  if (!bSchemeInPlist || !bCanOpenUrl) {  UIAlertView *alertView = [[UIAlertView alloc]  initWithTitle:@"Setup Error"  message:@"Invalid or missing URL scheme. You cannot run the app until you set up a valid URL scheme in your .plist."  delegate:self  cancelButtonTitle:@"OK"  otherButtonTitles:nil,  nil];  [alertView show];  [alertView release];  }  }  

  另外还有一段启动其他应用的代码:

  

  [csharp] view plaincopy  -(IBAction)openMaps {//打开地图  // Where is Apple on the map anyway?  NSString* addressText = @”1 Infinite Loop, Cupertino, CA 95014″;  // URL encode the spaces  addressText =  [addressText stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding];  NSString* urlText = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@", addressText];  // lets throw this text on the log so we can view the url in the event we have an issue  NSLog(urlText);  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlText]];  }  -(IBAction)openEmail {//打开mail  // Fire off an email to apple support  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://[email protected]"]];  }  -(IBAction)openPhone {//拨打电话  // Call Google 411  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://8004664411"]];  }  -(IBAction)openSms {//打开短信  // Text to Google SMS  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://466453"]];  }  -(IBAction)openBrowser {//打开浏览器  // Lanuch any iPhone developers fav site  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://itunesconnect.apple.com"]];  }
时间: 2024-08-14 08:00:36

如何实现通过URL超链接打开IOS的APP的相关文章

URL schemes, 通过超链接打开App应用

URL schemes, 通过超链接打开App应用 更多3 url iPhone safari scheme URL schemes 这个我就不解释了,大家可以看这里:http://en.wikipedia.org/wiki/URI_scheme 通俗点说,就是url地址栏:输入 http:…. 打开的是网页:输入 qqdl:…… 如果你安装了腾讯的旋风下载工具,系统会自动启动旋风下载:输入 thunder:…… 对应的就是打开迅雷下载了:最常用的还有 ftp:…… : udp:…… :  ma

通过超链接打开App应用

URL schemes, 通过超链接打开App应用 var mobileAppInstall = (function () { var ua = navigator.userAgent, loadIframe, win = window, isIPad = ua.match(/iPad/i) != null, isIphone = !isIPad && ((ua.match(/iPhone/i) != null) || (navigator.userAgent.match(/iPod/i)

Excel利用超链接打开指定文件夹

超链接功能最简单的使用方法就是直接打开电脑某个指定的文件夹,可用于打开某个项目目录.(常见问题)创建超链接 提示无法打开指定的文件Excel中超链接无法打开指定文件怎么办?_excel_办公软件工作表太多?做一个带超链接的目录吧怎样让Excel的超级链接直接找到对应的文件夹关于超链接打开本地文件夹的问题[解决方法,wangqiang博客推荐视频教程] wangqiang博客推荐视频教程 原文地址:http://blog.51cto.com/13172026/2287846

【如何快速的开发一个完整的iOS直播app】(原理篇)

一.个人见解(直播难与易) 直播难:个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多,视频/音频处理,图形处理,视频/音频压缩,CDN分发,即时通讯等技术,每一个技术都够你学几年的. 直播易:已经有各个领域的大牛,封装好了许多牛逼的框架,我们只需要用别人写好的框架,就能快速的搭建一个直播app,也就是传说中的站在大牛肩膀上编程. 二.了解直播 热门直播产品 映客,斗鱼,熊猫,虎牙,花椒等等 直播效果图 直播效果.jpeg 1.一个完整直播ap

【如何快速的开发一个完整的iOS直播app】(播放篇)

前言 在看这篇之前,如果您还不了解直播原理,请查看上篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,集成ijkplayer成功后,就算完成直播功能一半的工程了,只要有拉流url,就能播放直播啦 本篇主要讲解的是直播app中,需要用到的一个很重要的开源框架ijkplayer,然后集成这个框架可能对大多数初学者还是比较有难度的,所以本篇主要教你解决集成[ijkplayer]遇见的各种坑. 很多文章,可能讲解的是如何做,我比较注重讲解为什么这样做,大家有什么不明白,还可以

IOS平台APP安全Checklist

#1. 前言IOS平台APP安全风险相关的一般性Checklist,保障IOS客户端安全评估的质量与效率.#2. 数据安全##2.1 传输安全该类漏洞的审查场景:APP通过网络发送或接收敏感信息,比如用户口令.用户隐私信息等,或者通过网络下发的数据执行某些敏感操作**漏洞类型说明:**由于移动设备通常是通过wifi上网,因而面临网络窃听.网络劫持等中间人攻击行为,因此对于敏感信息需要加密传输,并且对接收到的重要数据也需要进行完整性校验.如果APP自身实现了加密及完整性校验的机制,需要确认机制是否

如何快速的开发一个完整的iOS直播app(原理篇)

前言 大半年没写博客了,但我一直关注着互联网的动向,最近会研究很多东西,并分享,今年移动直播行业的兴起,诞生了一大批网红,甚至明星也开始直播了,因此不得不跟上时代的步伐,由于第一次接触的原因,因此花了很多时间了解直播,整理了直播的原理,当前只是原理篇,后续会持续发布实战篇,教你从零开始搭建一个完整的iOS直播app,希望能帮助到更多的人更快的了解直播. 一.个人见解(直播难与易) 直播难:个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多,视频

【IOS】App中OAuth授权的实现方式

OAuth 授权在 iOS 中的实现方式 在 iOS App 中,需要绑定微博.twitter.flickr 等第三方平台账号时,一般用OAuth 授权的方式. OAuth 1.0 授权大致分为以下三步: 客户端向平台申请一个 request token,该 token 是未授权的: 客户端打开平台提供的登陆页面,引导用户输入用户名密码,对 request token 进行授权. 登陆页面的 url 中会附带一个 redirect_url,当授权成功后会重定向到这个地址,返回客户端. 客户端拿着

制作IOS企业版App网页扫描二维码下载安装

有时候我们需要在XX网站的主页上去扫描二维码下载,那么ios开发中如何做到这一点呢. 我给大家解答一下,这也是在最近工作中用到的部分,在网上了解了一些. 下面给大家分解一下步骤: 1.Plist 和 IPA文件 App打包我就不细说了,这个网上教程一大堆,记得真机下打包.(Xcode->Product->Archive->Export)导出ipa文件即可. Plist文件要自己创建一个(名字你喜欢就好).格式如下:(PLIST utf-8格式) 配置plist文件 , 基于下面的模版创建