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