首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WKWebView -在Swift - iOS中重定向时向URL添加参数

WKWebView是苹果公司在iOS 8及更高版本中引入的一个用于展示网页内容的控件。它是基于WebKit引擎的一种高性能的浏览器控件,可以在iOS应用程序中加载和显示网页。

在Swift - iOS中重定向时向URL添加参数,可以通过以下步骤实现:

  1. 获取原始URL:首先,你需要获取WKWebView加载的原始URL。可以通过WKNavigationDelegate的方法webView(_:decidePolicyFor:decisionHandler:)来获取。在这个方法中,你可以检查导航动作的类型,并获取原始URL。
  2. 添加参数:一旦你获取到原始URL,你可以使用URLComponents来解析URL,并添加需要的参数。URLComponents是一个用于解析和构建URL的实用工具。你可以使用它的queryItems属性来添加参数。
  3. 重定向URL:完成参数的添加后,你可以使用URLComponents的url属性来获取重定向后的URL。然后,你可以使用WKWebView的load(_:)方法来加载重定向后的URL。

以下是一个示例代码,演示了如何在Swift - iOS中重定向时向URL添加参数:

代码语言:txt
复制
import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    var webView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 创建WKWebView实例
        webView = WKWebView(frame: view.bounds)
        webView.navigationDelegate = self
        view.addSubview(webView)
        
        // 加载URL
        let url = URL(string: "https://example.com")
        let request = URLRequest(url: url!)
        webView.load(request)
    }
    
    // WKNavigationDelegate方法,用于处理导航动作
    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        if let url = navigationAction.request.url {
            // 解析URL
            var components = URLComponents(url: url, resolvingAgainstBaseURL: false)
            
            // 添加参数
            let newQueryItem = URLQueryItem(name: "param", value: "value")
            if let queryItems = components?.queryItems {
                components?.queryItems = queryItems + [newQueryItem]
            } else {
                components?.queryItems = [newQueryItem]
            }
            
            // 获取重定向后的URL
            if let newURL = components?.url {
                // 加载重定向后的URL
                webView.load(URLRequest(url: newURL))
                decisionHandler(.cancel)
                return
            }
        }
        
        decisionHandler(.allow)
    }
}

在这个示例中,我们创建了一个WKWebView实例,并加载了一个初始URL。在WKNavigationDelegate的webView(_:decidePolicyFor:decisionHandler:)方法中,我们解析了导航动作的URL,并添加了一个名为"param"值为"value"的参数。然后,我们使用重定向后的URL来加载新的页面。

请注意,这只是一个简单的示例,实际应用中可能需要根据具体需求进行更复杂的处理。

推荐的腾讯云相关产品:腾讯云移动浏览器(Tencent Mobile Browser),它是腾讯云提供的一款移动浏览器产品,支持在移动设备上加载和显示网页内容。你可以通过以下链接了解更多信息:腾讯云移动浏览器

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 分享超详细 WKWebView 开发和使用经验

    WKWebView 属性 webView 属性 title: 网页的标题,一般为 html 的内容 URL: 网页的URL地址,为最终加载的地址 loading:...,一定要在合适的时机将观察者模式移除,否则在 iOS10 以下的设备会造成崩溃,原因是 WKWebView 释放的时候,扔被强持有观察者。...存储 WKWebsiteDataStore 以下情况WKWebView 主动发送请求不会携带 cookie。...Ajax 请求不会带上 Response Set-Cookie 的值 302 跳转不会带上 Response Set-Cookie 的值 可以使用 iOS11 的新 API 对 WKWebView...,发生 302 重定向会走该方法 当容器加载数据发生了错误 didFailProvisionalNavigation 正常加载地址或者使用 js 的 location.href 加载错误的地址发生失败会走该回调

    4.8K30

    前端工程师所需要了解的WebView

    | 导语 现如今,在做移动端 H5 开发,少不了与 Native 之间进行交互。而在Native,H5的承载容器为 WebView,其核心是使用 WebView 控件实现加载 url。...通过以上的分析,可以清楚地知晓 JSBridge 主要的功能和职责,接下来,就分析一下 Android WebView 和 iOS WebView 实现 Native 与 JS 通信的原理。...WebView In apps that run in iOS 8 and later, use the WKWebView class instead of using UIWebView....kill掉 WWDC 2014 大会上,IOS8推出了 WKWebViewWKWebView 是现代 Webkit API iOS 8 和 OS X Yosemite 应用的核心部分。...JavaScript ↔︎ Swift 对话机制 使用用户脚本来注入 JavaScript WKUserScript 允许正文加载之前或之后注入到页面

    1.7K10

    前端工程师所需要了解的WebView

    | 导语 现如今,在做移动端 H5 开发,少不了与 Native 之间进行交互。而在Native,H5的承载容器为 WebView,其核心是使用 WebView 控件实现加载 url。...通过以上的分析,可以清楚地知晓 JSBridge 主要的功能和职责,接下来,就分析一下 Android WebView 和 iOS WebView 实现 Native 与 JS 通信的原理。...WebView In apps that run in iOS 8 and later, use the WKWebView class instead of using UIWebView....kill掉 WWDC 2014 大会上,IOS8推出了 WKWebViewWKWebView 是现代 Webkit API iOS 8 和 OS X Yosemite 应用的核心部分。...JavaScript ↔︎ Swift 对话机制 使用用户脚本来注入 JavaScript WKUserScript 允许正文加载之前或之后注入到页面

    1.4K10

    前端工程师所需要了解的WebView

    | 导语 现如今,在做移动端 H5 开发,少不了与 Native 之间进行交互。而在Native,H5的承载容器为 WebView,其核心是使用 WebView 控件实现加载 url。...通过以上的分析,可以清楚地知晓 JSBridge 主要的功能和职责,接下来,就分析一下 Android WebView 和 iOS WebView 实现 Native 与 JS 通信的原理。...WebView In apps that run in iOS 8 and later, use the WKWebView class instead of using UIWebView....kill掉 WWDC 2014 大会上,IOS8推出了 WKWebViewWKWebView 是现代 Webkit API iOS 8 和 OS X Yosemite 应用的核心部分。...JavaScript ↔︎ Swift 对话机制 使用用户脚本来注入 JavaScript WKUserScript 允许正文加载之前或之后注入到页面

    2.1K30

    wkwebview加载完成_【SwiftWKWebView与JS的交互使用

    点击confrim弹窗 iOS...-- js iOS 传递数据--> window.webkit.messageHandlers.getMessage.postMessage("我是js传递过来的数据...data, err) in print("(String(describing: data)),(String(describing: err))") }) 2、jsiOS...接口的实现,需要有提示信息以及两个相应事件, 确认及取消,并且completionHandler回传相应结果,确认返回YES, 取消返回NO //参数 message为 js 方法 confirm...接口的实现,默认需要有一个输入框一个按钮,点击确认按钮回传输入值 //当然可以添加多个按钮以及多个输入框,不过completionHandler只有一个参数,如果有多个输入框,需要将多个输入框的值通过某种方式拼接成一个字符串回传

    5.6K00

    WKWebView详解

    您可以使用WKWebView类来应用程序嵌入web内容,通过创建一个WKWebView对象,将其设置为视图,并发送一个请求来加载web内容。...从iOS 8.0和OS X 10.10开始,建议使WKWebView应用程序展示web内容,建议不要使用UIWebView或WebView。...; iOS上,这个属性只支持3D Touch的设备上支持 iOS 10及以后的系统版本默认值是YES,之前的默认值是NO 如果将该属性的值设置为YES,则iOS用户可以按下链接来预览链接,并可以检测到地址和电话号码等数据...“Visit apple.com” 字符串的 “apple.com”添加链接 为指定的URL Scheme添加处理器(WKURLSchemeHandler) - (void)setURLSchemeHandler...*)navigation; 主机地址重定向触发 - (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation

    20.5K193

    macOS webview编程

    好像是macOS10.10之后,以及iOS8之后,新出现的WKWebview组件就迅速的替代了Webview及UIWebView。...一是WKWebview的文档,二是iOS类的文档。想要的macOS下面Webview的资料缈如黄鹤。 经过部分只言片语的资料指导和大量的实验,终于完成了工作。所以决定来烧烧冷灶,写出来记录一下。...1.添加Webview 最简单添加webview的方法就是直接在Interface Builder把Webview拖入到窗口并且用鼠标拖动到指定位置和指定大小,随后程序中加上对应的变量: @...let request = URLRequest(url: url); self.webView.mainFrame.load(request); 把somepage.html添加到项目,并在项目设置...的函数名跟js的函数名可以不一样, //#selector中指明的是swift声明的函数名,因为selector是object-c的机制, //所以后面声明真正函数的时候,前面必须加

    5.2K50

    H5如何与原生App通信?

    RN容器 react-native开发,从rn 0.37版本开始官方引入了组件,安卓调用原生浏览器,IOS默认调用的是UIWebView容器。...从IOS12开始,苹果正式弃用UIWebView,统一采用WKWebView。...m.douyu.com' }} /> WebView组件不要嵌套在或原生点击组件,会造成H5内页面滚动失效 h5ios客户端发送消息; ios,并没有现成的api让js去调用native的方法,...params=' + encodeURIComponent(obj)然后带上你要传递给ios参数;然后客户端内拦截到指定协议头的请求之后就阻止该请求并解析url上的参数,执行相应逻辑 H5发起这种特定协议的请求方式分两种...ps: 将回调绑定在window下,特别注意要使用bind保持函数内this的原有指向不变 IOS客户端调用H5方法 Native调用Javascript语言,是通过UIWebView组件的stringByEvaluatingJavaScriptFromString

    6K20

    JS Bridge 通信原理

    iOS 里面又需要区分 UIWebView 和 WKWebView 两种 WebView: ​ 编辑切换为居中 添加图片注释,不超过 140 字(可选) WKWebViewiOS8 之后出现的..."taobao")) { // 拿到调用路径后解析调用的指令和参数,根据这些去调用 Native 方法 return true; } } iOS iOS...注入上下文 前面我们有讲过 iOS 内置了 JavaScriptCore 这个框架,可以实现执行 JS 以及注入 Native 对象等功能。...iOS WKWebView WKWebView 里面通过 addScriptMessageHandler 来注入对象到 JS 上下文,可以 WebView 销毁的时候调用 removeScriptMessageHandler...iOS 和 Android 中最显著的差异就在于这个 window.bridge.send 方法的实现,Android 里面是直接调用 Native 的方法,iOS 是通过 URL Scheme 的形式调用

    4.8K50

    iOS的WebView——WKWebView

    前言 iOS8,苹果推出了WKWebViewWKWebView有一个突出特点,就是内存占用少。 但作为一个全新的WebView,API相比于之前的UIWebView肯定会有所不同。...[self.webview.configuration allowsPictureInPictureMediaPlayback]; // 网页的多媒体是否需要手势才能开始播放(iOS 10)...WKNavigationDelegate 如命名,这个是WKWebView的导航的代理。它控制了WKWebView加载一个页面流程的各个关键时间节点的。...此方法的本质是,js会尝试加载某个URL,客户端加载前拦截这个URL,通过解析这个URL识别它的内容,调用相应的原生方法,并阻上浏览器加载这个URL。...,cookie默认不再自动处理,我们需要手动根据自己的需要,将cookie添加到请求

    3.4K20

    ​# iOS WKWebView适配(基础篇)

    :[self _defaultConfiguration]]; 2.WKWebViewConfiguration类说明 wkwebview初始化时的参数配置 websiteDataStore wkwebview....请求前决定是否要跳转 用户点击网页上的链接,打开新页面,调用。...为了兼容iOS8的js通信,也可以在这里拦截url做bridge分发 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction...:[request.URL URLByDeletingLastPathComponent]] PS:我发现在iOS13+模拟器上,直接用loadRequest也可以访问本地沙盒,并没有权限问题,但是为了减少兼容问题...Etag / If-None-Match :返回Etag给到客户端,下次请求header中将etag的值设置If-None-Match 服务器做比对后客户端比较后,决策是否缓存 [image-20200604163300511

    3.8K30
    领券