Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

626
Visualizações
¿Cómo detectar AVplayer y obtener la URL del video actual de WKWebView?

Estoy usando el siguiente código para extraer la URL de UIWebView : funciona bien, pero este mismo código que se usa para WKWebView ya no funciona. ¿Alguien puede ayudarme? El video que se reproduce en WKWebView es Inlineplaceback y no está en pantalla completa.

mi código es:

 NotificationCenter.default.addObserver(self, selector: #selector(self.playerItemBecameCurrent(_:)), name: NSNotification.Name("AVPlayerItemBecameCurrentNotification"), object: nil) @objc func playerItemBecameCurrent(_ sender : NSNotification){ let playerItem: AVPlayerItem? = sender.object as? AVPlayerItem if playerItem == nil { print("player item nil") return } // Break down the AVPlayerItem to get to the path let asset = playerItem?.asset as? AVURLAsset let url: URL? = asset?.url let path = url?.absoluteString print(path!,"video url") }

URL de respuesta:

https://r2---sn-po4g5uxa-5hql.googlevideo.com/videoplayback?txp=5531432&sparams=clen%2Cdur%2Cei%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn% 2Cms%2Cmv%2Cpcm2%2Cpl%2Cratebypass%2Crequiressl%2Csource%2Cexpire&ip=103.37.181.55&ratebypass=yes&id=o-AM9UWIaxopyYZX4gikGuswG8EMi3dhH_PPBMIqY5cbXj&expire=1554400796&c=MWEB&fvip=4&initcwndbps=481250&ipbits=0&mime=video%2Fmp4&dur=60.093&lmt=1554142002789460&key=yt6&mt=1554379078&itag= 18&source=youtube&gir=yes&requiressl=yes&signature=6C68366FC249958BB8E95A5D88074FF8BCB99745.DA113E66DD0B46863BAE52DAA3CAB31FD141F0E5&clen=2708520&mm=31%2C29&mn=sn-po4g5uxa-5hql%2Csn-cvh7knek&ei=vPGlXPOWHIWD8QOO1KBo&ms=au%2Crdu&pcm2=no&pl=24&mv=m&cpn=I9d32bNmeq3kf0jn&cver=2.20190403&ptk=youtube_none&pltype=contentugc

Es la URL del video, no la URL de la página web, así que ayúdenme a obtener esto. Gracias.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Esto es una especie de truco, pero la única forma que encontré para lograrlo.

Primero configúrate como delegado de navegación de WKWebView:

 self.webView?.navigationDelegate = self

Ahora escuche todos los cambios de navegación y guarde la URL solicitada:

 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if let urlStr = navigationAction.request.url?.absoluteString { //Save presented URL //Full path can be accessed via self.webview.url } decisionHandler(.allow) }

Ahora solo necesita saber cuándo se vuelve visible la nueva pantalla y usar la URL que guardó (para conocer la URL del video de la nueva pantalla visible).

Puede hacerlo escuchando la notificación UIWindowDidBecomeVisibleNotification :

 NotificationCenter.default.addObserver(self, selector: #selector(windowDidBecomeVisibleNotification(notif:)), name: NSNotification.Name("UIWindowDidBecomeVisibleNotification"), object: nil)

Luego verifique si la ventana de navegación no es su ventana, y eso significa que se abrió una nueva pantalla:

 @objc func windowDidBecomeVisibleNotification(notif: Notification) { if let isWindow = notif.object as? UIWindow { if (isWindow !== self.view.window) { print("New window did open, check what is the currect URL") } } }
over 4 years ago · Santiago Trujillo Relatório

0

recupera la URL completa de la propiedad de solicitud de la acción de navegación en el método webView(_:decidePolicyFor:decisionHandler:) de WKNavigationDelegate.

 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if let urlStr = navigationAction.request.url?.absoluteString { //urlStr is your URL } decisionHandler(.allow) }

tampoco olvides cumplir con el protocolo

 webView.navigationDelegate = self
over 4 years ago · Santiago Trujillo Relatório

0

Puede intentar inyectar JS en su WKWebView como se muestra aquí: https://paulofierro.com/blog/2015/10/12/listening-for-video-playback-within-a-wkwebview

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda