我目前正在使用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
答案 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 是一个变量。