在iOS的Safari共享扩展中的SLComposeServiceViewController中获取URL

问题描述 投票:6回答:1

此问题以前可能以其他形式提出过,但是我尝试更深入地尝试理解共享扩展,因此,此问题比以前提出的版本更详细。

[编写共享扩展名时,我们可以将SLComposeServiceViewController子类化,并获取viewDidLoad()和didSelectPost()事件,但根据Apple文档,VC上唯一的属性是contentText和textView和占位符属性

https://developer.apple.com/library/prerelease/ios/documentation/Social/Reference/SLComposeServiceViewController_Class/

鉴于是这种情况,执行以下操作的最佳方法是什么:

首先,使用网站的网址填充显示的VC

第二,如下访问URL以传递给sharedDefaults

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

以便能够将其保存以供以后从应用程序访问。

将非常感谢您提供有关获取URL的任何帮助。

ios objective-c swift xcode7
1个回答
12
投票

您可以这样访问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) {
                                  // Do what you want to do with url
                                  [self.extensionContext completeRequestReturningItems:@[]         
                                                                     completionHandler:nil];
                              }];
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.