13

iOS 共有拡張機能を迅速に作成しようとしています。ユーザーがサファリで共有拡張機能を開いたときに、URL を取得してアプリで使用できるようにしたいと考えています。以下のコードを ShareViewController の didSelectPost() 関数に挿入して、ユーザーが共有拡張機能に入力したテキストを取得できることはわかっていますが、共有をクリックしたときにユーザーが表示している Web ページの URL を取得するにはどうすればよいですか?拡大?私はiOS拡張機能にかなり慣れていないので、どんな助けでも大歓迎です。

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

2 に答える 2

25

これは、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];
                              }];
    }
}

またはスウィフトで:

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)
                })
            }
        }
    }
}
于 2015-11-04T20:14:34.680 に答える