Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

623
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!