iOS文档共享:“保存到Dropbox”始终失败

时间:2017-10-29 03:26:57

标签: ios pdf uidocumentinteraction

找到答案后发布

在“橡皮鸭调试”之后,这个回答了一堆,我终于在一个看起来与我无关的问题上找到了正确的答案。我认为这个问题(及其答案)仍然具有相关性,所以我发布了这个问题并发布了自己的答案,希望能帮助像我这样的人。

<小时/> 我正在我的iOS应用程序中创建一个PDF,我希望允许用户导出。出于此测试的目的,我正在尝试将其保存到物理设备上的个人Dropbox。

我打开了iTunes文件共享,我可以验证PDF文件是否正确生成,当我将其从我的设备(运行iOS 11的iPad Pro Gen. 2)复制时,我可以打开PDF和它具有预期的内容和外观。

我能够正确显示文档弹出窗口,并且我可以选择通过以下方式分享:

  • 第1行:AirDrop
  • 第2行:消息,邮件,添加到备注,(Facebook)Messenger等。
  • 第3行:复制,打印,保存到文件,保存到Dropbox等

无论我尝试选择什么(保存到Dropbox是我想解决的问题,但问题似乎是普遍的),它失败了。值得注意的是,当我点击Save to Dropbox时,我执行会看到Dropbox面板显示,但是在Save to Dropbox模式的顶部会立即显示一个模式,显示“发生未知错误。” / p>

我试图环顾四周,看看如何获​​得有关此错误的更多信息,但我很难过。我不确定它是否相关,但我在控制台中收到此消息:

[AXRun-PID] Client requesting unsuspension of PID:813 Name:<redacted>

尝试谷歌这个错误证明是无效的。

这是我生成PDF并显示菜单的代码:

#pragma mark • Sharing Methods
- (void)showShareMenu {
    NSArray *bookList = [BookManager bookList];
    NSURL *pdfUrl     = [PdfGenerator generatePdfFromBooks:bookList];
    UIDocumentInteractionController *vc = [[UIDocumentInteractionController alloc] init];
    vc.name = @"Booklet.pdf";
    vc.URL  = pdfUrl;
    vc.UTI  = @"com.adobe.pdf";
    [vc presentOptionsMenuFromBarButtonItem:self.navigationItem.leftBarButtonItem animated:YES];
}

我尝试使用UIDocumentInteractionController *vc = [UIDocumentInteractionController interactionControllerWithURL:pdfUrl];而不是上面的那个,但结果是一样的。

我尝试将self委托给vc,然后尝试实施以下方法:

- (void)documentInteractionController:(UIDocumentInteractionController *)controller 
        willBeginSendingToApplication:(nullable NSString *)application;
- (void)documentInteractionController:(UIDocumentInteractionController *)controller 
           didEndSendingToApplication:(nullable NSString *)application;

这两种方法都没有被解雇过。

有趣的是,虽然我认为我根据我读过的内容正确提供了文件名,但保存到Dropbox模式中File教科书中的名称是当前时间戳(例如{{1} }})。 Dropbox模式保持不变,直到我在“未知错误发生”模式上单击“确定”,然后立即消失。

似乎我在某种程度上没有提供正确的信息,但我不确定如何。似乎应该有一个委托方法来向我指出错误,但我在文档中看不到类似的内容。 ( 晚了,我已经看了几个小时,包括阅读几个相关的教程,所以我可能错过了一些明显的东西。)

1 个答案:

答案 0 :(得分:0)

在问及当前的问题时,我遇到this answer作为示例问题。

它并没有真正问我同样的问题,该用户也没有相同的错误输出。但是,相关的答案也对我有用。

我在上面的代码中遇到的问题是我在创建它之后没有保留UIDocumentInteractionController。添加私有属性修复了此问题。因此,以下代码现在可以使用:

#pragma mark • Sharing Methods
- (void)showShareMenu {
    NSArray *bookList       = [BookManager bookList];
    NSURL *pdfUrl           = [PdfGenerator generatePdfFromBooks:bookList];
    self.docController      = [UIDocumentInteractionController interactionControllerWithURL:pdfUrl];
    self.docController.name = @"Booklet.pdf";
    self.docController.UTI  = @"com.adobe.pdf";
    [self.docController presentOptionsMenuFromBarButtonItem:self.navigationItem.leftBarButtonItem animated:YES];
}