当前位置:  开发笔记 > 编程语言 > 正文

App Extension Swift:从没有javascript的任何应用程序获取网址

如何解决《AppExtensionSwift:从没有javascript的任何应用程序获取网址》经验,为你挑选了1个好方法。

我希望通过每个应用程序中的动作扩展来获取URL,而不仅仅是safari.例如,在twitter.app中,当您长按链接时,共享表打开,扩展名可以使用该URL.如果可能的话我想在没有javascript文件的情况下这样做.

目前我正在使用js文件来获取safari中的url并且这有效,但在其他应用程序(如twitter)中只出现黑屏.

    let extensionItem = extensionContext?.inputItems.first as! NSExtensionItem
    let itemProvider = extensionItem.attachments?.first as! NSItemProvider

    let propertyList = String(kUTTypePropertyList)
    if itemProvider.hasItemConformingToTypeIdentifier(propertyList) {
        itemProvider.loadItemForTypeIdentifier(propertyList, options: nil, completionHandler: { (item, error) -> Void in
            let dictionary = item as! NSDictionary
            NSOperationQueue.mainQueue().addOperationWithBlock {
                let results = dictionary[NSExtensionJavaScriptPreprocessingResultsKey] as! NSDictionary
                let urlString = results["currentUrl"] as? String
                self.url = NSURL(string: urlString!)

                print(self.url)
            }
        })
    } else {
        print("error")
    }

我想在每个应用程序中通过共享表获取URL,而无需javascript文件.

提前致谢



1> 小智..:

如果您只需要URL,请删除JS预处理文件,因为它似乎用属性列表替换所有其他扩展项附件.

删除Info.plist中的NSExtensionJavaScriptPreprocessingFile.它应该如下所示:

NSExtensionAttributes
    
        NSExtensionActivationRule
        
            NSExtensionActivationSupportsWebURLWithMaxCount
            1
        
    

然后,不要向itemProvider询问属性列表,只需执行以下操作:

if itemProvider.hasItemConformingToTypeIdentifier("public.url") {
     itemProvider.loadItemForTypeIdentifier(kUTTypeURL as String, options: nil, completionHandler: { (result: NSSecureCoding?, error: NSError!) in
          let url = result as? NSURL
          //assign url here
      })
 }

如果您需要从JS预处理(可能是标题)获得的任何其他信息,您可以在UIWebview中加载URL并使用:

let title = webView.stringByEvaluatingJavaScriptFromString("document.title")

这将适用于Twitter,但我还没有确认任何其他应用程序.当然,请记住,Twitter上可选择的许多链接都是Tweets和Twitter用户页面的链接,而不是实际发布的内容.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有