相关疑难解决方法(0)

如何检测AVplayer并从WKWebView获取当前视频的URL?

我正在使用下面的代码从UIWebView提取URL :它工作正常,但是,用于WKWebView的相同代码不再起作用。谁能帮我?在WKWebView中播放的视频不是全屏播放,而是Inlineplacyback。

我的代码是:

 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")
}
Run Code Online (Sandbox Code Playgroud)

回应网址:

https://r2---sn-po4g5uxa-5hql.googlevideo.com/videoplayback?txp=5531432&sparams=clen%2Cdur%2Cei%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Crypto%2Cmime%2Cmm 2Cms%2Cmv%2Cpcm2%2Cpl%2Cratebypass%2Crequiressl%2Csource%2Cexpire&IP = 103.37.181.55&ratebypass = YES&ID =邻AM9UWIaxopyYZX4gikGuswG8EMi3dhH_PPBMIqY5cbXj&到期= 1554400796& C = MWEB&fvip = 4&initcwndbps = …

ios avplayer swift wkwebview

8
推荐指数
2
解决办法
1968
查看次数

SwiftUI WKWebView 检测 url 更改

我是一个快速学习者。我使用 SwiftUI,它是一个结构体,我必须实现一个 WKWebView,并且其中的 url 正在动态更改。我必须捕捉这些不断变化的网址,但我尝试过的解决方案不起作用。

例如:https : //stackoverflow.com/a/48273950/10088243 我试过这个代码块,但它不起作用,它给了我一些编译器错误:

import SwiftUI
import WebKit

struct ContentView: UIViewRepresentable, WKNavigationDelegate {

    let request = URLRequest(url: URL(string: "https://apple.com")!)

    func makeUIView(context: Context) -> WKWebView  {
    let preferences = WKPreferences()
    preferences.javaScriptEnabled = true
    preferences.javaScriptCanOpenWindowsAutomatically = true

    let configuration = WKWebViewConfiguration()
    configuration.preferences = preferences
    let webView = WKWebView(frame: .zero, configuration: configuration)
    webView.allowsBackForwardNavigationGestures = true


    return webView
}

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { 
 // 'override' can only …
Run Code Online (Sandbox Code Playgroud)

ios swift wkwebview swift5

7
推荐指数
3
解决办法
9846
查看次数

检测用户何时在 WKWebView 上向左或向右滑动来回

我正在使用 WKWebView 并且我允许后退和前进导航手势:

myWkWebView.allowsBackForwardNavigationGestures = true
Run Code Online (Sandbox Code Playgroud)

现在,用户有两种返回方式:按下按钮或向左滑动。行为会有所不同,所以我想知道如何知道用户何时向左/向右滑动,以便我可以处理这个问题。

我查看了 WKNavigationDelegate 参考(https://developer.apple.com/library/ios/documentation/WebKit/Reference/WKNavigationDelegate_Ref/),但找不到任何有用的东西。

任何的想法 ?

编辑

我忘了说我还尝试通过这种方式添加滑动手势识别器:

    let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(MyVC.respondToSwipeLeftOrRight(_:)))
    swipeRight.direction = UISwipeGestureRecognizerDirection.Right
    let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(MyVC.respondToSwipeLeftOrRight(_:)))
    swipeLeft.direction = UISwipeGestureRecognizerDirection.Left
    self.view.addGestureRecognizer(swipeRight)
    self.view.addGestureRecognizer(swipeLeft)
    myWkWebView.scrollView.panGestureRecognizer.requireGestureRecognizerToFail(swipeRight)
    myWkWebView.scrollView.panGestureRecognizer.requireGestureRecognizerToFail(swipeLeft)
Run Code Online (Sandbox Code Playgroud)

但是每次我向左或向右滑动时都不会触发它们。

webkit ios wkwebview

5
推荐指数
1
解决办法
2881
查看次数

WKWebView函数用于检测URL是否已更改

是否有WKWebView类的函数允许您检测WebView的URL何时更改?

didCommitdidStartProvisionalNavigation功能并不总是似乎与web视图中的某些元素工作时开火.

编辑:尝试添加通知观察者.这是我到目前为止所拥有的:

extension Notification.Name {
    static let checkURL = Notification.Name("checkURL")
}

NotificationCenter.default.post(name: .checkURL, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(getter: webView.url), name: .checkURL, object: webView.url)
Run Code Online (Sandbox Code Playgroud)

ios swift wkwebview

4
推荐指数
2
解决办法
8199
查看次数

通过 JavaScript 事件观察 WKWebView URL 变化的问题

我有一个呈现Laravel Web 应用程序的WKWebView。我目前有我的 ViewController 设置来捕获 URL 更改 - 它可以捕获大部分更改。但是,WKWebView 似乎忽略了通过 JavaScript 事件进行的少量 URL 更改。

我已经尝试了以下所有解决方案并在下面的代码中实现了它们:

在我展示代码之前有一个有趣的说明:它能够检测简单的 #hash 更改,但无法检测从第 1 页加载到第 2 页的 JavaScript 事件操作(这是我试图捕获的 URL 更改):

https://myweb.com/dashboard ? https://myweb.com/dashboard/projects/new

视图控制器.swift

import UIKit
import WebKit

class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {

    @IBOutlet var webView: WKWebView!

    override func …
Run Code Online (Sandbox Code Playgroud)

macos xcode ios swift wkwebview

2
推荐指数
1
解决办法
1480
查看次数

标签 统计

ios ×5

wkwebview ×5

swift ×4

avplayer ×1

macos ×1

swift5 ×1

webkit ×1

xcode ×1