iOSのYouTubeアプリでビデオの共有ボタンをクリックすると、アプリが表示されるようにする方法はありますか?
ドキュメントタイプをInfo.plistファイルに追加することで、アプリをオープンインオプションに追加する方法を知っていますが、iOSのYouTubeアプリで共有ボタンが押されたときに同様のことを行う方法はありますか?
ここで答えたアンドロイドの質問に似ています。
iOSのYouTubeアプリでビデオの共有ボタンをクリックすると、アプリが表示されるようにする方法はありますか?
ドキュメントタイプをInfo.plistファイルに追加することで、アプリをオープンインオプションに追加する方法を知っていますが、iOSのYouTubeアプリで共有ボタンが押されたときに同様のことを行う方法はありますか?
ここで答えたアンドロイドの質問に似ています。
Youtube アプリや 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 を検出しました