我使用UIActivityViewController将图像和文本分享到消息,电子邮件,Facebook,Twitter等。直到最近,我还以为可以发送任何大小的图像(至少高达5MB)。但是,我注意到我不再向Facebook或Twitter发送大于2.5MB的图像。例如,我选择要共享的图像,打开activityViewController并选择Facebook。 activityViewController慢慢打开Facebook界面/视图(但不显示附加图像),然后关闭Facebook视图(并隐式调用activityviewcontroller)。应用程序本身并没有崩溃,因为我可以重新选择图像并通过消息或电子邮件发送它。我已经在这个应用程序上工作了好几个月,并且在我几周前进行测试时并没有想到它会发生。我没有任何问题将较小的图像分享到Facebook或Twitter。我想知道是否有其他人遇到同样的问题以及这是否是UIActivityViewController的已知限制。
更新
我提交了一份技术报告并获得了以下信息:Facebook和Twitter是作为系统证明的共享扩展实现的。所有扩展都有内存限制。这可能导致扩展程序终止,但我的应用程序继续运行,因为它在一个单独的进程中运行。使用设备控制台崩溃报告(不是Xcode调试控制台或〜/ Library / Logs / CrashReporter /中的崩溃报告)可以看到这一点。设备控制台显示警告,例如" ShareExtension [4959]:已收到内存警告“。
显然Facebook和Twitter等对服务施加了限制,我建议与他们联系以获取更多信息。 Apple确实缩小图像尺寸以符合限制。这个工作似乎适用于共享单个文件而不是多个大图像(当我通过Mail共享多个文件来测试它时,第一个图像被调整大小但不是后面的图像)。奇怪的是,我现在可以将一个大文件共享到Facebook / Twitter,但不能共享多个大文件。一旦您选择Facebook作为扩展(从选择之前的12MB跳到> 100MB)以获得~4MB的照片,内存分配就非常大。
Apple建议我使用URL而不是UIImage对象来更有效地处理更大的图像。这还没有解决我的问题,因此我将尝试使用UIActivityItemProvider限制除保存和打印之外的所有活动的文件大小....