Я пытаюсь помочь моему боссу и коллегам с приложением iOS 12 Swift, чтобы помочь всем нам лучше управлять запасами, находясь в цехе.
Все это работает благодаря использованию технологии считывания штрих-кода / QR-кода, поставляемой в комплекте с iOS 12.
Веб-страница, используемая для входа в службу инвентаризации, использует обычную технологию http ипоэтому iOS (кажется) не предлагает мне средства, позволяющие мне сохранять / восстанавливать пароль в / из Цепочки для ключей.Однако я могу сохранить информацию для входа в систему, когда захожу на сайт через мой Mac.Я подтвердил, что информация для входа в систему была сохранена в цепочке для ключей Mac (которая используется совместно с iPhone через iCloud).
Веб-страница предупреждает, что пароль (на любой платформе) будет отправлен в незашифрованном виде.
Я уже адаптировал часть кода на https://www.appcoda.com/barcode-reader-swift/.
У меня нет полной учетной записи разработчика Apple, поэтому в настоящее время это не производственное приложение.
Основное различие между кодом, предоставленным www.appcoda.com/barcode-reader-swift и моим, почти во всем, заключается в функции func launchApp файла «QRSwiftController.swift».Небольшие изменения, чтобы помочь улучшить читаемость и удобство использования.Использование Safari View Controller делает все более единым внутри одного приложения и т. Д.
func launchApp(decoded_barcode: String) {
if presentedViewController != nil {
return
}
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
let result = decoded_barcode.replacingOccurrences( of:"[^0-9]", with: "", options: .regularExpression)
let startOfURL: String = "http://xxx.webname.com/deploy/artikel.php?nummer="
let fullURL = startOfURL + result
let alertPrompt = UIAlertController(title: "Open App", message: "You're going to open \(fullURL)", preferredStyle: .actionSheet)
let confirmAction = UIAlertAction(title: "Confirm", style: UIAlertActionStyle.default, handler: { (action) -> Void in
if let url = URL(string: fullURL){
let safariVC = SFSafariViewController(url: url)
self.present(safariVC, animated: true, completion: nil)
}
})
let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel, handler: nil)
alertPrompt.addAction(confirmAction)
alertPrompt.addAction(cancelAction)
present(alertPrompt, animated: true, completion: nil)
}
Даже когда я захожу на веб-сайт управления запасами через обычный Safari на моем iPhone, мне каждый раз предлагается ввести имя пользователя / пароль.
Альтернативный URL для экрана входа в систему https://imgur.com/a/S2EMYcE
Можно ли как-нибудь обойти эту проблему, автоматизировав нажатие текстовых полей для имени пользователя /пароль (затем вставив информацию) и затем нажав «Войти» ??
Я уже искал решения для Stackoverflow, но они кажутся чрезвычайно сложными и / или больше не действительны для Swift 4.
Спасибо!
Допустим общие имена пользователей и пароли, такие как 'user' и 'password'.