跟我完事了
我可以分享在 Youtube App 或 Safari 上打开的视频
从 iOS 8 开始,这通过 App Share Extension 成为可能
如果您使用 SLComposeViewController 您将使用以下方法获取 URL
self.contentText
如果您创建了自定义 UIViewController
if([itemProvider hasItemConformingToTypeIdentifier:@"public.plain-text"]) {
NSLog(@"itemprovider = %@", itemProvider);
[itemProvider loadItemForTypeIdentifier:@"public.plain-text" options:nil completionHandler: ^(id<NSSecureCoding> item, NSError *error) {
NSString *url;
if([(NSObject*)item isKindOfClass:[NSString class]]) {
url = (NSString*)item;
}
}];
}
else if([itemProvider hasItemConformingToTypeIdentifier:@"public.url"]){
[itemProvider loadItemForTypeIdentifier:@"public.url" options:nil completionHandler: ^(NSUrl *url, NSError *error) {
NSString *url = [url absoluteString];
}];
}
你可以通过以下方式实现制作一个接受链接的共享扩展应用程序一般来说,如果您只想要 YouTube 链接,您可以使用正则表达式过滤即将到来的链接。
使用 Youtube iOS 应用程序并通过按“更多”共享任何视频时会打开 iOS 本机操作表
我为我的应用程序创建了共享扩展,它显示在共享选项中。
选择我的应用程序后,我会收到视频链接。
我用了这个正则表达式"https?:\\/\\/(?:[0-9A-Z-]+\\.)?(?:youtu\\.be\\/|youtube\\.com\\S*[^\\w\\-\\s])([\\w\\-]{11})(?=[^\\w\\-]|$)(?![?=&+%\\w]*(?:['\"][^<>]*>|<\\/a>))[?=&+%\\w]*"
为了检测该链接是 YouTube 链接,然后我使用了这个正则表达式"((?<=(v|V)/)|(?<=be/)|(?<=(\\?|\\&)v=)|(?<=embed/))([\\w-]++)"
从链接中检测 videoId
参考:ios8-共享扩展-swift
在原始 ios 应用程序和应用程序扩展之间共享代码