在开发的时候遇到需要从其他APP调用自己的APP的需求,比如从Safari中打开APP,并且传递一些信息的需要

  1、首先设置自己的URL types

  打开项目中的工程文件,打开info选项,在下面的URL types中添加自己APP的Identifier,并且自定义一个自己的scheme,如图:

  

  举个例子,设定自己的APP的scheme为 myApp;

  2、其他应用的调用

  其他的用如果想要调起自己的APP,需要执行如下类似代码

  

NSString *paramStr = [NSString stringWithFormat:@"myApp://userInfo....."];
NSURL *url = [NSURL URLWithString:[paramStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];

  myAPP://后面就是需要传进来的值

  3、接受被调起并且获取传来的值

  在appdelegate中添加如下方法

 -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
NSString *tmpUrl = [url absoluteString]; return YES;
}

  url就是 myApp后面的 userInfo.....

  sourceApplication主动调起的应用的bundle id

  

  在自己的应用中设定对应的参数来接收数据。

  备注:

    我一直想象分享的SDK那样添加一个返回上一个APP的功能,无奈只能获取到上个APP的bundle id,只有系统的私有APi可以使用bundle id调起一个APP,如果不考虑上线审核的话可以添加私有API的framework。

  首先要使用class-dump 和dumpFrameworks.pl 工具 将ios的framework导出来。

 
  以下是工具的下载地址:
 
  class-dump下载地址http://www.codethecode.com/projects/class-dump/
 
  DumpFrameworks.pl原来的下载地址不能用了,我在github上的别人的越狱程序里面找到的。
 
 
  将下载好的 class-dump 放入usr/local/bin 下. 
 
     如果 ‘/usr/local/bin’ 不知道在哪里,可以在terminal 下输入 ‘open -a Finder /usr/local/bin’ 以便打开目录.
 
  这个bin文件夹  就是所有命令行的可执行文件所在地,并不一定是这个目录,要看各自的系统。 
 
  因为dumpFrameworks.pl中对ios库的版本路径可能不一定正确了,所以要自己手动改正。
 
  用terminal直接执行dumpFrameworks.pl就可以了。
 
  会将所有到处的头文件,放到user/Headers文件夹下。
 
  将想用的头文件,组成xxx.framework/Headers的样式。导入工程。
 
  但是bulidsetting 设置framework的search path 时要设置真实的私有库路径,因为我们要用它的可执行文件,只有头文件是不行的。
 
  例    如:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/PrivateFrameworks
 
  这样就可以调用ios的私有库了
  

 Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
NSObject * workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
BOOL isopen = [workspace performSelector:@selector(openApplicationWithBundleID:) withObject:@"com.tencent.mqq"];

  上面的代码是用QQ的bundle  调起QQ,以上就是暂时想到的解决方式,如果系统开放更多权限,再增加吧

  

iOS应用之间的跳转与数据传递的更多相关文章

  1. iOS开发拓展篇—应用之间的跳转和数据传递

    iOS开发拓展篇—应用之间的跳转和数据传 说明:本文介绍app如何打开另一个app,并且传递数据. 一.简单说明 新建两个应用,分别为应用A和应用B. 实现要求:在appA的页面中点击对应的按钮,能够 ...

  2. Android activity之间的跳转和数据传递

    1.Activity之间的跳转 并且 传递数据 A Activity进行的操作 Intent intent = new Intent(context, B.class); intent.putExtr ...

  3. iOS界面之间的跳转方式

    iOS界面之间的跳转方式基本有3种. .改变window的根视图 [self.window setRootViewController:VC]; .模态弹出 [self presentViewCont ...

  4. ViewController之间的转场和数据传递

    ViewController之间的转场和数据传递 可以正向传递值, 反向传递值. 注意反向传值的时候,方法的位置: https://github.com/urmyfaith/GRDBUsage/blo ...

  5. Android first --- 页面跳转及数据传递

    页面跳转即数据传递 创建第二个界面Acivity *需要在清单文件中添加配置一个Actuvity标签 标签中如果带有这个子节点,则会在Android中添加一个快捷图标 <intent-filte ...

  6. iOS APP之间到跳转,以及热门应用,手机自带到应用跳转

    应用之间的跳转 在第一个APP中,做如下操作:1.在info.plist文件中的"信息属性列表"下添加一项:"URL类型"; 2.点开"URL类型&q ...

  7. iOS应用之间的跳转

    app应用跳转的原理解析 如何实现两个app应用之间的跳转 如何实现两个app之间跳转到指定界面 二.应用跳转原理 相信从一个应用跳转到另一个应用大家并不陌生,最常见的莫过于第三方登录,支付宝支付等等 ...

  8. iOS页面跳转及数据传递

    转: http://blog.csdn.net/wang9834664/article/details/8025571 iOS页面跳转: 第一种 [self.navigationController  ...

  9. Android应用开发基础之六:页面跳转和数据传递

    创建第二个Activity 需要在清单文件中为其配置一个activity标签 标签中如果带有这个子节点,则会在系统中多创建一个快捷图标 <intent-filter> <action ...

随机推荐

  1. Java—Integer类

    Integer类 Integer 类在对象中包装了一个基本类型 int 的值.Integer 类型的对象包含一个 int 类型的字段. 该类提供了多个方法,能在 int 类型和 String 类型之间 ...

  2. 图的广度、深度优先遍历 C语言

    以下是老师作为数据结构课的作业的要求,没有什么实际用处和可以探讨和总结的的地方,所以简单代码直接展示. 宽度优先遍历: #include<cstdio> #include<iostr ...

  3. Windows平台字符的存储和输出分析

    1. 引言 (写于2011-07-30) 在Windows NT系列的操作系统中最常用的两种字符集是ANSI和Unicode.ANSI是一种泛称,每一个国家或地区的ANSI编码都不一样,比如在Wind ...

  4. (原)Microsoft Source Reader的简单使用

    感觉Microsoft Source Reader还是比较坑的,只是由于需要,不得不使用.其实按照Microsoft提供的示例,基本上可以正常的调试出程序来. 下面的例子,简单的给出了Source R ...

  5. C# 加密可逆

    现在一直在做一个小软件,公司的通讯录系统,也没什么功能增删改查,这算是我来这个公司实习的第一件事吧. 在修改个人信息的时候一直对于密码显示这个存在矛盾,不知道应该是要哪种形式去做,后来自己就先用md5 ...

  6. HTTP的一些基础知识

    HTTP是计算机通过网络进行通信的规则.http是一种无状态协议:不建立持久的连接,服务端不保留连接信息. 一个完整的HTTP请示,通常用7个步骤:1.建立TCP连接2.Web浏览器向Web服务器发送 ...

  7. JavaScript函数学习要点总结(一)

    1.函数的最大作用是提供代码复用: 2.JavaScript函数是弱类型语言,定义函数时既不要声明函数的返回值,也不要声明函数的参数列表类型: 语法如下: function functionName( ...

  8. css3 页面退出和进入的动画

    @-webkit-keyframes slideIn { from { -webkit-transform: translate3d(100%,0,0); transform: translate3d ...

  9. iscsi模型相关点

    1.iscsi即ip scsi,按架构分为控制器架构.链接桥系统架构.pc系统架构.这里主要说明一下pc系统架构. 所谓的pc系统架构,就是利用target软件存储端+initiator客户端+tcp ...

  10. SqlServer sys.partition_view

    --查看partition的四个视图 select * from sys.partition_functions--查看分区函数 select * from sys.partition_paramet ...