El video de YouTube embedded en UIWebView no tiene sonido en un dispositivo real.

Así es como inserto mi video. Tiene sonido en el simulador, pero no tiene sonido en un dispositivo real (iOS 9.0.2 (13A452)) Xcode 7.1.1.

Este es el código que uso para jugarlo:

if let youtubeID = youtubeID { let embededHTML = "<html><body><iframe src=\"http://www.youtube.com/embed/\(youtubeID)?playsinline=1\" width=\"\(width)\" height=\"\(height)\" frameborder=\"0\" allowfullscreen></iframe></body></html>" cell!.webView.allowsInlineMediaPlayback = true cell!.webView.scalesPageToFit = true cell!.webView.mediaPlaybackAllowsAirPlay = true cell!.webView.mediaPlaybackRequiresUserAction = false cell!.webView.loadHTMLString(embededHTML, baseURL: NSBundle.mainBundle().bundleURL) } 

Versión de SWIFT 2.0 Tengo el mismo problema para mí, la solución fue agregar en la AppDelegate

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { do { try AVAudioSession.shanetworkingInstance().setCategory(AVAudioSessionCategoryPlayback) } catch let error as NSError { print(error) } do { try AVAudioSession.shanetworkingInstance().setActive(true) } catch let error as NSError { print(error) } // Override point for customization after application launch. return true } 

Esto habilita el sonido en mi UIWebView

Encontré la respuesta: aquí la solución:

  if let youtubeID = youtubeID { let embededHTML = "<!DOCTYPE html><html><head><style type=\"text/css\"> body { margin: 0; padding: 0; } body, html { height: 100%; width: 100%; } </style> </head> <body> <iframe id=\"player\" type=\"text/html\" width=\"100%\" height=\"100%\" src=\"http://www.youtube.com/embed/\(youtubeID)?enablejsapi=1&playsinline=1\" frameborder=\"0\"></iframe> <script> var tag = document.createElement('script'); tag.src = \"https://www.youtube.com/iframe_api\"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var player; function onYouTubeIframeAPIReady() { player = new YT.Player('player', { events: { 'onReady': onPlayerReady } }); } function onPlayerReady(event) { event.target.playVideo(); } </script> </body></html>" cell!.webView.allowsInlineMediaPlayback = true cell!.webView.scalesPageToFit = true cell!.webView.mediaPlaybackAllowsAirPlay = true cell!.webView.mediaPlaybackRequiresUserAction = false cell!.webView.loadHTMLString(embededHTML, baseURL: NSBundle.mainBundle().bundleURL) } 

La mayoría de los desarrolladores se encuentran con este problema, se olvidan de
active el button de timbre en el lado izquierdo de su iPhone . Funcionó para mí.