【问题标题】:iOS 8 Share Extension Safari ImageiOS 8 共享扩展 Safari 图片
【发布时间】:2014-10-17 13:49:08
【问题描述】:

我已经在我的 iOS 8 应用程序中设置了一个共享扩展,并且一切正常。我可以从照片应用程序或 Safari 共享。但是当我在 Safari 中时,我不知道如何获取生成的网页缩略图。我已经注册了正确的 NSExtensionActivationRule。当我从 Photo 应用分享照片时,NSItemProvider 对象类型说它是 public.jpeg,我可以使用

[itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeImage options:nil completionHandler:^(UIImage *image, NSError *error)
{
         [self.extensionContext completeRequestReturningItems:@[] completionHandler:nil];
}];

为了得到图片

但是当我从 Safari 分享时,NSItemProvider 类型说它是 public.url,我不知道如何获取图像?我知道如何通过 loadItemForTypeIdentifier:@"public.url" 获取 url,但是如何获取图片?

【问题讨论】:

  • 哇,我猜还没有多少人这样做

标签: ios safari


【解决方案1】:

在分享扩展中,您可以设置一个javascript预处理器来访问网页,并返回预览图像等信息。

设置js预处理器的详细信息在这里: https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW12

【讨论】:

    【解决方案2】:

    分享网页时可以得到生成的缩略图,但无法修改大小。

    要在 Safari 上共享时在共享扩展上自动生成图像,请使用 loadPreviewImageWithOptions:completionHandler:previewImageHandler。

    [itemProvider loadPreviewImageWithOptions:nil completionHandler:^(UIImage *image, NSError *error){
    
       if(image){
            //do anything here with the image
       }
    
    }
    

    我能够检索在 Safari 上共享时自动生成的缩略图,但我无法使用以下方法更改图像的大小:

    NSString * const NSItemProviderPreferredImageSizeKey;
    

    参考:https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSItemProvider_Class/

    请检查一下,看看是否对您有帮助。

    【讨论】:

    • 图像始终为零
    • 我没有得到反对票,这实际上是整个互联网上第一个解释如何获取预览图像的答案。我遇到了一些困难,因为我的附件似乎没有 kUTTypeImage 项目,@Daryl 请问您的扩展 plist 中有哪个 NSExtensionActivationRule?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多