在谷歌搜索并搜索了一段时间后,我仍然找不到答案 -
我想知道,如何使用自定义 URL 处理程序在我的两个应用程序之间传输数据?特别是图像或 NSData 对象。
我知道能够使用自定义处理程序打开我的应用程序的特定部分,例如 myapp1://start , myapp2://start ,但我不知道如何通过这些继续传输大量数据(~80k)处理程序。
很想听听任何创造性的解决方案:)
ps解决方案应该是 iOS >= 4.3 Compatible
在谷歌搜索并搜索了一段时间后,我仍然找不到答案 -
我想知道,如何使用自定义 URL 处理程序在我的两个应用程序之间传输数据?特别是图像或 NSData 对象。
我知道能够使用自定义处理程序打开我的应用程序的特定部分,例如 myapp1://start , myapp2://start ,但我不知道如何通过这些继续传输大量数据(~80k)处理程序。
很想听听任何创造性的解决方案:)
ps解决方案应该是 iOS >= 4.3 Compatible
将自定义 URL 处理程序与 UIPasteboard 结合使用。将您的第一个应用程序(例如图像)中的某些内容保存到通用粘贴板,如下所示:
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
[[UIPasteboard generalPasteboard] setImage:myImage];
然后使用自定义 URL 方案来切换应用程序。
然后在需要时从新应用程序中检索您的图像:
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
UIImage *tempImg = pasteboard.image;
实战考验。; )
一种解决方案可能是:
下载并欣赏您的照片 :-)
另一个解决方案:
编辑:更好的其他解决方案:
刚刚找到了另一种更有效的方式来交换更大的数据集:
它被称为UIPasteboard
最佳参考:http:
//developer.apple.com/library/ios/#documentation/UIKit/Reference/UIPasteboard_Class/Reference.html
还有另一个资源: http:
//kmithi.blogspot.in/2012/03/sharing-data-among-ios-applications.html
那应该这样做。对于网络服务器:使用 Google 找到了大量的实现
[http://www.codeproject.com/Articles/43447/How-to-Use-UIPasteBoard-to-Implement-Custom-Copy-a][1]
As you know many of the controls in UIKit now come pre-loaded with the ability to copy and paste text. You can also use this new ability in your own apps to copy and paste other things including: images, SQLite databases, text or any file. This is a great way to share data between your apps if you want to provide users with a suite of apps with integrated functionality.
CopyFrom Source Code
-(IBAction)copyImageToPasteBoard{
UIPasteboard *appPasteBoard = [UIPasteboard pasteboardWithName:@"CopyFrom"
create:YES];
appPasteBoard.persistent = YES;
NSData *data = UIImagePNGRepresentation([UIImage imageNamed:@"Old-Time-Photo.jpg"]);
[appPasteBoard setData:data forPasteboardType:@"com.appshop.copyfrom.imagedata"];
}
-(IBAction)copyStringToPasteBoard{
UIPasteboard *appPasteBoard = [UIPasteboard pasteboardWithName:@"CopyFrom"
create:YES];
appPasteBoard.persistent = YES;
[appPasteBoard setString:textView.text];
}
PasteTo Source Code
-(IBAction)pasteImageToPasteBoard{
UIPasteboard *appPasteBoard = [UIPasteboard pasteboardWithName:@"CopyFrom"
create:YES];
NSData *data = [appPasteBoard dataForPasteboardType:@"com.appshop.copyfrom.imagedata"];
imageView.image = [UIImage imageWithData:data];
}
-(IBAction)pasteStringToPasteBoard{
UIPasteboard *appPasteBoard = [UIPasteboard pasteboardWithName:@"CopyFrom"
create:YES];
textView.text = [appPasteBoard string];
}
Using UIPasteBoard in iPhone programming is amazingly simple and opens up some possibilities that we did not have a year ago. To use UIPasteBoard you simply create a instance using pasteboardWithName, put stuff into the paste board and then set the persistant property equal to YES. Then any app can get a reference to your paste board and use the data contained within. You can use it for simple strings and even data that you can put into NSData like SQLite databases.
使用自定义 URL 处理程序
它是指定的,因此它不符合您的规范。
但是,如果您不关心这一点,我会将 80k 图像写入内部存储器(文件系统),即使是 80Mb 并将“url”传递给其他应用程序。
大自我,0 研究努力:
而且我的解决方案不起作用......我不是在给鱼,只是在教热鱼。
好吧,据我所知,对于自定义 URL 处理程序来说,~80k 太多了。但是您可以尝试对您的数据进行 Base64 编码并将其附加到自定义 URL。但我怀疑它是否适用于大量数据。
您还可以查看UIDocumentInteractionController
,它旨在使用支持它们的其他应用程序打开文件。当您使用另一个应用程序打开附件时,邮件应用程序会执行此操作。