جميع حزم المصدر المفتوح
الأدواتSwift

iOSDevelopmentTools

فحص طلبات الشبكة (network requests) وسجلات (logs) تطبيقك وحالة الجهاز في console داخل التطبيق، مع إخفاء الأسرار (secrets redacted).

4النجومآخر إصدار: v2.0.0 · آخر تحديث: 15 أكتوبر 2026
الأنظمة الأساسية:iOS 17macOS 14

الترخيص: MIT

حزمة Swift بلا اعتماديات لـ iOS 17+ وmacOS 14+، تُسجِّل الطلبات التي ينفّذها التطبيق عبر URLSession، وتحفظ رسائل السجل (log messages) الخاصة به، وتجمع تقرير جهاز (device report)، وتعرض الثلاثة في console بـ SwiftUI يُفتَح بالهزّ (shake) أو بزر أو في نافذة. تُستبدَل كلمات المرور وtokens وcookies ومفاتيح API قبل حفظ أي شيء، ويمكن مشاركة الطلبات كأوامر cURL أو ملفات HAR. مُصمَّمة لبنايات (builds) التصحيح والاختبار، ومكتوبة وفق strict concurrency في Swift 6.

الميزات

  • سطر واحد للتسجيل: NetworkCapture.start() يسجِّل URLSession.shared وكل session يُنشَأ بعده من configuration من نوع default أو ephemeral؛ الاستجابات (responses) تصل إلى التطبيق دون تغيير
  • الإخفاء (redaction) قبل التخزين: قيم header وquery وform وmultipart وJSON ذات الأسماء الحساسة تُستبدَل بغض النظر عن كتابة الاسم؛ أي body مُهيكَل (structured) لا يمكن فحصه يُحجَب بالكامل
  • تخزين محدود: 500 طلب كحد أقصى و256 KiB من كل body افتراضيًا، رسائل السجل في ring buffer، عمليات الرفع (uploads) التي تتجاوز 4 MiB تُبَثّ (streamed) بدل أن تُنسَخ
  • تصدير أي طلب كأمر curl آمن لـ shell، وتصدير أي قائمة طلبات كـ HTTP Archive (HAR 1.2)
  • LogStore يحتفظ برسائل مُصنَّفة بمستويات (leveled) وفئات (categorized)، ويكتبها أيضًا إلى unified logging system؛ DeviceSnapshot يُقرِّر الإصدار ونظام التشغيل والموديل واستخدام الذاكرة والحالة الحرارية (thermal state) وحالة debugger
  • console بـ SwiftUI بتبويبات (tabs) Network وLogs وDevice، وبحث، وفلاتر، وقوائم مشاركة؛ يُفتَح بالهزّ (shake) على iOS، أو من زر، أو في نافذة macOS
  • 148 اختبار Swift Testing؛ تنتقل الطلبات من session التطبيق عبر capture إلى خادم stub، وتفحص الاختبارات ما استلمه الخادم وما استلمه التطبيق وما خُزِّن
  • كتالوج DocC بأربع مقالات وتطبيق المثال DevToolsDemo لـ iOS وmacOS

البدء السريع

swift
1@main
2struct MyApp: App {
3 init() {
4 #if DEBUG
5 NetworkCapture.start()
6 #endif
7 }
8 
9 var body: some Scene {
10 WindowGroup {
11 ContentView()
12 #if DEBUG
13 .devToolsConsoleOnShake()
14 #endif
15 }
16 }
17}

التثبيت

Xcode (File › Add Package Dependencies…)

text
1https://github.com/muhittincamdali/iOSDevelopmentTools.git

Swift Package Manager

swift
1.package(url: "https://github.com/muhittincamdali/iOSDevelopmentTools.git", from: "2.0.0")

لقطات الشاشة

تبويب Network يسرد سبعة طلبات حقيقية من تطبيق المثال: طلب فاشل إلى host غير معروف، وخطأ 503، وخطأ 404، وأربعة طلبات ناجحة بمدتها وحجمها
طلب تسجيل دخول مفتوح في الـ console: header من نوع Authorization وكلمة المرور في body من نوع JSON تظهران كـ [REDACTED]
تبويب Logs برسائل info وwarning وerror من تطبيق المثال، كل منها بفئته (category) ووقته وسطر المصدر
تبويب Device يعرض إصدار التطبيق وإصدار iOS والموديل المُحاكى (simulated) والذاكرة وذاكرة التطبيق والحالة الحرارية وLow Power Mode وحالة debugger

الجدول الزمني

  1. فُتح المستودع بوحدات (modules) network وstorage وanalytics وdebug وutility

  2. وُسم v1.0.0: network client مبني على Alamofire، إضافة إلى مديري storage وanalytics وlogging في خمس وحدات

  3. تبسيط: أُزيلت وحدات 1.0.0 واستُبدلت بكود placeholder

  4. v2.0.0: أُعيد البناء من الصفر كـ network inspector وconsole للسجل وتقرير جهاز داخل التطبيق، مع الإخفاء (redaction) وDocC وتطبيق مثال

الروابط

مقالة ذات صلة

قراءة المقالة (English)