iOS之程序间通讯

程序间通讯

1 设置程序标识,名字自己起,

2 在想要跳转的地儿 加入这行代码就可以

UIApplication sharedApplication] openURL:[NSURL URLWithString:@"ProductTwo:"]];

例如:one工程程序中:(调用openURL)

//
//  ViewController.m
//  程序间通讯OneProduct
//
//  Created by dllo on 16/3/24.
//  Copyright © 2016年 HaiTeng. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor grayColor];
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    // ProductTwo:(你自己的工程名)name=xx&age=xx(你想传的参数用&连接多参数)
    //注意:参数中不可有中文
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"ProductTwo://name=xx&age=xx"]];

    /*
     LaunchServices: ERROR: There is no registered handler for URL scheme ProductTwo

     程序间通讯:前提 保证手机上两款app同时存在
     */
}

@end

3 然后事件收到相应,你会接到这样的提示,说明你成功了

注意:

/*

LaunchServices: ERROR: There is no registered handler for URL scheme ProductTwo

程序间通讯:前提 保证手机上两款app同时存在

*/

///////当然仅仅这样然而没什么软用,通常我们借用程序间通讯进而进行传值

two程序中:(在AppDelegate)

//
//  AppDelegate.m
//  程序间通讯TwoProduct
//
//  Created by dllo on 16/3/24.
//  Copyright © 2016年 HaiTeng. All rights reserved.
//

#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    return YES;
}
//ios9.0之前(目前已废弃)
//- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
//    return YES;
//}
//ios9.0推荐使用此方法(最新,程序One跳到我的时候, 在此方法中,我可以接受到它传过来的值,进行一些操作)
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{

    //解码
    NSString *recetext  = [url.host stringByRemovingPercentEncoding];
    NSLog(@"%@",recetext); //打印看看One程序传过来的值

    //若想回传到OneProduct可执行此方法(同样在OneProduct工程的appdelegate 中写openUrl方法即可得到我穿回来的参数)
    [self performSelector:@selector(goBackOneProduct:) withObject:nil afterDelay:2];
    return YES;
}
- (void)goBackOneProduct:(id)object{
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"ProductOne://name=TwoProductSendData&age=xx"]];
}

@end

此时你会在TWO程序中看到打印(说明你成功了)

//总结:

说白了就是,调用此代码    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"ProductOne://name=TwoProductSendData&age=xx"]];

通过URL Schemes 标识 进行跳转

时间: 2024-10-21 17:15:03

iOS之程序间通讯的相关文章

IOS应用程序间相互跳转 与 传值

阅读本文之前建议参考:<Communicating with Other App程序间通信[翻译]> 在IOS中,实现在app1中打开app2,方法如下: 1,在app2中注册一个URL Schemes 注册的方法很简单,在XXX-info.plist文件中新增一个URL types数组元素,取一个名字,比如"tekuba_net".或者在工程的-TARGETS-Info,中找到URL Types添加一个URL Schemes,名为"tekuba_net"

iOS应用程序间共享数据(转)

我们知道iOS由于沙盒的存在,应用程序不能越过自己的区域去访问别的存储空间的内容,不过可能有许多场景我们需要在应用程序之间共享数据,比如多个应用共用用户名密码进行登录等.虽然我们不能直接通过文件系统来分享数据,不过还是有些方法可以实现,为了方便说明,这里同时创建了两个工程Example1和Example2,实现这两个app之间的信息共享,Example1负责写数据,Example2负责读数据,具体的demo代码可以到这里获取 UIPasteboard 剪贴板是应用程序之间传递数据的简单方式,建议

iOS应用程序间共享数据

我们知道iOS由于沙盒的存在,应用程序不能越过自己的区域去访问别的存储空间的内容,不过可能有许多场景我们需要在应用程序之间共享数据,比如多个应用共用用户名密码进行登录等.虽然我们不能直接通过文件系统来分享数据,不过还是有些方法可以实现,为了方便说明,这里同时创建了两个工程send和receive,实现这两个app之间的信息共享,send负责写数据,receive负责读数据,具体的demo代码可以到这里获取 UIPasteboard 剪贴板是应用程序之间传递数据的简单方式,建议不要使用全局的粘贴板

iOS程序间使用URL scheme通信

由于iOS的沙盒机制,程序之间通信受到限制,还好iOS可以很方便的注册自己程序的 URL scheme,因此可以通过打开特定的URL scheme来实现程序间通信传递参数. 1.新建A程序,并注册 URL scheme: 在程序的 Info.plist 添加一个 URL types 节点就可以了.注意结构体顺序不要搞乱 ,因为我之前结构体顺序不对,一直跳转不成功. 这样就注册好了scheme. 2.新建B程序,然后在B中打开A. 我们可以看到通过点击这个按钮之后,就跳转到A去了.(同理:当你的程

iOS程序间使用scheme通信

在 iOS 里,由于沙盒机制,程序之间都是相互隔离,所以想要从一个程序跳转到另一个程序一般情况是做不到,幸好 iOS 程序可以很方便的注册自己的 URL Scheme,这样就可以通过打开特定 URL 的方式来传递参数给另外一个程序,并启动它. 1.首先在A程序中注册scheme, 注意结构体不要搞乱,我开始就是因为结构体顺序不对,导致一直跳转 不成功. 这样的话就设置成功了scheme了.接下来就是去B程序调用该程序了. 2.新建一个B程序,调用A 新建一个button,添加点击事件 当点击该按

iOS 程序间的通信

1.什么是程序间的通信:个人理解就是,比如有二个程序,程序A和程序B,通过点击程序A中的方法,唤醒程序B,进入程序B,并将程序A的值传入传入给程序B; 2.为什么会有程序间的通信? 在iOS里,由于程序本身采用沙盒结构,相互之间是隔离的,比较封闭,唯一的程序间通信方式是采用苹果提供的接口利用URL Scheme进行,除此之外目前并没有更好的方式. 3.下面我们就来实现以下程序间的通信:A--->B 3.1首先我们新建2个工程项目A和项目B: 3.2建好之后,我们现在是要实现A调转到B,所以我们在

有感 iOS 应用间通讯 - 空中投放和自定义 Schema

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 说明一下,我下面翻译了一个词儿,应用间通讯,这个就这么地了. 如果有需要的,可以在评论中回复,我会抽时间翻译给您. 我看这篇才用了18分钟,给您翻

.Net程序间的通讯与控制

搬运自:http://wurang.me/2014/04/24/dotnet-IPC.html 如果有一个需求,用一个程序控制另一个程序,最简单的,比如用程序A打开程序B,这个想必平时都会用到,可以使用Process类及相关的方法.那么再打开B的时候发送一些参数,然后B根据这些参数做出一些反映,这该怎么实现?其实还是用Process. 发送端: static void Main(string[] args) { Console.WriteLine("请输入接收器路径:"); strin

iOS开发多线程-线程间通讯

一.NSThread 线程间的通讯 1 - (void)demoAboutNSThread 2 { 3 NSLog(@"demoAboutNSThread %@", [NSThread currentThread]); 4 NSThread * thread = [[NSThread alloc] initWithTarget:self selector:@selector(longTimeOperation) object:nil]; 5 [thread start]; 6 } 7