Сохранить электронную почту в локальное хранилище сафари после успешного входа в систему

Я пытаюсь разработать расширение сафари, используя быстрые службы сафари. Проект создается из mac os, а затем из расширения safari. Я разработчик javascript, но для разработки расширения safari необходимо использовать Swift, но я не знаю, как сохранять данные в локальном хранилище Safari. Я просмотрел следующую документацию, но не смог извлечь из нее никакой пользы.

https://developer.apple.com/documentation/safariservices/safari_app_extensions

вот код

import SafariServices


class SafariExtensionViewController: SFSafariExtensionViewController {


    @IBOutlet weak var passwordMessage: NSTextField!
    @IBOutlet weak var emailMessage: NSTextField!
    @IBOutlet weak var message: NSTextField!
    @IBOutlet weak var email: NSTextField!
    @IBOutlet weak var password: NSSecureTextField!
    static let shared = SafariExtensionViewController()
    override func viewDidLoad() {
        self.preferredContentSize = NSSize(width: 300, height: 250)
        message.stringValue = ""
        emailMessage.stringValue = ""
        passwordMessage.stringValue = ""
    }


    @IBAction func userLogin(_ sender: Any) {
        let providedEmailAddress = email.stringValue
        let providedPassword = password.stringValue
        let isEmailAddressValid = isValidEmailAddress(emailAddressString: providedEmailAddress)
        self.message.stringValue = ""
        emailMessage.stringValue = ""
        passwordMessage.stringValue = ""
        if isEmailAddressValid && providedPassword.count > 0 {
            let parameters = ["email": providedEmailAddress, "password": password.stringValue]
            let URI = URL(string: "https://api.production.navihq.com/auth/sign_in")
            let session = URLSession.shared
            var request = URLRequest(url: URI!)
            request.httpMethod = "POST"
            do {
                request.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted)
            } catch let error {
                print(error.localizedDescription)
            }
            request.addValue("application/json", forHTTPHeaderField: "Content-Type")
            let task = session.dataTask(with: request as URLRequest, completionHandler: { data, response, error in

                guard error == nil else {
                    return
                }

                guard let data = data else {
                    return
                }

                do {
                    //create json object from data
                    if let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any] {
                        if let httpResponse = response as? HTTPURLResponse { 
                            if (httpResponse.statusCode >= 200 && httpResponse.statusCode < 300) {
                                self.message.stringValue = "Login Successful"
                                // i want to store the email in safari local storage here
                            } else {
                                self.message.stringValue = "Invalid Credentials"
                            }
                        }
                    }
                } catch let error {
                    print(error.localizedDescription)
                }
            })
            task.resume()
        } else {
            emailMessage.textColor = NSColor.red
            emailMessage.stringValue = "Invalid Email"
        }
    }

}

Не: я не использую IOS. Пользуюсь сафариусервисами.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
237
1

Ответы 1

Думаю, вам следует использовать Возможность обмена сообщениями между расширением приложения Safari и внедренным скриптом. Например, отправить сообщение из внедренного скрипта в приложение ext. при срабатывании DOMContentLoaded и отправить ему ответ с необходимыми данными (в настоящее время по электронной почте) для установки в локальное хранилище браузера с помощью внедренного JS.

Надеюсь, поможет!

Другие вопросы по теме