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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容