iOS --- 通过openURL实现APP之间跳转并传递数据

Posted 鬼神杀破狼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS --- 通过openURL实现APP之间跳转并传递数据相关的知识,希望对你有一定的参考价值。

  在ios中,实现一个应用启动另外一个应用,使用UIApplication的openURL:方法就可实现,这里以test跳到test02为例。(需要先创建这两个工程)

注册自定义URL协议(在test中)

  首先被启动的应用需要向iPhone注册一个自定义URL协议。这是在info.plist文件进行的。

  1. 右键,选择“Add Row”
  2. Key值选择“URL types”
  3. 打开“Item 0″,然后为该key增加一个URL identifier。可以是任何值,但建议用“反域名”(例如 “com.fcplayer.test”)。
  4. 在“Item 0”下再加一行。
  5. 选择“URL Schemes” 作为Key。
  6. 输入你的URL协议名 (例如“test://” 应写做“test”)。如果有必要,你可以在这里加入多个协议。
  操作截图如下:

  

访问自定义URL(在test02中)  在主应用程序中通过访问自定义URL启动另外一个应用:(test已经安装,这段代码要写在另一个应用里面,比如test02)

  //放在需要的地方,调用即可
  NSURL * urlStr = [NSURL URLWithString:@"test://x=100"];//后面为参数
  if ([[UIApplication sharedApplication] canOpenURL:urlStr]) {
      NSLog(@"can go to test");
      [[UIApplication sharedApplication] openURL:urlStr];
  }else{
      NSLog(@"can not go to test!!!!!");
  }

 

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

  test://
  test://com.company.test
  test://config=1&abar=2

  这时我们在被启动应用中就必须进行自定义处理,在delegate中实现该消息(Cocos2d加在AppDelegate中),例如:

  - (BOOL)application:(UIApplication *)applicationhandleOpenURL:(NSURL*)url { // Do something withthe url here }
  通常,我们会从参数中解析出URL以便在视图中显示或者存储到UserPreference。下面的例子把URL存储为User Preference的url变量中或者打印出来:

  -(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;
  }

 

以上是关于iOS --- 通过openURL实现APP之间跳转并传递数据的主要内容,如果未能解决你的问题,请参考以下文章

iOS通过openURL打开原生应用与页面(包括电话,短信,safari等)

iOS--浏览器(safari)唤起App

URL Scheme与openURL

作为UIApplication单例对象的方法 openURL方法的变化

iOS开发 点击跳转到App Store 或者 点击按钮去评价

iOS10之后openURL:方法过期之后的替代方法及使用