Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以将iPhone应用程序设置为在用户打开电子邮件附件时运行吗?_Iphone - Fatal编程技术网

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

我可以将iPhone应用程序设置为在用户打开电子邮件附件时运行吗?,iphone,Iphone,当用户点击电子邮件附件时,是否有办法运行我的应用程序,以便我可以访问附件 我想做的是为应用程序数据实施某种备份/恢复: 用户发送一封带有附加数据文件的电子邮件,该文件具有特殊扩展名(我将使用新的iPhone3.0 message composer类) 如果用户丢失了自己的数据,他们将能够转到自己的电子邮件框,打开与应用程序数据文件一起发送的最后一封电子邮件 然后,他们只需点击附加的文件,这会导致我的应用程序运行并从该文件恢复 技术上是否可以执行最后一步 谢谢我认为您的应用程序不能针对特定的文件类

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

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

  • 用户发送一封带有附加数据文件的电子邮件,该文件具有特殊扩展名(我将使用新的iPhone3.0 message composer类)
  • 如果用户丢失了自己的数据,他们将能够转到自己的电子邮件框,打开与应用程序数据文件一起发送的最后一封电子邮件
  • 然后,他们只需点击附加的文件,这会导致我的应用程序运行并从该文件恢复
  • 技术上是否可以执行最后一步


    谢谢

    我认为您的应用程序不能针对特定的文件类型运行,但您可以将其注册为侦听特定的URL方案,例如,请参见:

    因此,如果您的应用程序数据不是太大,您可以使用自定义的base64编码URL,如


    mycustomappbackup://[此处有大量数据]

    Mobile Orchard提供了一个很棒的教程,介绍了如何通过序列化SQL Lite数据库的自定义URL处理程序还原应用程序数据库:

    (转述文章中的说明)

  • 在项目的Info.plist中
  • 在电子邮件中,将数据库或应用程序数据转换为NSData base64,并将其包含在URL中 例如:

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

  • 向AppDelegate实现中添加handleOpenURL方法

  • 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对文件大小的限制:

    我们已传输了多达个的文件 这样就有100k,URL的大小 弦理论上是有限的 通过也就是说,这个 这种方法最适合于 中小型应用程序 数据传输要求。最好的 尽管如此,它可以很容易地用于 SQLite数据库、XML文件、文本 文件,甚至扩展到可处理的 压缩档案

    我的应用程序(Listomni)使用URL方法备份数据库并将其发送出去,还可以从较轻的应用程序迁移到完整版本。我们还压缩了序列化的SQLite数据库,这节省了很多空间。但是,对于数据量大的备份来说,这并不是最理想的,因为如果用户通过GMail或Outlook转发邮件,那么这两个客户端都倾向于将URL截断为2048字节


    我还希望,既然我们现在可以用iPhoneOS3.0发送附件,我们也可以注册文件类型,以便以后检索它们,但遗憾的是,这似乎还不受支持。向苹果挥拳

    嘿,大卫,谢谢你的帮助。你知道自定义URL长度有限制吗?移动Orchard博客看起来很棒。我刚刚订阅了