2016-05-09 27 views
1

次のアクション拡張を使用して、Webページに画像のURLを取得できます。ただし、URLがPDFファイルの場合は、何も表示されません。プロパティリストはnilです。iOS Safari Action Extension kUTTypePropertyListがnil

var GetImage = function() {}; 

GetImage.prototype = { 
    imageURLs: function() { 
     var imgs = document.getElementsByTagName("img"); 
     var imgSrcs = []; 

     for (var i = 0; i < imgs.length; i++) { 
      imgSrcs.push(imgs[i].src); 
     } 

     return imgSrcs; 
    }, 
    run: function(arguments) { 
     arguments.completionFunction({ 
            "currentUrl": document.URL, 
            "currentTitle": document.title, 
            "content": document.body.innerHTML, 
            "images": this.imageURLs(), 
            }); 
    } 
}; 

var ExtensionPreprocessingJS = new GetImage; 

次に、実際のアクション内:

print("step a-1") 
let item : NSExtensionItem = extensionContext!.inputItems[0] as! NSExtensionItem 
let itemProvider : NSItemProvider = item.attachments?.first as! NSItemProvider 

let propertyList = String(kUTTypePropertyList) 

if itemProvider.hasItemConformingToTypeIdentifier(propertyList) { 
    print("step a-2") 

    itemProvider.loadItemForTypeIdentifier(propertyList, options: nil, completionHandler: { (item, error) -> Void in 
     if (item != nil) { 
      print("step a-3") 
     } 
     }) 
} 

私は画像のURLを取得することができています

は、私は拡張のための次のjsファイルを持っています。ただし、ページがPDFファイルのURLである場合は、何も表示されません。プロパティリストはnilです。

私はjsなしで試してみると、私はpublic.urlを取得します。

しかし、JSで、プロパティリストはnilです...

すべてのヘルプは高く評価されます。 おかげ

答えて

0

がいくつか:デフォルトで

  • あなたの拡張プロパティを使用すると、デフォルトでURLを取得しますInfo.plistファイル> NSExtension> NSExtensionAttributes> NSExtensionActivationRuleにNSExtensionActivationSupportsWebURLWithMaxCountに設定されている場合。 NSDictionaryにコールバックでitemキャストDOM
  • と対話するためにNSExtensionActivationSupportsWebPageWithMaxCountにそれを設定し、
itemProvider.loadItem(forTypeIdentifier: propertyList, options: nil, completionHandler: { (item, error) -> Void in 
       guard let dictionary = item as? NSDictionary else { return } 
       OperationQueue.main.addOperation { 
        if let results = dictionary[NSExtensionJavaScriptPreprocessingResultsKey] as? NSDictionary, 
         let urlString = results["currentURL"] as? String, 
        } 
       } 
      })
を次のようにその NSExtensionJavaScriptPreprocessingResultsKeyにアクセス
関連する問題