Swift 中的 iOS 共享扩展抓取 URL

标签 ios swift ios-extensions

我正在尝试快速创建一个 iOS 共享扩展。当用户在 safari 中并打开共享扩展时,我希望能够获取 URL 并在我的应用程序中使用它。我知道我可以将下面的代码放在 ShareViewController 的 didSelectPost() 函数中以获取用户在共享扩展中输入的文本,但是如何获取用户单击共享时所在网页的 URL扩大?我对 iOS 扩展还很陌生,所以非常感谢任何帮助。

 let shareDefaults = NSUserDefaults(suiteName: "groupName")
 shareDefaults?.setObject(self.contentText, forKey: "stringKey")
 shareDefaults?.synchronize()

最佳答案

这是您获取 URL 的方式:

- (void)didSelectPost {
    NSExtensionItem *item = self.extensionContext.inputItems.firstObject;
    NSItemProvider *itemProvider = item.attachments.firstObject;
    if ([itemProvider hasItemConformingToTypeIdentifier:@"public.url"]) {
        [itemProvider loadItemForTypeIdentifier:@"public.url"
                                        options:nil
                              completionHandler:^(NSURL *url, NSError *error) {
                                  NSString *urlString = url.absoluteString;
                                  // send url to server to share the link
                                  [self.extensionContext completeRequestReturningItems:@[]         
                                                                     completionHandler:nil];
                              }];
    }
}

或者在 Swift 中:

override func didSelectPost() {
    if let item = extensionContext?.inputItems.first as? NSExtensionItem {
        if let itemProvider = item.attachments?.first as? NSItemProvider {
            if itemProvider.hasItemConformingToTypeIdentifier("public.url") {
                itemProvider.loadItemForTypeIdentifier("public.url", options: nil, completionHandler: { (url, error) -> Void in
                    if let shareURL = url as? NSURL {
                        // send url to server to share the link
                    }
                    self.extensionContext?.completeRequestReturningItems([], completionHandler:nil)
                })
            }
        }
    }
}

关于Swift 中的 iOS 共享扩展抓取 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30824486/

相关文章:

ios - 错误: Use of undeclared type BindableObject

ios - 什么是更新CXCallDirectoryExtensionContext标签的正确方法?

ios - 如何将从核心数据中获取的数据发送到另一个 VC?

ios - (iOS Swift) 在应用程序和 Today 扩展之间共享 EKEventStore 和访问

ios - 如何使用 3d touch 从主屏幕的多个小部件中选择一个?

ios - 共享扩展自定义 UI。按钮没有图像

ios - Swift 上的地理编码标记

ios - 如何解决 crashlytics 中不清楚的 iOS 崩溃问题?

ios - 适用于 iOS 的 Cordova 错误 ITMS-90022 : "Missing required icon file"

ios - Swift:将对象转换为字典无法正常工作