adwhale_sdk_flutter 구조 도식화 (PPT 캡처용)

각 박스를 캡처하거나, Mermaid Live Editor에서 PNG/SVG로 내보내서 PPT에 삽입하세요.

1. 전체 플랫폼 구조 (Android vs iOS)

flowchart TB subgraph Flutter["Flutter (Dart)"] API["AdWhaleAdView / AdWhaleAdBannerView\nAdInfo, AdWhaleAdWidget"] IM["AdInstanceManager\n(Method Channel)"] API --> IM end subgraph Android["Android"] PluginA["AdWhaleSdkFlutterPlugin"] AdWhale["AdWhale Mediation SDK\n(배너/전면/보상/네이티브)"] PluginA --> AdWhale end subgraph iOS["iOS"] PluginI["AdWhaleSdkFlutterPlugin"] AdMob["AdMobBannerAdapter\n→ Google-Mobile-Ads-SDK"] PluginI --> AdMob end IM -->|"adwhale_sdk_flutter_channel"| PluginA IM -->|"adwhale_sdk_flutter_channel"| PluginI

2. Android 배너 흐름

flowchart LR subgraph Dart["Dart"] A1["AdWhaleAdView\nloadAd()"] A2["AdInstanceManager"] A3["MethodChannel"] A1 --> A2 --> A3 end subgraph Native["Android Native"] B1["AdWhaleSdkFlutterPlugin"] B2["FlutterBannerAd"] B3["AdWhaleMediationAdView"] B1 --> B2 --> B3 end A3 -->|invokeMethod| B1 B3 -->|onAdEvent| A3

3. iOS 배너 흐름

flowchart LR subgraph Dart["Dart"] C1["AdWhaleAdView\nloadAd()"] C2["AdInstanceManager"] C3["MethodChannel"] C1 --> C2 --> C3 end subgraph iOS_Native["iOS Native"] D1["AdWhaleSdkFlutterPlugin"] D2["AdMobBannerAdapter"] D3["GADBannerView"] D1 --> D2 --> D3 end C3 -->|invokeMethod| D1 D3 -->|onAdEvent| C3

4. iOS AdMob 레이어 분리 (교체 용이)

flowchart TB subgraph Plugin["플러그인 (라우팅)"] H["_init, loadBannerAd,\ndestroyAd..."] end subgraph AdMob_Layer["AdMob 전용 레이어"] A["AdMobBannerAdapter"] F["AdMobBannerViewFactory"] M["AdMobBannerSizeMapper"] end subgraph SDK["외부 SDK"] G["Google-Mobile-Ads-SDK"] end H --> A A --> G F --> A A --> M