3

私は、iOS 用の Cordova/phonegap フレームワークを使用して xcode でアプリを構築しています。このフレームワークには、YouTube プレーヤー コードが埋め込まれた html が表示されます。iOS は、この YouTube プレーヤーにヒットすると、ユーザーを YouTube アプリにリダイレクトするようです。cordova 1.5.0 では次のコードが機能していましたが、1.6.1 では機能していないようです。それを機能させるために、なぜ、または何を変更する必要があるかについてのアイデアはありますか?

YouTube が開かないようにするコードと、自分自身を振る舞うためのリンク

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *url = [request URL];

    // Intercept the external http requests and forward to Safari.app
    // Otherwise forward to the PhoneGap WebView

    NSString* urlString = [url absoluteString];
    if([urlString rangeOfString:@"http://www.youtube.com/embed"].location != NSNotFound) {
        return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
    }
    else if (([[url scheme] isEqualToString:@"http"] || [[url scheme] isEqualToString:@"https"])) {
        [[UIApplication sharedApplication] openURL:url];
        return NO;
    }
    else {
        return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
    }
}
4

2 に答える 2

0

http://apiblog.youtube.com/2009/02/youtube-apis-iphone-cool-mobile-apps.htmlを見てください 。

これを行うように言います:

NSString *htmlString = @"<html><head>
<meta name = \"viewport\" content = \"initial-scale = 1.0, user-scalable = no, width = 212\"/></head>
<body style=\"background:#F00;margin-top:0px;margin-left:0px\">
<div><object width=\"212\" height=\"172\">
<param name=\"movie\" value=\"http://www.youtube.com/v/oHg5SJYRHA0&f=gdata_videos&c=ytapi-my-clientID&d=nGF83uyVrg8eD4rfEkk22mDOl3qUImVMV6ramM\"></param>
<param name=\"wmode\" value=\"transparent\"></param>
<embed src=\"http://www.youtube.com/v/oHg5SJYRHA0&f=gdata_videos&c=ytapi-my-clientID&d=nGF83uyVrg8eD4rfEkk22mDOl3qUImVMV6ramM\"
type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"212\" height=\"172\"></embed>
</object></div></body></html>";

[webView loadHTMLString:htmlString baseURL:[NSURL URLWithString:@"http://www.your-url.com"]];
于 2012-04-27T14:00:14.347 に答える
0

メソッドの先頭に url のログインを配置し、次に if/elseif/else の各句にログ ステートメントを配置して、傍受されている URL とメソッドがそれぞれに対して何を行うかを確認できるようにします。

YouTube リクエストの文字列が、ハードコードされた「http://www.youtube.com/embed」と一致しなくなったのではないでしょうか? 一見の価値あり。

于 2012-04-27T19:35:58.630 に答える