尝试在Swift中每120秒添加一个URL自动重定向

时间:2018-07-21 19:18:17

标签: ios swift wkwebview

我对编码非常陌生,因此不胜感激。

我正在尝试收集有关正在工作的视频会议技术的基本调查数据,以及在调查完成后使用通往广告页面的路线的付费解决方案。由于每次调查后都无法重新启动Web URL,因此我希望该页面每2分钟自动重定向回初始URL页面。下面是我现有的代码。 谢谢。

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    var webView: WKWebView!

    override func loadView() {
        webView = WKWebView()
        webView.navigationDelegate = self
        view = webView
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        let url = URL(string: "https://Mysurveypage/1234")!
        webView.load(URLRequest(url: url))
        webView.allowsBackForwardNavigationGestures = true
    }
}

3 个答案:

答案 0 :(得分:1)

var timer = Timer.scheduledTimer(timeInterval: 120.0, target: self, selector: #selector(ViewController.toDoTask), userInfo: nil, repeats: true)



func toDoTask() 
 {
    let url = URL(string: "https://Mysurveypage/1234")!
    webView.load(URLRequest(url: url))



 }

第一次可以在toDoTask()中呼叫viewDidLoad()

答案 1 :(得分:0)

您可以尝试以下代码:

import UIKit
import WebKit

class HomeViewController: UIViewController, WKNavigationDelegate{

    var webView = WKWebView()

    override func viewDidLoad() {
        super.viewDidLoad()
        webView.navigationDelegate = self
        view = webView
        let url = URL(string: "https://Mysurveypage/1234")!
        webView.load(URLRequest(url: url))
        webView.allowsBackForwardNavigationGestures = true
    }

    override func viewDidAppear(_ animated: Bool) {
        //Uncomment the following line of code to reload the webview currently on top of navigation stack, or in plain words, current browser tab showing in mobile window, Comment the other timer code if you intend to do this
        //Timer.scheduledTimer(timeInterval: 2 * 60, target: self, selector: #selector(reloadWebView), userInfo: nil, repeats: true)

        // Following line of code reloads the initial url i.e. "https://Mysurveypage/1234"
        Timer.scheduledTimer(timeInterval: 2 * 60, target: self, selector: #selector(redirectToInitialUrl), userInfo: nil, repeats: true)
    }

    @objc private func reloadWebView() {
        webView.reload()
    }

    @objc private func redirectToInitialUrl() {
        let url = URL(string: "https://Mysurveypage/1234")!
        webView.load(URLRequest(url: url))
    }
}

PS:Apple文档说,here

  

永远不要直接调用此方法。

通常要在UIViewController的生命周期中使用viewDidLoad()方法执行所有一次功能/操作。

答案 2 :(得分:0)

非常感谢您的答复。不幸的是,我对编码还很陌生,我不知道在哪里输入Jagdeep的代码,但是复制naeemjawaid的代码效果很好。我确实必须从类ViewController中删除单词“ Home”。之后,一切都很好。再次感谢您的帮助。