admel_sdk
AdMel SDK for Flutter - Audio advertisement plugin with banner display, VAST support, mute detection, and auto-refresh.
1.1.2
admel-tech/admel-flutter
What this package is like to depend on
Last release 1 months ago
16 Jul 2026
Ships fairly regularly
a new release about every 4 weeks
Most releases are documented
notes for 31 of 36 stable releases
Nothing withdrawn
no release was ever pulled
5 months old
36 releases · first in 2026
36 releases in the last 12 months
see the full history below
Release timeline
36 releases · Mar 2026 to Jul 2026Releases
latest 36-
1.1.216 Jul 2026Release notes
Open source →- Feature: 広告ロード失敗(no-fill/エラー)を Dart に通知。
setAdEventListenersにonAdFailedToLoad(String reason)を追加。VAST 取得/パース失敗や広告無し(reason: 'load_failed')、 音声/画像欠落('invalid_creative')の際に発火する。- これまで
showAd()はロード失敗でも常に成功で解決していたため、広告が実際に表示されたか アプリ側で判別できなかった問題を解消。API 追加のみで既存挙動は不変。
- これまで
- Docs: パッケージ README を現行 API(1.1.x)に全面刷新。
- Feature: 広告ロード失敗(no-fill/エラー)を Dart に通知。
-
1.1.115 Jul 2026Release notes
Open source →- Feature: スキップ可能広告に対応。VAST の
<Linear skipoffset="HH:MM:SS">を解析し、 再生位置がオフセットに達するとバナー右上に「✕」スキップボタンを表示する。- スキップ時:
<Tracking event="skip">を発火({progress}マクロ対応)→ 広告を終了 (complete は発火しない)→onAdStopped→ 次の自動リフレッシュは通常どおり。 - skipoffset の無い広告(従来の広告)は挙動変更なし。Dart API の変更なし (スキップ UI・挙動はネイティブ内で完結)。
- スキップ時:
- Feature: スキップ可能広告に対応。VAST の
-
1.1.014 Jul 2026Release notes
Open source →- 構造変更: ネイティブ SDK をプラグインに同梱(機能・API の変更なし)。
- iOS:
AdMel-SDKpod(バイナリ配布)への依存を廃止し、ネイティブコアのソースをios/Classes/Core/に同梱。CocoaPods trunk / CDN 伝播待ちが不要に。 - Android:
jp.admel:admel-sdk(Maven Central)への依存を廃止し、Kotlin ソースをandroid/src/main/kotlin/jp/admel/sdk/に同梱。 - ネイティブコアは Flutter 非依存を維持(CI の境界チェックで担保)。Unity 等ネイティブ利用者向けの単独ビルドは
tools/native-core/で可能。 - 旧
admel-native-sdkリポジトリは v1.0.19 で凍結。
- iOS:
- 構造変更: ネイティブ SDK をプラグインに同梱(機能・API の変更なし)。
-
1.0.3809 Jul 2026Release notes
Open source →- Improve:
animation: 'scale'指定時、広告バナーの退出時もスケールアウト(縮小+フェード)で消えるように統一。以前は出現がスケール、退出がスライドアウトで不揃いだった。- iOS:
transformを等倍→0.01 に縮小+alpha0(0.3s)。Android:scaleX/scaleY1→0+alpha0(0.3s)。'slide'(デフォルト)は従来どおりスライドアウト。 - ネイティブ SDK 依存を iOS
AdMel-SDK ~> 1.0.19/ Androidjp.admel:admel-sdk:1.0.19に更新。
- iOS:
- Improve:
-
1.0.3709 Jul 2026Release notes
Open source →- Feature:
showAd(..., animation: 'slide' | 'scale')— 広告バナーの出現アニメーションを選択可能に。'slide'(デフォルト、従来どおり画面端からスライドイン)に加え、'scale'で出現位置からバネで弾むスケールアップ表示ができる。- iOS:
usingSpringWithDampingによるスプリングアニメーション(damping 0.6)。Android:OvershootInterpolatorで 0→等倍にスケール。 - ネイティブ SDK 依存を iOS
AdMel-SDK ~> 1.0.18/ Androidjp.admel:admel-sdk:1.0.18に更新(バナーマネージャーにbannerAnimationStyleを追加)。
- iOS:
- Feature:
-
1.0.3623 May 2026Release notes
Open source →- Feature:
enableBgmDucking(onDuck, onRestore)API — ホストアプリの BGM 音量を広告再生中に自動制御する仕組みを追加。アプリは音量変更のコールバックを1回登録するだけで、広告開始/終了のタイミング判定・ポーリングは SDK が管理する。setAdEventListenersとは独立して動作し、共存可能。- iOS / Android 共に、OS レベルのオーディオダッキング(
duckOthers/AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK)は同一アプリ内の音声には効かないため、Dart レイヤーで明示的に制御する方式に変更。
- iOS / Android 共に、OS レベルのオーディオダッキング(
- Feature:
disableBgmDucking()— ダッキングを無効化。現在ダッキング中の場合はonRestoreを呼んでから解除。
- Feature:
-
1.0.3522 May 2026Release notes
Open source →- Fix (Android): Add
setAllowedCapturePolicy(ALLOW_CAPTURE_BY_ALL)toAudioAttributesonMediaPlayerso that ad audio is captured by Android screen recording. Without this explicit policy, screen recorders on Android 10+ may silently exclude the audio track. Raise Android native SDK dependency tojp.admel:admel-sdk:1.0.17.
- Fix (Android): Add
-
1.0.3422 May 2026Release notes
Open source →- Fix (Android): Set
AudioAttributes(USAGE_MEDIA/CONTENT_TYPE_MUSIC) onMediaPlayerto ensure audio ads are captured by Android screen recording when the host app enablesallowAudioPlaybackCapture. Raise Android native SDK dependency tojp.admel:admel-sdk:1.0.16.
- Fix (Android): Set
-
1.0.3311 May 2026Release notes
Open source →- Fix (iOS): VAST parser now correctly detects audio and image URLs that have no file extension. Previously,
MediaFileURLs were matched by extension (.mp3,.wav,.m4a) only, causing production creative URLs to fail with "Missing audio or image URL in VAST". The parser now checks thetypeattribute (audio/mpegetc.) first, falling back to extension matching. Same fix applied toStaticResourceimage detection viacreativeTypeattribute. Raise iOS native SDK dependency toAdMel-SDK ~> 1.0.16.
- Fix (iOS): VAST parser now correctly detects audio and image URLs that have no file extension. Previously,
-
1.0.3210 May 2026Release notes
Open source →- Fix:
onAdStarted/onAdStoppedcallbacks now reliably fire on Android during gameplay. Added Dart-side polling (500ms interval viaisPlaying()) to supplement native→DartinvokeMethodcallbacks, which can be dropped on Android when the Flutter engine is busy rendering. Native callbacks remain active as a fast-path on iOS.
- Fix:
-
1.0.3108 May 2026Release notes
Open source →- Fix:
onMuteStateChangedcallback now reliably fires on Android during gameplay. Added Dart-side polling (2-second interval viaisMuted()) to supplement native→DartinvokeMethodcallbacks, which can be dropped on Android when the Flutter engine is busy rendering. Native callbacks remain active as a fast-path on iOS.
- Fix:
-
1.0.3006 May 2026Release notes
Open source →- Feature:
showAd()now supportscustom-centerpositioning viarelativeX/relativeY. When these parameters are provided, the ad banner is centered at the specified screen coordinate (expressed as a 0.0–1.0 ratio of screen width/height) instead of being placed from its top-left corner. This eliminates off-center placement caused by banner size differences between iPhone and iPad. - Raise minimum native SDK dependency to 1.0.15 (iOS: AdMel-SDK ~> 1.0.15, Android: admel-sdk:1.0.15).
- Feature:
-
1.0.2729 Apr 2026Release notes
Open source →- Revert: restore standard CocoaPods (iOS) and Maven Central (Android) dependencies for native SDK distribution. Removes experimental binary bundling approach (1.0.21–1.0.26).
-
1.0.2629 Apr 2026Nothing published for this version
-
1.0.2529 Apr 2026Nothing published for this version
-
1.0.2429 Apr 2026Nothing published for this version
-
1.0.2229 Apr 2026Nothing published for this version
-
1.0.2129 Apr 2026Nothing published for this version
-
1.0.2029 Apr 2026Release notes
Open source →- Fix: ad playback now pauses (instead of stops) when device volume drops below the mute threshold during playback. Raising the volume resumes the ad from where it left off.
- Raise minimum native SDK dependency to 1.0.13 (iOS: AdMel-SDK ~> 1.0.13).
-
1.0.1928 Apr 2026Release notes
Open source →- Fix:
startDuckingis now called ononAdStarted(when ad audio actually begins) instead ofshowAd(when the ad is requested). Previously, ducking was activated immediately atshowAdtime, causing host app BGM/SE to be unnecessarily ducked during theinitialRefreshIntervalwait period before the first ad plays. - Change: mute detection threshold lowered from 30% to 20%.
- Raise minimum native SDK dependency to 1.0.12 (iOS: AdMel-SDK ~> 1.0.12).
- Fix:
-
1.0.1828 Apr 2026Release notes
Open source →- Raise minimum native SDK dependency to 1.0.11 (iOS: AdMel-SDK ~> 1.0.11).
-
1.0.1728 Apr 2026Release notes
Open source →- Fix:
stopDuckingnow reactivates the AVAudioSession withPlayback + MixWithOthersafter sendingNotifyOthersOnDeactivation. On iPadOS, leaving the session inactive causedoutputVolumeto return 0.0, makingisMuted()always report muted and permanently showing the volume warning overlay. This also prevents host app BGM/SE (audioplayers) from failing to resume after ad playback. - Fix: volume change detection now uses KVO on
AVAudioSession.outputVolume(public API) instead of the privateAVSystemController_SystemVolumeDidChangeNotification, which stopped firing reliably on iOS 16+. This ensuresonMuteStateChanged(false)is delivered promptly when the user raises the device volume. - Raise minimum native SDK dependency to 1.0.10 (iOS: AdMel-SDK ~> 1.0.10).
- Fix:
-
1.0.1624 Apr 2026Release notes
Open source →- Fix: infinite recursion crash in
setMuteBannerEnabled:(iOS). The method was callingself.muteBannerEnabled = enabledwhich in Objective-C invokes the setter itself. Fixed by assigning directly to the instance variable_muteBannerEnabled. - Raise minimum native SDK dependency to 1.0.9 (iOS: AdMel-SDK ~> 1.0.9).
- Fix: infinite recursion crash in
-
1.0.1524 Apr 2026Release notes
Open source →- Fix: crash on app startup caused by
startMonitoringfiringcheckMuteStatussynchronously during theinitializemethod channel handler. The initial check now runs on the next run loop iteration viadispatch_async(iOS), avoiding reentrantinvokeMethodcalls. - Raise minimum native SDK dependency to 1.0.8 (iOS: AdMel-SDK ~> 1.0.8).
- Fix: crash on app startup caused by
-
1.0.1424 Apr 2026Release notes
Open source →- Fix:
onMuteStateChangedcallback now fires even whenmuteBannerEnabledisfalseor SDK is paused. Previously, the callback was blocked by early returns in the banner control logic, causing apps that disabled the mute banner to never receive mute state change notifications. - Raise minimum native SDK dependency to 1.0.7.
- Fix:
-
1.0.1324 Apr 2026Release notes
Open source →- Fix: mute monitoring now starts at
initialize()instead ofshowAd(), soonMuteStateChangedfires andisMuted()returns accurate results before the first ad plays. - Fix:
isMuted()reads the current device volume directly instead of returning a cached value, eliminating false negatives before monitoring starts. - Raise minimum native SDK dependency to 1.0.6 (iOS: AdMel-SDK ~> 1.0.6, Android: admel-sdk:1.0.6).
- Fix: mute monitoring now starts at
-
1.0.1224 Apr 2026Release notes
Open source →- Fix: raise minimum native SDK dependency to 1.0.5 (iOS: AdMel-SDK ~> 1.0.5, Android: admel-sdk:1.0.5) to prevent build errors when using new APIs added in 1.0.11.
-
1.0.1124 Apr 2026Release notes
Open source →- Feature:
setMuteBannerEnabled(bool)— ミュートバナーの表示/非表示をアプリ側から制御可能に。falseに設定すると既存のミュートバナーも即時非表示。デフォルトtrue。 - Feature:
isMuted()— デバイスの現在のミュート状態(音量 30% 以下)を非同期で取得。 - Feature:
onMuteStateChangedコールバック — デバイスがミュート閾値を超えた/下回ったときにアプリへ通知。setAdEventListenersで登録可能。 - Fix: SDK が pause 中はミュートバナーを表示しないよう修正(iOS・Android 共通)。
- Update native SDK dependency to 1.0.5 (Android: admel-sdk 1.0.5, iOS: AdMel-SDK 1.0.5).
- Feature:
-
1.0.1022 Apr 2026Release notes
Open source →- Feature: initial refresh interval before the first ad plays.
The SDK now waits
initialRefreshIntervalseconds (default 30s, dev: 5s) aftershowAd()is called before fetching and playing the very first ad. The value is overridden by the server's/v1/initresponse (initialRefreshInterval/refreshIntervalfields), matching the Unity plugin behavior.- Android:
AdMelSDK.isFirstPlayflag +Handler.postDelayed - iOS:
AdMelSDK.isFirstPlayflag +dispatch_after
- Android:
- Feature: initial refresh interval before the first ad plays.
The SDK now waits
-
1.0.921 Apr 2026Release notes
Open source →- Update native SDK dependency to 1.0.3 (Android: admel-sdk 1.0.3, iOS: AdMel-SDK 1.0.3).
-
1.0.610 Mar 2026Release notes
Open source →- Fix: iOS linker error - add static_framework and -ObjC linker flag for static library xcframework
-
1.0.510 Mar 2026Release notes
Open source →- Fix: iOS use @import AdMelSDK module import for static library xcframework
-
1.0.410 Mar 2026Release notes
Open source →- Full API update: AdMelSdk, AdMelEnvironment, showAd(), setMediaId(), setUserId()
- Ad lifecycle events (onAdStarted, onAdStopped, onAdCompleted)
- Coin reward animation support
- Environment-based initialization (development/production)
- Native plugin sync for both iOS and Android
-
1.0.310 Mar 2026 -
1.0.210 Mar 2026 -
1.0.110 Mar 2026Release notes
Open source →- Initial public release
- Audio ad playback with VAST protocol support
- Banner ad display with customizable appearance
- Mute detection and visual banner fallback
- Auto-refresh for continuous ad rotation
- Playback controls (pause, resume, stop)
- Volume control
- iOS support via AdMel-SDK (CocoaPods)
- Android support via jp.admel:admel-sdk (Maven Central)