iOS如何访问私有文件以进行共享扩展

Posted

技术标签:

【中文标题】iOS如何访问私有文件以进行共享扩展【英文标题】:iOS how to access private file for sharing extension 【发布时间】:2018-06-15 00:55:06 【问题描述】:

我一直在尝试访问带有我的共享扩展名的文件,如果该文件来自照片应用程序,我可以访问它,该文件的路径是:

file:///var/mobile/Media/PhotoData/OutgoingTemp/11485686-0D4A-4637-AA50-B14D83E18B01/RenderedPhoto/IMG_4807.JPG

但是当我尝试访问“私人”路径上的文件时,我无法访问它,就像 MS word 文件一样:

file:///private/var/mobile/Containers/Data/Application/196D7E75-87B6-4C69-B97A-74E58DF4AD65/tmp/ShareAttachments/%7BE73A233D-D10E-814D-AEB1-0C8C8AC9BFAA%7D/Document%20 (7).docx

所以我的问题是,如何访问该文件? WhatsApp 或 slack 等应用程序可以访问该文件并将其附加...

如何访问这个文件?他们在使用“应用程序组”吗?他们如何获得应用组的 ID?或者如何访问该文件?

【问题讨论】:

当您尝试访问docx 文件时会发生什么?该文件不存在或引发任何错误?最好能提供docx文件保存在哪里 @trungduc 说它不存在。 Xx.docx 在 private/var 上的路径上,谢谢 其实如果是private/的问题,可以使用URLByResolvingSymlinksInPath从url中删除 或者这个easynativeextensions.com/… “我无法访问它”是什么意思?有错误吗?您的扩展 Info.plist 中的 NSExtensionActivationRule 设置是什么?如果您没有声明如下内容,这将是一个问题:NSExtensionActivationSupportsFileWithMaxCount. 【参考方案1】:

对于Share Extension,您需要从NSItemProvider 获取文件,该文件由主机应用程序传递给您的共享扩展。

对于文件,它可能是Data 类型或URL 类型。如果是数据,则需要将其转换为所需的类型。如果它是一个url,你可以加载它。

【讨论】:

【参考方案2】:

请点击给定的链接:- https://developer.apple.com/app-extensions/

谢谢。

史莱姆

【讨论】:

嗨,共享扩展已经工作正常,我不能做的是从我的扩展访问 MS word 文件...我可以从“发送副本/与另一个发送”调用我的扩展应用程序”,在 MS Word 应用程序上,但随后,该文件未被访问...

以上是关于iOS如何访问私有文件以进行共享扩展的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ios 的共享扩展中访问 keyWindow?

如何与 iOS 扩展共享 Parse 登录会话?

如何使用预设策略加密 Amazon CloudFront 签名以进行私有内容访问

如何在局域网内访问 Synology NAS 上的文件

如何在私有和受保护的访问修饰符之间进行选择以封装基类和子类之间的成员?

如何以编程方式访问 iOS 中其他已安装应用程序的 info.plist?