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

时间:2009-07-24 20:45:08

标签: iphone

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

我想要做的是为应用数据实施某种备份/恢复:

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

    由于

3 个答案:

答案 0 :(得分:5)

Mobile Orchard有一个很棒的教程,描述了如何通过序列化SQL Lite数据库的自定义URL处理程序恢复应用程序数据库: Lite To Paid iPhone Application Data Migrations With Custom URL Handlers

(文章中的释义说明)

    您项目的Info.plist Setup a custom URL handler 中的
  1. Setup a custom URL handler http://www.mobileorchard.com/wp-content/uploads/2009/01/result.png
  2. 在您的电子邮件中,将您的数据库或应用程序数据转换为NSData base64,并将其包含在URL中 例如:

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

  3. 将handleOpenURL方法添加到AppDelegate实现

  4. 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播放拳头