在另一个应用程序文件共享/发送文件(“打开”,在iOS版)(File sharing / send

2019-08-17 12:48发布

我的应用程序创建一个名为log.txt的一个简单的文件

此文件(在xcode中观察时)的URL是文件://本地主机的/ var /移动/应用/ 中的应用 /Documents/log.txt 人数

所以,我可以看到在取景器这个文件...

我想补充特征中的“开放”我的应用程序提供用户共享此文件(通过邮件或即时聊天),或在其他兼容的应用程序打开此文件。

这是我做的:

-(void) openDocumentIn {

NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:docFile]; //docFile is the path
//NSLog(@"%@",fileURL); // -> shows the URL in the xcode log window

UIDocumentInteractionController *documentController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];
documentController.delegate = self;
documentController.UTI = @"public.text";
[documentController presentOpenInMenuFromRect:CGRectZero
                                       inView:self.view
                                     animated:YES];
}

然后调用此函数:

-(IBAction)share:(id)sender {
    [self openDocumentIn];
}

当我运行应用程序,我点击这个“共享”按钮,但没有追加,除了向我展示URL的路径在日志窗口...

我错过了什么?

谢谢

编辑:最后,它适用于我真正的iphone ......还有在模拟器上没有文本查看器! - ”

编辑2:它显示可用的应用程序(页,碰撞......),但最终崩溃!((( 在这里看到坠机画面

Answer 1:

它的内存管理的问题。 它崩溃的主要原因是因为对象不保留。 为什么如果你声明它在.h文件和写保留,当你为它分配对象被保留了@property那。

因此,在您的接口文件(.h)中,你应该有

@property (retain)UIDocumentInteractionController *documentController;

然后在您的m(执行文件),你可以做

@synthesize documentController;

- (void)openDocumentIn{

    // Some code here

    self.documentController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];
        documentController.delegate = self;
    documentController.UTI = @"public.text";
    [documentController presentOpenInMenuFromRect:CGRectZero
                                   inView:self.view
                                 animated:YES];
    // Some more stuff
}


Answer 2:

这里是如何为我工作:

我只是把宣言“UIDocumentInteractionController * documentController”在.h文件和它的作品!

我真的不知道为什么,但是....



文章来源: File sharing / send file in another app (“open in” in iOS)