我可以设置我的iPhone应用程序在用户打开电子邮件附件时运行吗?

Ale*_*ler 3 iphone

当用户点击电子邮件附件时,有没有办法运行我的应用程序,所以我可以访问附件?

我想要做的是为app数据实现某种备份/恢复:

  1. 用户发送带有附加数据文件的电子邮件,该文件具有特殊扩展名(我将使用新的iPhone 3.0消息编写器类)
  2. 如果用户丢失了他的数据,他们将能够转到他们的电子邮箱并打开他们随应用数据文件发送的最后一封电子邮件
  3. 然后他们只需点击附件,这会导致我的应用程序从该文件运行和恢复

技术上是否可以执行最后一步?

谢谢

Dou*_*kem 5

Mobile Orchard有一个很棒的教程,描述了如何通过序列化SQL Lite数据库的自定义URL处理程序恢复应用程序数据库: Lite使用自定义URL处理程序支付iPhone应用程序数据迁移

(文章中的释义说明)

  1. 设置一个自定义的处理器在您的项目的Info.plist 设置的自定义URL处理器http://www.mobileorchard.com/wp-content/uploads/2009/01/result.png
  2. 在您的电子邮件中,将您的数据库或应用程序数据转换为NSData base64,并将其包含在URL中例如:

    [NSString stringWithFormat:@"myapplication:// localhost/importDatabase?%@",encodedStringData]

  3. 将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;
}
Run Code Online (Sandbox Code Playgroud)

移动果园的文件大小限制:

我们以这种方式传输了高达100k的文件,理论上URL字符串的大小仅受可用内存的限制.也就是说,这种方法最适合具有中小尺寸数据传输要求的应用.最重要的是,它可以很容易地用于SQLite数据库,XML文件,文本文件,甚至可以扩展到处理压缩档案.