快速向URL添加变量

时间:2020-06-30 02:51:48

标签: ios swift uialertcontroller

我目前正在使用Swift在Xcode中开发一个应用程序。该应用程序的一般前提是,当该应用程序首次加载时,将要求用户输入“移动链接代码”,该代码实际上将作为变量添加到url的末尾,以用作其登录网站,其余的身份验证在服务器端完成。然后,当用户每次之后登录应用程序时,此变量将自动应用到URL,因此从本质上说,他们始终总是自动登录。

我已经为应用设置了代码,并且UIAlertController加载了一个文本字段,我正在努力寻找如何将“移动链接代码”(用户将在文本字段中键入)附加到第一次加载时在URL的末尾,然后再将其附加到每次加载后的URL。

我的代码如下

在我的WebViewController.swift顶部

var webviewurl = "https://mywebsite.co.uk/loginarea.php?link="(我需要在该网址的末尾附加移动链接代码)

在我的代码中,我有我的第一个运行对话框,在其中添加了UIAlertController。这将在第一次打开应用程序时运行,仅在该应用程序中用户将输入其“移动链接代码”,然后单击“提交”,然后将Webview重定向到url,并将文本字段中的数据附加到末尾。

    if activatefirstrundialog == "true" {
    if !user.bool(forKey: "firstrun")
    {
        user.set("1", forKey: "firstrun")
        user.synchronize()
        webView.stopLoading()
            let ac = UIAlertController(title: "Enter Mobile Link Code", message: "Enter the mobile link code found in your Client Area", preferredStyle: .alert)
            ac.addTextField()

            let submitAction = UIAlertAction(title: "Submit", style: .default) { [unowned ac] _ in
                let answer = ac.textFields![0]
                // do something interesting with "answer" here
                let url = URL(string: "https://mywebsite.co.uk/loginarea.php?link=")!
                self.webView.load(URLRequest(url: url + answer))
         
            }

            ac.addAction(submitAction)

            present(ac, animated: true)
        }
}
}

如果有人可以帮助我,我将永远感激不尽。

TIA

3 个答案:

答案 0 :(得分:1)

您的意思是这样的吗?

let submitAction = UIAlertAction(title: "Submit", style: .default) { [unowned ac] _ in
    let answer = ac.textFields![0]
    // do something interesting with "answer" here
        
    if let answerText = answer.text, answerText.count > 0 {
        if let percentageEncodedString = "https://mywebsite.co.uk/loginarea.php?link=\(answerText)".addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) {
            if let url = URL(string:percentageEncodedString) {
                self.webView.load(URLRequest(url: url))
             } else {
                //Handle error here, url is not valid
            }
        } else {
            //Handle error here, url cannot be encoded
        }
    } else {
        //Handle error here, text field's text is nil or text is empty
    }
}

答案 1 :(得分:1)

要在多个应用会话之间使用mobileLink,您需要在用户首次输入后将其保存在某个地方。

假设我们将其保存在UserDefaults中。然后,您可以像这样相应地获取其值,

if !user.bool(forKey: "firstrun") {
    //your code...
    let submitAction = UIAlertAction(title: "Submit", style: .default) { [unowned ac] _ in
        if let answer = ac.textFields.first?.text {
            UserDefaults.standard.set(answer, forKey: "mobileLink")
            let url = URL(string: "https://mywebsite.co.uk/loginarea.php?link=\(answer)")!
            self.webView.load(URLRequest(url: url))
        }
    }
    //your code...
} else if let mobileLink = UserDefaults.standard.string(forKey: "mobileLink") {
    let url = URL(string: "https://mywebsite.co.uk/loginarea.php?link=\(mobileLink)")!
    self.webView.load(URLRequest(url: url))
}

答案 2 :(得分:0)

您应该将此pip3.8 list存放在安全的地方。您可以使用mobile linking code进行存储。

要回答您的问题,您可以连接字符串并形成如下网址:

keychain

answer 是一个变量。