当用户点击电子邮件附件时,有没有办法运行我的应用程序,所以我可以访问附件?
我想要做的是为应用数据实施某种备份/恢复:
技术上可以执行最后一步吗?
由于
答案 0 :(得分:5)
Mobile Orchard有一个很棒的教程,描述了如何通过序列化SQL Lite数据库的自定义URL处理程序恢复应用程序数据库: Lite To Paid iPhone Application Data Migrations With Custom URL Handlers
(文章中的释义说明)
在您的电子邮件中,将您的数据库或应用程序数据转换为NSData base64,并将其包含在URL中 例如:
[NSString stringWithFormat:@“myapplication:// localhost / importDatabase?%@”,encodedStringData]
将handleOpenURL方法添加到AppDelegate实现
AppDelegate实施示例:
#import "GTMBase64.h"
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
if([@"/importDatabase" isEqual:[url path]]) {
NSString *query = [url query];
NSString *importUrlData = [GTMBase64 webSafeDecodeString:query];
// NOTE: In practice you will want to prompt the user to confirm before you overwrite their files!
[importUrlData writeToFile:@"/path/to/FullApplication/Documents/file" atomically:YES];
return YES;
}
return NO;
}
Mobile Orchard on File size limits:
我们已经传输了最多的文件 这种方式是100k,以及URL的大小 字符串在理论上是有限的 由available memory。那说,这个 方法最适合 中小型应用 数据传输要求。最好的 尽管如此,它可以很容易地用于 SQLite数据库,XML文件,文本 文件,甚至扩展到处理 压缩档案。
答案 1 :(得分:1)
我认为您的应用程序不能针对特定的文件类型运行,但您可以将其注册为侦听特定的URL方案,例如参见:
http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
因此,如果您的应用程序数据不是太大,您可以使用自定义的base64编码的URL,如
mycustomappbackup:// [此处有大量数据]
答案 2 :(得分:0)
我的应用程序(Listomni)使用URL方法备份数据库并将其邮寄,以及从较轻的应用程序迁移到完整版本。我们另外压缩了序列化的SQLite数据库,这节省了大量的空间。但是,对于具有大量数据的备份目的而言,它不是最佳的,因为如果用户通过GMail或Outlook转发邮件,则两个客户端都倾向于将URL截断为2048字节。
我也希望因为我们现在可以发送iPhone OS 3.0的附件,我们也可以注册文件类型,以便以后检索它们,但遗憾的是看起来还不支持。 在Apple播放拳头