我正在尝试在
swift中创建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) }) } } } }