私のアプリケーションの共有拡張を実装しようとしています。 SafariブラウザとYouTubeアプリ(つまり、これらのアプリから共有しているとき)にうまくいけば、共有するURLであるpublic.urlが得られます。ios共有拡張はChromeから共有URLを取得できません
私はクロムで同じことを試みたとき、それは拡張子を表示していませんでした。私がNSExtensionActivationSupportsTextをNSExtensionActivationRuleの下に追加したところ、それは本当にその表示を開始しました。しかし、コンテンツを共有しようとすると、共有されるURL文字列を取得できません。私はcontentTextだけを取得します。
私はこのリンクに示されているアプローチに従っていますhttps://stackoverflow.com/a/31942744/6199038。
は、私はまた、以下に示すように、サファリのための
、データを取得しようとしています私のShareViewController.miで
SLComposeServiceViewController私はを使用していますdemoProcessor.jsに
var MyPreprocessor = function() {};
MyPreprocessor.prototype = {
run: function(arguments) {
arguments.completionFunction({"URL": document.URL, "pageSource": document.documentElement.outerHTML, "title": document.title, "selection": window.getSelection().toString()});
}
};
var ExtensionPreprocessingJS = new MyPreprocessor;
を追加しました私はこれをうまく使っています。
NSExtensionItem *item = self.extensionContext.inputItems.firstObject;
NSItemProvider *itemProvider = [[item.userInfo valueForKey:NSExtensionItemAttachmentsKey] objectAtIndex:0];
if ([itemProvider hasItemConformingToTypeIdentifier:@"public.url"]) {
[itemProvider loadItemForTypeIdentifier:@"public.url" options:nil completionHandler:^(NSURL *url, NSError *error) {
urlString = url.absoluteString;
NSLog(@"urlString %@",urlString);
}];
}
次に、クロムからURLを取得するために自分のコードを変更しましたが、これは動作しません。
for (NSExtensionItem *item in self.extensionContext.inputItems) {
for (NSItemProvider *itemProvider in item.attachments) {
if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypePropertyList]) {
[itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypePropertyList options:nil completionHandler:^(NSDictionary *jsDict, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
NSDictionary *jsPreprocessingResults = jsDict[NSExtensionJavaScriptPreprocessingResultsKey];
NSString *selectedText = jsPreprocessingResults[@"selection"];
NSString *pageTitle = jsPreprocessingResults[@"title"];
NSString *URL = jsPreprocessingResults[@"URL"];
NSLog(@"selectedText %@",selectedText);
NSLog(@"pageTitle %@",pageTitle);
NSLog(@"URL %@",URL);
});
}];
break;
}
}
}
私はそれを自分で解決した
あなたの現在のテストがURL「ftp:// httpsomethingelse.com」に対して有効であるため、 'if([URLinPlainText hasPrefix:@" http:// "]){' –