/
sberpay
/
AgeGate-iOS
Обзор
Документация
Войти
/
sberpay
/
AgeGate-iOS
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
develop
DEBUG-AgeGate/Sources/AGTLogVC.swift
75 строк
3 KB
SergeyGladkiy
[0.2.0] БДСЧ сценарий
30 июл 2026, 21:57
30 июл 2026, 21:57
cbcdfcb
Код
Авторство
О чём код?
// // LogVC.swift // AgeGateSDKDEBUG // // Created by Гладкий Сергей Игоревич on 24.07.2026. // #if SDKDEBUG import UIKit /// Просмотр и выгрузка логов. Аналог LogVC из DEBUG-SPay. /// /// Нужен, чтобы тестировщик мог отправить файл лога, не подключая устройство /// к Xcode. Существует только в отладочной сборке. final class LogVC: UIViewController { private let textView = UITextView() private var currentFile: URL? override func viewDidLoad() { super.viewDidLoad() title = "Логи" view.backgroundColor = .systemBackground textView.isEditable = false textView.font = .monospacedSystemFont(ofSize: 11, weight: .regular) textView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(textView) NSLayoutConstraint.activate([ textView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor), textView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 8), textView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -8), textView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor) ]) navigationItem.rightBarButtonItems = [ UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(share)), UIBarButtonItem(barButtonSystemItem: .trash, target: self, action: #selector(clear)) ] reload() } private func reload() { currentFile = SBLogger.allLogFiles().first guard let currentFile, let text = try? String(contentsOf: currentFile, encoding: .utf8) else { textView.text = "Логов пока нет.\n\nВключаются через AgeGate.setup(logging: true)." return } textView.text = text /// Показываем конец: свежие записи внизу файла. textView.scrollRangeToVisible(NSRange(location: (text as NSString).length - 1, length: 1)) } @objc private func share() { guard let currentFile else { return } let controller = UIActivityViewController(activityItems: [currentFile], applicationActivities: nil) controller.popoverPresentationController?.barButtonItem = navigationItem.rightBarButtonItems?.first present(controller, animated: true) } @objc private func clear() { SBLogger.clearLogs() reload() } } #endif