التوثيق · التكامل مع iOS

1. التبعيات (Podfile)

1.1 لماذا لا تزال بحاجة إلى Podfile

يُربط AKSKit.xcframework/AppsKit.xcframework مباشرةً كإطاري عمل ثنائيين (§2)، وليس كحزم pods — لكن وحدة Swift المترجمة في AppsKit.xcframework تشير إلى رموز من عدة حزم SDK تابعة لجهات خارجية (Firebase، Google Mobile Ads، IronSource، Adjust، AppsFlyer، AppLovin). يجب أن تكون هذه الحزم موجودة في شجرة تبعيات مشروعك عبر CocoaPods، وإلا فستفشل مرحلة الربط أثناء البناء، حتى لو لم تستدعِ معظمها مباشرةً.

1.2 حزم pods المطلوبة (مطلوبة دائمًا)

ruby
source 'https://cdn.cocoapods.org'

platform :ios, '15.0'

target 'YourApp' do
  use_frameworks!

  # Remote Config drives almost all AKS behavior; Analytics/Crashlytics back AKS events and crash reporting
  pod 'Firebase/Analytics',    '~> 12.15.0'
  pod 'Firebase/Crashlytics',  '~> 12.15.0'
  pod 'Firebase/RemoteConfig', '~> 12.15.0'

  pod 'Google-Mobile-Ads-SDK'

  # Required by AppsKit.xcframework's compiled swiftinterface — these are transitive
  # dependencies of the AKS facade itself, not direct calls you make.
  pod 'IronSourceSDK',         '~> 9.1.0.0'
  pod 'Adjust',                '~> 5.4.6'
  pod 'AppsFlyerFramework'
  pod 'AppsFlyer-AdRevenue'

  pod 'AppLovinSDK'
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.0'
      config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf-with-dsym'
    end
  end
end

الإصدارات أعلاه هي ما ينتج حاليًا عن حلّ التبعيات في تكامل مرجعي ثبت أنه يعمل (Podfile.lock): Firebase/* 12.15.0، وGoogle-Mobile-Ads-SDK دون تقييد الإصدار لمواكبة أحدث إصدار (وهو يجلب GoogleUserMessagingPlatform كتبعية غير مباشرة)، وIronSourceSDK 9.1.0.0، وAdjust 5.4.6، وAppsFlyerFramework/AppsFlyer-AdRevenue 6.14.3، وAppLovinSDK 13.5.0. تعامل معها كخط أساس ثبت أنه يعمل، لا كإصدارات ثابتة إلزامية — حدّثها حسب احتياجات تطبيقك، لكن أبقِ IPHONEOS_DEPLOYMENT_TARGET عند 15.0 أو أعلى ليتوافق مع الإصدار المستهدف عند بناء AppsKit.xcframework/AKSKit.xcframework.

السطر DEBUG_INFORMATION_FORMAT = 'dwarf-with-dsym' ضمن post_install ليس مجرد تحسين شكلي اختياري — فمن دونه، لا تُنتج بعض هذه الحزم (وخاصةً AppLovinSDK) ملفات dSYM، مما يعطّل تحويل عناوين الذاكرة في تقارير الأعطال إلى رموز مقروءة، وقد يؤدي إلى فشل التحقق من ملفات dSYM في App Store Connect عند الرفع.

1.3 حزم SDK لشركاء القياس على الأجهزة المحمولة (MMP)

Solar Engine ليس حزمة pod تضيفها — فهو مضمَّن بالفعل في AKSKit.xcframework نفسه أثناء الترجمة، لذا لن تجده في Podfile (ولا تحتاج إلى إضافته). أما AppsFlyer وAdjust، فهما، على النقيض، حزمتا pods يضيفهما التطبيق الذي يدمج SDK (§1.2 أعلاه)، لأن شيفرة Swift في AppsKit.xcframework تستدعي دوال SDK الفعلية الخاصة بهما مباشرةً (initializeAppsFlyer/initializeAdjust في IOSBridgeImp.swift).

1.4 حزم SDK لشبكات الإعلانات / الوساطة الإعلانية

لا يضيف Podfile المرجعي سوى Google-Mobile-Ads-SDK وIronSourceSDK وAppLovinSDK — ولا يتضمن حزم pods منفصلة من نوع "محوّل وساطة AdMob". إذا كانت إعدادات بوابة AKS لديك تفعّل الوساطة عبر AdMob باستخدام عروض الأسعار أو العرض الإعلاني بالتتابع (waterfall) لشبكات غير المذكورة، فتحقّق مما إذا كانت تلك الشبكة تحتاج إلى محوّل CocoaPods خاص بها (مثل حزمة pod من نوع GoogleMobileAdsMediation*) — فهذا الدليل لا يوثّق إلا ما تم التأكد من عمله في التطبيق المرجعي.