iOS |
您所在的位置:网站首页 › url启动app › iOS |
在博客iOS --- 通过UIApplication的openURL来实现APP之间的相互跳转中, 介绍了如何实现iOS APP之间的相互跳转, 使用的就是UIApplication的openURL:方法. 那么, 如果想要在openURL方法中传递参数和数据, 应该如何实现呢? AppDelegate的application:openURL:options方法 - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options当使用openURL从其他APP跳转至当前APP时, 该方法会自动调用. 通过URL传递参数在AppDelegate的application:openURL:options方法中, 参数url在两个APP都是一样的值. 如在APP DemoOpenURL中, [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"demomixpanel://params?param1=111¶m2=222"]];则在APP DemoMixpanel的AppDelegate.m文件的application:openURL:options方法中, 即可获取该url的完整信息. - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { NSLog(@"url: %@", url); }这样, 就通过URL本身在两个APP之间传递了参数. 该参数的格式与Http请求的GET格式保存一致. 通过UIPasteboard传递数据通过URL只能简单地传递参数, 如果要传递负责的数据如image就只能通过剪贴板UIPasteboard了. 如在APP DemoOpenURL中, 向系统剪贴板中填充数据: UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; pasteboard.string = @"Modal.jpg"; pasteboard.image = [UIImage imageNamed:@"Modal.jpg"]; // NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"Modal.jpg"], 0); // [pasteboard setData:imageData forPasteboardType:@"Modal.jpg"]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"demomixpanel://params?param1=111¶m2=222"]];则在APP DemoMixpanel中, 从剪贴板中取出数据便可以使用: - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { NSLog(@"url: %@", url); UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; // label.text = pasteboard.string; // imageView.image = pasteboard.image; // NSData *imageData = [pasteboard dataForPasteboardType:@"Modal.jpg"]; // imageView.image = [UIImage imageWithData:imageData]; } DemoDemo地址: DemoOpenURL, DemoMixpanel |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |