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

热门标签

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

在博客iOS --- 通过UIApplication的openURL来实现APP之间的相互跳转中, 介绍了如何实现iOS APP之间的相互跳转, 使用的就是UIApplication的openURL:方法.
那么, 如果想要在openURL方法中传递参数和数据, 应该如何实现呢?

AppDelegate的application:openURL:options方法

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options

当使用openURL从其他APP跳转至当前APP时, 该方法会自动调用.

通过URL传递参数

在AppDelegate的application:openURL:options方法中, 参数url在两个APP都是一样的值.
如在APP DemoOpenURL中,

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"demomixpanel://params?param1=111&param2=222"]];

则在APP DemoMixpanel的AppDelegate.m文件的application:openURL:options方法中, 即可获取该url的完整信息.

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)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&param2=222"]];

则在APP DemoMixpanel中, 从剪贴板中取出数据便可以使用:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)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];
}

Demo

Demo地址:
DemoOpenURL,
DemoMixpanel

 

标签:

未经允许不得转载:作者:SheaYang, 转载或复制请以 超链接形式 并注明出处 技术Dog|博客
原文地址:《iOS — 通过openURL实现APP之间跳转并传递数据》 发布于2019-09-27

分享到:
赞(0) 打赏

评论 抢沙发

1 + 2 =


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

长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?