【问题标题】:iOS Document Sharing: "Save to Dropbox" always failsiOS 文档共享:“保存到 Dropbox”总是失败
【发布时间】:2017-10-29 03:26:57
【问题描述】:

找到答案后发帖

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


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

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

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

  • 第 1 行:空投
  • 第 2 行:消息、邮件、添加到笔记、(Facebook) Messenger 等。
  • 第 3 行:复制、打印、保存到文件、保存到 Dropbox 等。

无论我尝试选择什么(保存到 Dropbox 是我想要解决的问题,但这个问题似乎很普遍),它都失败了。值得注意的是,当我单击保存到 Dropbox 时,我确实看到了 Dropbox 面板显示,但是在保存到 Dropbox 模式的顶部立即有一个模式显示,“发生了未知错误。”

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

[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 教科书中的名称是当前时间戳(例如,File Oct 28, 11 12 22 PM)。 Dropbox 模态一直保持到我在“发生未知错误”模态上单击“确定”,然后立即消失。

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

【问题讨论】:

    标签: ios pdf uidocumentinteraction


    【解决方案1】:

    我在问这个当前问题时遇到了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];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      相关资源
      最近更新 更多