iOSDevelopmentTools
Inspectez les requêtes réseau, les logs et l'état de l'appareil de votre app dans une console intégrée, avec les secrets masqués.
Licence: MIT
Un package Swift sans dépendance pour iOS 17+ et macOS 14+ qui enregistre les requêtes qu'une app effectue avec URLSession, conserve ses messages de log et collecte un rapport sur l'appareil, puis affiche les trois dans une console SwiftUI qui s'ouvre par un shake, un bouton ou une fenêtre. Les mots de passe, tokens, cookies et clés API sont remplacés avant tout stockage, et les requêtes peuvent être partagées comme commandes cURL ou fichiers HAR. Il est destiné aux builds de debug et de test, et est écrit pour la concurrence stricte de Swift 6.
Fonctionnalités
- Une seule ligne pour enregistrer : NetworkCapture.start() enregistre URLSession.shared et toute session créée par la suite à partir de la configuration par défaut ou éphémère ; les réponses arrivent à l'app inchangées
- Masquage avant stockage : les valeurs de header, query, form, multipart et JSON portant des noms sensibles sont remplacées quelle que soit l'orthographe du nom ; un corps structuré qui ne peut pas être vérifié est retenu
- Stockage borné : au plus 500 requêtes et 256 Kio de chaque corps par défaut, messages de log dans un ring buffer, uploads de plus de 4 Mio diffusés en flux plutôt que copiés
- Exportez n'importe quelle requête sous forme de commande curl sûre pour le shell, et n'importe quelle liste de requêtes sous forme de HTTP Archive (HAR 1.2)
- LogStore conserve des messages à niveaux et catégorisés, et les écrit aussi dans le système de logging unifié ; DeviceSnapshot rapporte la version, l'OS, le modèle, l'empreinte mémoire, l'état thermique et le statut du debugger
- Console SwiftUI avec les onglets Network, Logs et Device, recherche, filtres et menus de partage ; s'ouvre par shake (iOS), depuis un bouton ou dans une fenêtre macOS
- 148 tests Swift Testing ; les requêtes voyagent d'une session de l'app, à travers la capture, jusqu'à un serveur stub, et les tests vérifient ce que le serveur a reçu, ce que l'app a reçu et ce qui a été stocké
- Catalogue DocC avec quatre articles et l'app d'exemple DevToolsDemo pour iOS et macOS
Démarrage rapide
1@main2struct MyApp: App {3 init() {4 #if DEBUG5 NetworkCapture.start()6 #endif7 }8 9 var body: some Scene {10 WindowGroup {11 ContentView()12 #if DEBUG13 .devToolsConsoleOnShake()14 #endif15 }16 }17}Installation
Xcode (File › Add Package Dependencies…)
1https://github.com/muhittincamdali/iOSDevelopmentTools.gitSwift Package Manager
1.package(url: "https://github.com/muhittincamdali/iOSDevelopmentTools.git", from: "2.0.0")Captures d'écran

![Une requête de connexion ouverte dans la console : le header Authorization et le mot de passe dans le corps JSON affichent [REDACTED]](/_next/image/?url=%2Fopen-source%2Fiosdevelopmenttools%2Frequest-light.png&w=3840&q=75)


Chronologie
Dépôt ouvert avec des modules network, storage, analytics, debug et utility
v1.0.0 étiquetée : un client réseau construit sur Alamofire, ainsi que des managers de storage, analytics et logging répartis en cinq modules
Simplification : les modules de la 1.0.0 ont été supprimés et remplacés par du code espace réservé
v2.0.0 : reconstruit de zéro comme un inspecteur réseau, une console de logs et un rapport d'appareil intégrés à l'app, avec masquage, DocC et une app d'exemple