0

それがYouTubeビデオの埋め込みであるかどうかをアプリに認識させてから、アプリ内のwebViewが必要です

これが私が今使っているコードです:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
{
NSString *urlString = request.URL.absoluteString;
NSString *youtube;

youtube = @"youtube";

if ([urlString rangeOfString:youtube options: NSCaseInsensitiveSearch].location != NSNotFound){
    return YES;
}
[[UIApplication sharedApplication] openURL:request.URL];
return NO;
}

ほとんどの YouTube リンクは、すでに Web ページに埋め込まれたビデオとして直接転送されるため、ほとんどの場合、これでうまくいきます。ただし、YouTube からプロファイル ページまたは他のページを選択するかどうかを確認します。アプリには戻るボタン (HTML ページのボタン) がないため、アプリ内で開きます。そのため、動画へのリンクではない場合、元に戻すことはできません。@"youtube.com/watch" @"/watch?" を使ってみた @"見る?" rangeOfString と同じですが、 YouTubeのみが機能します。

例: これは YouTube ビデオの URL: data-url="http://youtube.com/watch?feature=player_detailpage&v=Ke1Y3P9D0Bc" (アプリ内ビューは良好)

dara-url="youtube.com" (失敗、まだアプリ内ビュー)

間違った形式で文字列を保存したのだろうか、シンボルは rangeOfString でサポートされていませんか? または、次のような別の方法がある可能性がありますurlString rangeOfString:youtube && @"watch"

これをありがとう、本当に感謝します。

4

2 に答える 2

0

確かに使えますが、

if ([urlString rangeOfString:youtube options: NSCaseInsensitiveSearch].location != NSNotFound && [urlString rangeOfString:@"watch" options: NSCaseInsensitiveSearch].location != NSNotFound)

それがあなたが望むものを手に入れるかどうかはわかりませんが、有効な if ステートメントとして機能するはずです。

于 2013-03-09T04:16:09.003 に答える
0
NSURL *myURL = [NSURL URLWithString:@"http://www.youtube.com/watch?feature=player_detailpage&v=Ke1Y3P9D0Bc"];
NSString *host = myURL.host;
NSString *path = myURL.path;
NSLog(@"%@", host); // Output: www.youtube.com
NSLog(@"%@", path); // Output: /watch
NSLog(@"%@", myURL.query); // Output: feature=player_detailpage&v=Ke1Y3P9D0Bc
if (NSMaxRange([host rangeOfString:@"youtube.com" options:(NSCaseInsensitiveSearch|NSBackwardsSearch)]) == host.length &&
    [path.lowercaseString isEqualToString:@"/watch"]) {
    NSLog(@"This is a youtube video.");
}
于 2013-03-09T04:16:50.987 に答える