diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 6031b8c1d..c78597153 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -62,7 +62,9 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: - fetch-depth: 0 + fetch-depth: 0 + - name: Select Xcode version + run: sudo xcode-select -s '/Applications/Xcode_16.2.0.app/Contents/Developer' - name: "Install Flutter" run: ./.github/workflows/scripts/install-flutter.sh stable - name: "Install Tools" @@ -104,11 +106,13 @@ jobs: - name: "Flutter Analyze" run: | cd $GOOGLEMOBILEADS_PLUGIN_SCOPE_EXAMPLE + flutter clean + flutter pub get flutter analyze env: GOOGLEMOBILEADS_PLUGIN_SCOPE_EXAMPLE: ${{ matrix.REGEX }} - name: "Flutter Format" run: | - flutter pub global activate flutter_plugin_tools - flutter pub global run flutter_plugin_tools format + dart format --version + dart format samples/ --language-version latest ./.github/workflows/scripts/validate-formatting.sh diff --git a/.github/workflows/gma_mediation_applovin.yaml b/.github/workflows/gma_mediation_applovin.yaml index 81c2d0905..274bfc790 100644 --- a/.github/workflows/gma_mediation_applovin.yaml +++ b/.github/workflows/gma_mediation_applovin.yaml @@ -59,6 +59,8 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 + - name: Select Xcode version + run: sudo xcode-select -s '/Applications/Xcode_16.2.0.app/Contents/Developer' - name: "Install Flutter" run: ./.github/workflows/scripts/install-flutter.sh stable - name: "Install Tools" @@ -93,12 +95,3 @@ jobs: run: | cd packages/mediation/gma_mediation_applovin/ flutter analyze - - name: "Flutter Publish" - run: | - cd packages/mediation/gma_mediation_applovin/ - flutter pub publish --dry-run - - name: "Flutter Format" - run: | - flutter pub global activate flutter_plugin_tools - flutter pub global run flutter_plugin_tools format - ./.github/workflows/scripts/validate-formatting.sh diff --git a/.github/workflows/gma_mediation_chartboost.yaml b/.github/workflows/gma_mediation_chartboost.yaml new file mode 100644 index 000000000..4589ecf6b --- /dev/null +++ b/.github/workflows/gma_mediation_chartboost.yaml @@ -0,0 +1,44 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: gma_mediation_chartboost + +on: + pull_request: + paths: + - "packages/mediation/gma_mediation_chartboost/**" + - ".github/workflows/gma_mediation_chartboost.yaml" + - "packages/mediation/gma_mediation_chartboost/ios/**" + - "packages/mediation/gma_mediation_chartboost/android/**" + push: + branches: + - main + +jobs: + flutter: + runs-on: ubuntu-latest + if: github.event_name == 'pull_request' + timeout-minutes: 30 + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 + with: + fetch-depth: 0 + - name: "Install Flutter" + run: ./.github/workflows/scripts/install-flutter.sh stable + - name: "Install Tools" + run: ./.github/workflows/scripts/install-tools.sh + - name: "Flutter Analyze" + run: | + cd packages/mediation/gma_mediation_chartboost/ + flutter analyze diff --git a/.github/workflows/gma_mediation_dtexchange.yaml b/.github/workflows/gma_mediation_dtexchange.yaml index 18400ee51..b24c360ac 100644 --- a/.github/workflows/gma_mediation_dtexchange.yaml +++ b/.github/workflows/gma_mediation_dtexchange.yaml @@ -59,6 +59,8 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 + - name: Select Xcode version + run: sudo xcode-select -s '/Applications/Xcode_16.2.0.app/Contents/Developer' - name: "Install Flutter" run: ./.github/workflows/scripts/install-flutter.sh stable - name: "Install Tools" @@ -93,12 +95,3 @@ jobs: run: | cd packages/mediation/gma_mediation_dtexchange flutter analyze - - name: "Flutter Publish" - run: | - cd packages/mediation/gma_mediation_dtexchange - flutter pub publish --dry-run - - name: "Flutter Format" - run: | - flutter pub global activate flutter_plugin_tools - flutter pub global run flutter_plugin_tools format - ./.github/workflows/scripts/validate-formatting.sh diff --git a/.github/workflows/gma_mediation_inmobi.yaml b/.github/workflows/gma_mediation_inmobi.yaml index 825846822..944721f33 100644 --- a/.github/workflows/gma_mediation_inmobi.yaml +++ b/.github/workflows/gma_mediation_inmobi.yaml @@ -42,12 +42,3 @@ jobs: run: | cd packages/mediation/gma_mediation_inmobi flutter analyze - - name: "Flutter Publish" - run: | - cd packages/mediation/gma_mediation_inmobi - flutter pub publish --dry-run - - name: "Flutter Format" - run: | - flutter pub global activate flutter_plugin_tools - flutter pub global run flutter_plugin_tools format - ./.github/workflows/scripts/validate-formatting.sh diff --git a/.github/workflows/gma_mediation_ironsource.yaml b/.github/workflows/gma_mediation_ironsource.yaml index c01129b4a..5807d8cb8 100644 --- a/.github/workflows/gma_mediation_ironsource.yaml +++ b/.github/workflows/gma_mediation_ironsource.yaml @@ -54,10 +54,12 @@ jobs: steps: - uses: swift-actions/setup-swift@v2 with: - swift-version: "5.7.2" + swift-version: "6.0.0" - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 + - name: Select Xcode version + run: sudo xcode-select -s '/Applications/Xcode_16.2.0.app/Contents/Developer' - name: "Install Flutter" run: ./.github/workflows/scripts/install-flutter.sh stable - name: "Install Tools" @@ -92,12 +94,3 @@ jobs: run: | cd packages/mediation/gma_mediation_ironsource flutter analyze - - name: "Flutter Publish" - run: | - cd packages/mediation/gma_mediation_ironsource - flutter pub publish --dry-run - - name: "Flutter Format" - run: | - flutter pub global activate flutter_plugin_tools - flutter pub global run flutter_plugin_tools format - ./.github/workflows/scripts/validate-formatting.sh diff --git a/.github/workflows/gma_mediation_liftoffmonetize.yaml b/.github/workflows/gma_mediation_liftoffmonetize.yaml index 716988689..6a20ad0b1 100644 --- a/.github/workflows/gma_mediation_liftoffmonetize.yaml +++ b/.github/workflows/gma_mediation_liftoffmonetize.yaml @@ -59,6 +59,8 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 + - name: Select Xcode version + run: sudo xcode-select -s '/Applications/Xcode_16.2.0.app/Contents/Developer' - name: "Install Flutter" run: ./.github/workflows/scripts/install-flutter.sh stable - name: "Install Tools" @@ -94,12 +96,3 @@ jobs: run: | cd packages/mediation/gma_mediation_liftoffmonetize flutter analyze - - name: "Flutter Publish" - run: | - cd packages/mediation/gma_mediation_liftoffmonetize - flutter pub publish --dry-run - - name: "Flutter Format" - run: | - flutter pub global activate flutter_plugin_tools - flutter pub global run flutter_plugin_tools format - ./.github/workflows/scripts/validate-formatting.sh diff --git a/.github/workflows/gma_mediation_meta.yaml b/.github/workflows/gma_mediation_meta.yaml index d86ad6aec..ff7134bd3 100644 --- a/.github/workflows/gma_mediation_meta.yaml +++ b/.github/workflows/gma_mediation_meta.yaml @@ -42,12 +42,3 @@ jobs: run: | cd packages/mediation/gma_mediation_meta flutter analyze - - name: "Flutter Publish" - run: | - cd packages/mediation/gma_mediation_meta - flutter pub publish --dry-run - - name: "Flutter Format" - run: | - flutter pub global activate flutter_plugin_tools - flutter pub global run flutter_plugin_tools format - ./.github/workflows/scripts/validate-formatting.sh diff --git a/.github/workflows/gma_mediation_mintegral.yaml b/.github/workflows/gma_mediation_mintegral.yaml index 1a5a4b64e..bd9ff3e1d 100644 --- a/.github/workflows/gma_mediation_mintegral.yaml +++ b/.github/workflows/gma_mediation_mintegral.yaml @@ -42,12 +42,3 @@ jobs: run: | cd packages/mediation/gma_mediation_mintegral flutter analyze - - name: "Flutter Publish" - run: | - cd packages/mediation/gma_mediation_mintegral - flutter pub publish --dry-run - - name: "Flutter Format" - run: | - flutter pub global activate flutter_plugin_tools - flutter pub global run flutter_plugin_tools format - ./.github/workflows/scripts/validate-formatting.sh diff --git a/.github/workflows/gma_mediation_pangle.yaml b/.github/workflows/gma_mediation_pangle.yaml index f510a4d40..d4b573ef8 100644 --- a/.github/workflows/gma_mediation_pangle.yaml +++ b/.github/workflows/gma_mediation_pangle.yaml @@ -42,12 +42,3 @@ jobs: run: | cd packages/mediation/gma_mediation_pangle/ flutter analyze - - name: "Flutter Publish" - run: | - cd packages/mediation/gma_mediation_pangle/ - flutter pub publish --dry-run - - name: "Flutter Format" - run: | - flutter pub global activate flutter_plugin_tools - flutter pub global run flutter_plugin_tools format - ./.github/workflows/scripts/validate-formatting.sh diff --git a/.github/workflows/gma_mediation_unity.yaml b/.github/workflows/gma_mediation_unity.yaml index a8c378b43..e0fc3fffd 100644 --- a/.github/workflows/gma_mediation_unity.yaml +++ b/.github/workflows/gma_mediation_unity.yaml @@ -53,9 +53,14 @@ jobs: runs-on: macos-latest timeout-minutes: 40 steps: + - uses: swift-actions/setup-swift@v2 + with: + swift-version: "6.0.0" - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 + - name: Select Xcode version + run: sudo xcode-select -s '/Applications/Xcode_16.2.0.app/Contents/Developer' - name: "Install Flutter" run: ./.github/workflows/scripts/install-flutter.sh stable - name: "Install Tools" @@ -91,12 +96,3 @@ jobs: run: | cd packages/mediation/gma_mediation_unity/ flutter analyze - - name: "Flutter Publish" - run: | - cd packages/mediation/gma_mediation_unity/ - flutter pub publish --dry-run - - name: "Flutter Format" - run: | - flutter pub global activate flutter_plugin_tools - flutter pub global run flutter_plugin_tools format - ./.github/workflows/scripts/validate-formatting.sh diff --git a/.github/workflows/google_mobile_ads.yaml b/.github/workflows/google_mobile_ads.yaml index 459f76ee1..85ea28d9f 100644 --- a/.github/workflows/google_mobile_ads.yaml +++ b/.github/workflows/google_mobile_ads.yaml @@ -59,6 +59,8 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 + - name: Select Xcode version + run: sudo xcode-select -s '/Applications/Xcode_16.2.0.app/Contents/Developer' - name: "Install Flutter" run: ./.github/workflows/scripts/install-flutter.sh stable - name: "Install Tools" @@ -104,6 +106,5 @@ jobs: flutter pub publish --dry-run - name: "Flutter Format" run: | - flutter pub global activate flutter_plugin_tools - flutter pub global run flutter_plugin_tools format + dart format packages/google_mobile_ads/ ./.github/workflows/scripts/validate-formatting.sh diff --git a/.github/workflows/scripts/install-flutter.sh b/.github/workflows/scripts/install-flutter.sh index 38f4b8d3a..86677dd5f 100755 --- a/.github/workflows/scripts/install-flutter.sh +++ b/.github/workflows/scripts/install-flutter.sh @@ -14,5 +14,6 @@ # limitations under the License. BRANCH=$1 +git config --global core.autocrlf input git clone https://github.com/flutter/flutter.git --depth 1 -b $BRANCH _flutter echo "$GITHUB_WORKSPACE/_flutter/bin" >> $GITHUB_PATH diff --git a/packages/google_mobile_ads/CHANGELOG.md b/packages/google_mobile_ads/CHANGELOG.md index 352f4db70..699008229 100644 --- a/packages/google_mobile_ads/CHANGELOG.md +++ b/packages/google_mobile_ads/CHANGELOG.md @@ -1,5 +1,24 @@ -## Next Version +## 6.0.0 +* Updates minimum Flutter SDK to 3.27.0 +* Updates Dart SDK low bound to 3.6.0. +* Fixes AdMessageCodec deprecated API issue: https://github.com/googleads/googleads-mobile-flutter/issues/1242 +* Adds a new API (`isMounted`) to support recycling ad banners +* Updates GMA [Android](https://developers.google.com/admob/android/rel-notes) dependency to 24.1.0 +* Updates GMA [iOS](https://developers.google.com/admob/ios/rel-notes) dependency to 12.2.0 +* Uses latest UMP SDK: + * [Android](https://developers.google.com/admob/android/privacy/release-notes) UMP SDK version 3.2.0. + * [iOS](https://developers.google.com/admob/ios/privacy/download#release_notes) UMP SDK version 3.0.0. + +## 5.3.1 +* Fixes dart SDK low bound building issues: https://github.com/googleads/googleads-mobile-flutter/issues/1234 + +## 5.3.0 * Updated WebView Flutter Android dependency +* Adds support for the new Debug Geography enums for the UMP SDK: + * [Android](https://developers.google.com/admob/android/privacy/release-notes) UMP SDK version 3.1.0. + * [iOS](https://developers.google.com/admob/ios/privacy/download#release_notes) UMP SDK version 2.7.0. +* Updates GMA [iOS](https://developers.google.com/admob/ios/rel-notes) dependency to 11.13.0 +* Updates GMA [Android](https://developers.google.com/admob/android/rel-notes) dependency to 23.6.0 ## 5.2.0 * Removed use of rootViewController for iOS GMA SDK which solved issues like diff --git a/packages/google_mobile_ads/android/build.gradle b/packages/google_mobile_ads/android/build.gradle index 80801f48f..948e368f3 100644 --- a/packages/google_mobile_ads/android/build.gradle +++ b/packages/google_mobile_ads/android/build.gradle @@ -1,5 +1,5 @@ group 'io.flutter.plugins.googlemobileads' -version '1.0-SNAPSHOT' +version '6.0.0' buildscript { repositories { @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:8.0.1' + classpath 'com.android.tools.build:gradle:8.3.2' } } @@ -22,28 +22,28 @@ rootProject.allprojects { apply plugin: 'com.android.library' android { - compileSdkVersion 34 + compileSdk 35 if (project.android.hasProperty('namespace')) { namespace 'io.flutter.plugins.googlemobileads' } defaultConfig { - minSdkVersion 21 + minSdk 23 } lintOptions { disable 'InvalidPackage' } dependencies { - api 'com.google.android.gms:play-services-ads:23.4.0' - implementation 'com.google.android.ump:user-messaging-platform:3.0.0' + api 'com.google.android.gms:play-services-ads:24.1.0' + implementation 'com.google.android.ump:user-messaging-platform:3.2.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.lifecycle:lifecycle-process:2.6.2' implementation 'com.google.errorprone:error_prone_annotations:2.16' testImplementation 'junit:junit:4.13.2' - testImplementation 'org.hamcrest:hamcrest:2.2' - testImplementation 'org.mockito:mockito-inline:5.2.0' - testImplementation 'org.robolectric:robolectric:4.10.3' + testImplementation 'org.hamcrest:hamcrest:3.0' + testImplementation 'org.mockito:mockito-core:5.15.2' + testImplementation 'org.robolectric:robolectric:4.14.1' testImplementation 'androidx.test:core:1.5.0' } testOptions { diff --git a/packages/google_mobile_ads/android/gradle/wrapper/gradle-wrapper.properties b/packages/google_mobile_ads/android/gradle/wrapper/gradle-wrapper.properties index d72b5889f..9c034ab11 100644 --- a/packages/google_mobile_ads/android/gradle/wrapper/gradle-wrapper.properties +++ b/packages/google_mobile_ads/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Sat May 13 14:37:03 CEST 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/AdMessageCodec.java b/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/AdMessageCodec.java index 91dd267cc..65f370cf4 100644 --- a/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/AdMessageCodec.java +++ b/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/AdMessageCodec.java @@ -32,7 +32,9 @@ import io.flutter.plugins.googlemobileads.nativetemplates.FlutterNativeTemplateStyle; import io.flutter.plugins.googlemobileads.nativetemplates.FlutterNativeTemplateTextStyle; import io.flutter.plugins.googlemobileads.nativetemplates.FlutterNativeTemplateType; +import java.lang.reflect.InvocationTargetException; import java.io.ByteArrayOutputStream; +import java.lang.reflect.InvocationTargetException; import java.nio.ByteBuffer; import java.util.List; import java.util.Map; @@ -71,7 +73,7 @@ class AdMessageCodec extends StandardMessageCodec { @NonNull Context context; @NonNull final FlutterAdSize.AdSizeFactory adSizeFactory; - @SuppressWarnings("deprecation") + @SuppressWarnings("deprecation") // Keeping for compatibility @Nullable private MediationNetworkExtrasProvider mediationNetworkExtrasProvider; @@ -98,7 +100,7 @@ void setContext(@NonNull Context context) { this.context = context; } - @SuppressWarnings("deprecation") + @SuppressWarnings("deprecation") // Keeping for compatibility void setMediationNetworkExtrasProvider( @Nullable MediationNetworkExtrasProvider mediationNetworkExtrasProvider) { this.mediationNetworkExtrasProvider = mediationNetworkExtrasProvider; @@ -307,11 +309,16 @@ protected Object readValueOfType(byte type, ByteBuffer buffer) { try { assert className != null; Class cls = Class.forName(className); - FlutterMediationExtras flutterExtras = (FlutterMediationExtras) cls.newInstance(); + FlutterMediationExtras flutterExtras = (FlutterMediationExtras) cls.getDeclaredConstructor() + .newInstance(); flutterExtras.setMediationExtras(extras); return flutterExtras; } catch (ClassNotFoundException e) { Log.e("FlutterMediationExtras", "Class not found: " + className); + } catch (NoSuchMethodException e) { + Log.e("FlutterMediationExtras", "No such method found: " + className + ".getDeclaredConstructor()"); + } catch (InvocationTargetException e) { + Log.e("FlutterMediationExtras", "Invocation Target Exception for: " + className); } catch (IllegalAccessException e) { Log.e("FlutterMediationExtras", "Illegal Access to " + className); } catch (InstantiationException e) { diff --git a/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/Constants.java b/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/Constants.java index 40e3a0200..cd12d7170 100644 --- a/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/Constants.java +++ b/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/Constants.java @@ -17,7 +17,7 @@ /** Constants used in the plugin. */ public class Constants { /** Version request agent. Should be bumped alongside plugin versions. */ - public static final String REQUEST_AGENT_PREFIX_VERSIONED = "Flutter-GMA-5.2.0"; + public static final String REQUEST_AGENT_PREFIX_VERSIONED = "Flutter-GMA-6.0.0"; /** Prefix for news template */ public static final String REQUEST_AGENT_NEWS_TEMPLATE_PREFIX = "News"; diff --git a/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterAdManagerAdRequest.java b/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterAdManagerAdRequest.java index 68c86b63a..2ae5f99f8 100644 --- a/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterAdManagerAdRequest.java +++ b/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterAdManagerAdRequest.java @@ -76,7 +76,7 @@ FlutterAdManagerAdRequest build() { } } - @SuppressWarnings("deprecation") + @SuppressWarnings("deprecation") // Keeping for compatibility private FlutterAdManagerAdRequest( @Nullable List keywords, @Nullable String contentUrl, diff --git a/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterAdRequest.java b/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterAdRequest.java index 53ee98f91..e1c658776 100644 --- a/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterAdRequest.java +++ b/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterAdRequest.java @@ -37,7 +37,7 @@ class FlutterAdRequest { @Nullable private final Integer httpTimeoutMillis; @Nullable private final String mediationExtrasIdentifier; - @SuppressWarnings("deprecation") + @SuppressWarnings("deprecation") // Keeping for compatibility @Nullable private final MediationNetworkExtrasProvider mediationNetworkExtrasProvider; @@ -53,7 +53,7 @@ protected static class Builder { @Nullable private Integer httpTimeoutMillis; @Nullable private String mediationExtrasIdentifier; - @SuppressWarnings("deprecation") + @SuppressWarnings("deprecation") // Keeping for compatibility @Nullable private MediationNetworkExtrasProvider mediationNetworkExtrasProvider; @@ -105,7 +105,7 @@ Builder setMediationNetworkExtrasIdentifier(@Nullable String mediationExtrasIden } @CanIgnoreReturnValue - @SuppressWarnings("deprecation") + @SuppressWarnings("deprecation") // Keeping for compatibility Builder setMediationNetworkExtrasProvider( @Nullable MediationNetworkExtrasProvider mediationNetworkExtrasProvider) { this.mediationNetworkExtrasProvider = mediationNetworkExtrasProvider; @@ -154,7 +154,7 @@ protected String getMediationExtrasIdentifier() { return mediationExtrasIdentifier; } - @SuppressWarnings("deprecation") + @SuppressWarnings("deprecation") // Keeping for compatibility @Nullable protected MediationNetworkExtrasProvider getMediationNetworkExtrasProvider() { return mediationNetworkExtrasProvider; @@ -190,7 +190,7 @@ FlutterAdRequest build() { } } - @SuppressWarnings("deprecation") + @SuppressWarnings("deprecation") // Keeping for compatibility protected FlutterAdRequest( @Nullable List keywords, @Nullable String contentUrl, @@ -340,7 +340,8 @@ public boolean equals(Object o) { && Objects.equals(httpTimeoutMillis, request.httpTimeoutMillis) && Objects.equals(mediationExtrasIdentifier, request.mediationExtrasIdentifier) && Objects.equals(mediationNetworkExtrasProvider, request.mediationNetworkExtrasProvider) - && Objects.equals(adMobExtras, request.adMobExtras); + && Objects.equals(adMobExtras, request.adMobExtras) + && Objects.equals(mediationExtras, request.mediationExtras); } @Override diff --git a/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterMediationExtras.java b/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterMediationExtras.java index 08370e63e..21612988b 100644 --- a/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterMediationExtras.java +++ b/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterMediationExtras.java @@ -18,6 +18,7 @@ import android.util.Pair; import com.google.android.gms.ads.mediation.MediationExtrasReceiver; import java.util.Map; +import java.util.Objects; /** * Mediation Adapters that require extra parameters provide implementations of this interface to @@ -47,4 +48,21 @@ public abstract class FlutterMediationExtras { public void setMediationExtras(Map extras) { this.extras = extras; } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } else if (!(o instanceof FlutterMediationExtras)) { + return false; + } + + FlutterMediationExtras mediationExtras = (FlutterMediationExtras) o; + return Objects.equals(extras, mediationExtras.extras); + } + + @Override + public int hashCode() { + return Objects.hash(extras); + } } diff --git a/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterMobileAdsWrapper.java b/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterMobileAdsWrapper.java index 159e9294b..83f0f783d 100644 --- a/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterMobileAdsWrapper.java +++ b/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterMobileAdsWrapper.java @@ -84,9 +84,7 @@ public void openAdInspector(Context context, OnAdInspectorClosedListener listene /** Register the webView for monetization. */ public void registerWebView(int webViewId, FlutterEngine flutterEngine) { WebView webView = WebViewFlutterAndroidExternalApi.getWebView(flutterEngine, webViewId); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - Log.w(TAG, "MobileAds.registerWebView does not support API levels less than 21"); - } else if (webView == null) { + if (webView == null) { Log.w(TAG, "MobileAds.registerWebView unable to find webView with id: " + webViewId); } else { MobileAds.registerWebView(webView); diff --git a/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterRequestAgentProvider.java b/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterRequestAgentProvider.java index aa8fc75d9..1322df6d9 100644 --- a/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterRequestAgentProvider.java +++ b/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/FlutterRequestAgentProvider.java @@ -4,6 +4,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; +import android.os.Build; import android.os.Bundle; import androidx.annotation.Nullable; @@ -25,7 +26,7 @@ class FlutterRequestAgentProvider { private void processGameAndNewsTemplateVersions(Context context) { try { ApplicationInfo info; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.TIRAMISU) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { info = context .getApplicationContext() diff --git a/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/GoogleMobileAdsPlugin.java b/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/GoogleMobileAdsPlugin.java index 89cc8b589..91479ca77 100644 --- a/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/GoogleMobileAdsPlugin.java +++ b/packages/google_mobile_ads/android/src/main/java/io/flutter/plugins/googlemobileads/GoogleMobileAdsPlugin.java @@ -69,7 +69,7 @@ private static T requireNonNull(T obj) { @Nullable private UserMessagingPlatformManager userMessagingPlatformManager; private final Map nativeAdFactories = new HashMap<>(); - @SuppressWarnings("deprecation") + @SuppressWarnings("deprecation") // Keeping for compatibility @Nullable private MediationNetworkExtrasProvider mediationNetworkExtrasProvider; diff --git a/packages/google_mobile_ads/example/android/app/build.gradle b/packages/google_mobile_ads/example/android/app/build.gradle index fc0e073d4..c6fdf5d91 100644 --- a/packages/google_mobile_ads/example/android/app/build.gradle +++ b/packages/google_mobile_ads/example/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' @@ -21,11 +22,8 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - android { - compileSdkVersion 34 + compileSdk 35 namespace 'io.flutter.plugins.googlemobileadsexample' @@ -35,7 +33,7 @@ android { defaultConfig { applicationId "io.flutter.plugins.googlemobileadsexample" - minSdkVersion 21 + minSdkVersion 23 targetSdkVersion 34 versionCode flutterVersionCode.toInteger() versionName flutterVersionName @@ -52,8 +50,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaLanguageVersion.of(17) + targetCompatibility JavaLanguageVersion.of(17) } } @@ -62,7 +60,10 @@ flutter { } dependencies { - testImplementation 'junit:junit:4.12' + testImplementation 'junit:junit:4.13.2' + testImplementation 'org.robolectric:robolectric:4.14.1' + testImplementation 'org.mockito:mockito-core:5.15.2' + androidTestImplementation 'org.robolectric:robolectric:4.10.3' androidTestImplementation 'androidx.test:runner:1.2.0' androidTestImplementation 'androidx.test:rules:1.2.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' diff --git a/packages/google_mobile_ads/example/android/build.gradle b/packages/google_mobile_ads/example/android/build.gradle index c293bd821..bc157bd1a 100644 --- a/packages/google_mobile_ads/example/android/build.gradle +++ b/packages/google_mobile_ads/example/android/build.gradle @@ -1,14 +1,3 @@ -buildscript { - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:8.0.1' - } -} - allprojects { repositories { google() diff --git a/packages/google_mobile_ads/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/google_mobile_ads/example/android/gradle/wrapper/gradle-wrapper.properties index 5bab02b5d..4df841cd0 100644 --- a/packages/google_mobile_ads/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/packages/google_mobile_ads/example/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Sat May 13 14:40:00 CEST 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/packages/google_mobile_ads/example/android/settings.gradle b/packages/google_mobile_ads/example/android/settings.gradle index 115da6cb4..c3aa23a89 100644 --- a/packages/google_mobile_ads/example/android/settings.gradle +++ b/packages/google_mobile_ads/example/android/settings.gradle @@ -1,15 +1,25 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() -def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") -def plugins = new Properties() -def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') -if (pluginsFile.exists()) { - pluginsFile.withInputStream { stream -> plugins.load(stream) } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } } -plugins.each { name, path -> - def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() - include ":$name" - project(":$name").projectDir = pluginDirectory +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.3.2" apply false + id "org.jetbrains.kotlin.android" version "1.8.22" apply false } + +include ":app" \ No newline at end of file diff --git a/packages/google_mobile_ads/example/ios/RunnerTests/FLTGoogleMobileAdsPluginMethodCallsTest.m b/packages/google_mobile_ads/example/ios/RunnerTests/FLTGoogleMobileAdsPluginMethodCallsTest.m index a4164b0ce..3f429c90b 100644 --- a/packages/google_mobile_ads/example/ios/RunnerTests/FLTGoogleMobileAdsPluginMethodCallsTest.m +++ b/packages/google_mobile_ads/example/ios/RunnerTests/FLTGoogleMobileAdsPluginMethodCallsTest.m @@ -263,6 +263,11 @@ - (void)testSetAppMuted { XCTAssertTrue(resultInvoked); XCTAssertNil(returnedResult); + NSTimeInterval timeout = 5.0; + NSDate *startTime = [NSDate date]; + while (!GADMobileAds.sharedInstance.applicationMuted && [[NSDate date] timeIntervalSinceDate:startTime] < timeout) { + [NSThread sleepForTimeInterval:0.1]; + } XCTAssertTrue(GADMobileAds.sharedInstance.applicationMuted); methodCall = @@ -279,6 +284,10 @@ - (void)testSetAppMuted { XCTAssertTrue(resultInvoked); XCTAssertNil(returnedResult); + startTime = [NSDate date]; + while (GADMobileAds.sharedInstance.applicationMuted && [[NSDate date] timeIntervalSinceDate:startTime] < timeout) { + [NSThread sleepForTimeInterval:0.1]; + } XCTAssertFalse(GADMobileAds.sharedInstance.applicationMuted); } diff --git a/packages/google_mobile_ads/example/ios/RunnerTests/FLTUserMessagingPlatformManagerTest.m b/packages/google_mobile_ads/example/ios/RunnerTests/FLTUserMessagingPlatformManagerTest.m index d05146a23..946460bac 100644 --- a/packages/google_mobile_ads/example/ios/RunnerTests/FLTUserMessagingPlatformManagerTest.m +++ b/packages/google_mobile_ads/example/ios/RunnerTests/FLTUserMessagingPlatformManagerTest.m @@ -216,7 +216,7 @@ - (void)testLoadAndShowConsentFormIfRequired_success { loadAndPresentIfRequiredFromViewController:[OCMArg any] completionHandler:[OCMArg any]]) .andDo(^(NSInvocation *invocation) { - void (^completionHandler)(NSError *loadError); + __unsafe_unretained void (^completionHandler)(NSError *loadError); [invocation getArgument:&completionHandler atIndex:3]; completionHandler(nil); }); @@ -243,7 +243,7 @@ - (void)testLoadAndShowConsentFormIfRequired_error { loadAndPresentIfRequiredFromViewController:[OCMArg any] completionHandler:[OCMArg any]]) .andDo(^(NSInvocation *invocation) { - void (^completionHandler)(NSError *loadError); + __unsafe_unretained void (^completionHandler)(NSError *loadError); [invocation getArgument:&completionHandler atIndex:3]; completionHandler(error); }); @@ -321,7 +321,7 @@ - (void)testShowPrivacyOptionsForm_success { presentPrivacyOptionsFormFromViewController:[OCMArg any] completionHandler:[OCMArg any]]) .andDo(^(NSInvocation *invocation) { - void (^completionHandler)(NSError *loadError); + __unsafe_unretained void (^completionHandler)(NSError *loadError); [invocation getArgument:&completionHandler atIndex:3]; completionHandler(nil); }); @@ -347,7 +347,7 @@ - (void)testShowPrivacyOptionsForm_error { presentPrivacyOptionsFormFromViewController:[OCMArg any] completionHandler:[OCMArg any]]) .andDo(^(NSInvocation *invocation) { - void (^completionHandler)(NSError *loadError); + __unsafe_unretained void (^completionHandler)(NSError *loadError); [invocation getArgument:&completionHandler atIndex:3]; completionHandler(error); }); diff --git a/packages/google_mobile_ads/example/ios/RunnerTests/FLTUserMessagingPlatformReaderWriterTest.m b/packages/google_mobile_ads/example/ios/RunnerTests/FLTUserMessagingPlatformReaderWriterTest.m index 721acf207..351133c7a 100644 --- a/packages/google_mobile_ads/example/ios/RunnerTests/FLTUserMessagingPlatformReaderWriterTest.m +++ b/packages/google_mobile_ads/example/ios/RunnerTests/FLTUserMessagingPlatformReaderWriterTest.m @@ -69,7 +69,7 @@ - (void)testConsentDebugSettings_default { - (void)testConsentDebugSettings_geographyTestDeviceIdentifiers { UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init]; - debugSettings.geography = UMPDebugGeographyNotEEA; + debugSettings.geography = UMPDebugGeographyOther; debugSettings.testDeviceIdentifiers = @[ @"id-1", @"id-2" ]; NSData *encodedMessage = [messageCodec encode:debugSettings]; diff --git a/packages/google_mobile_ads/example/pubspec.yaml b/packages/google_mobile_ads/example/pubspec.yaml index 0ef326d6f..0c3fcf18e 100644 --- a/packages/google_mobile_ads/example/pubspec.yaml +++ b/packages/google_mobile_ads/example/pubspec.yaml @@ -13,15 +13,17 @@ # limitations under the License. name: google_mobile_ads_example +version: 1.0.0 description: Demonstrates how to use the google mobile ads plugin. +publish_to: none dependencies: flutter: sdk: flutter google_mobile_ads: path: ../ - webview_flutter_android: ^4.0.0 - webview_flutter: ^4.0.5 + webview_flutter_android: ^4.3.1 + webview_flutter: ^4.10.0 dev_dependencies: pedantic: ^1.11.0 @@ -32,4 +34,4 @@ flutter: uses-material-design: true environment: - sdk: ">=2.12.0 <3.0.0" + sdk: ">=3.6.0 <4.0.0" diff --git a/packages/google_mobile_ads/ios/Classes/FLTConstants.h b/packages/google_mobile_ads/ios/Classes/FLTConstants.h index 5976948c2..c72a0c98d 100644 --- a/packages/google_mobile_ads/ios/Classes/FLTConstants.h +++ b/packages/google_mobile_ads/ios/Classes/FLTConstants.h @@ -13,4 +13,4 @@ // limitations under the License. /** Versioned request agent string. */ -#define FLT_REQUEST_AGENT_VERSIONED @"Flutter-GMA-5.2.0" +#define FLT_REQUEST_AGENT_VERSIONED @"Flutter-GMA-6.0.0" diff --git a/packages/google_mobile_ads/ios/google_mobile_ads.podspec b/packages/google_mobile_ads/ios/google_mobile_ads.podspec index 0913c0168..cb6ecc020 100644 --- a/packages/google_mobile_ads/ios/google_mobile_ads.podspec +++ b/packages/google_mobile_ads/ios/google_mobile_ads.podspec @@ -3,7 +3,7 @@ # Pod::Spec.new do |s| s.name = 'google_mobile_ads' - s.version = '5.2.0' + s.version = '6.0.0' s.summary = 'Google Mobile Ads plugin for Flutter.' s.description = <<-DESC Google Mobile Ads plugin for Flutter. @@ -15,7 +15,7 @@ Google Mobile Ads plugin for Flutter. s.source_files = 'Classes/**/*.{h,m}' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'Google-Mobile-Ads-SDK','~> 11.10.0' + s.dependency 'Google-Mobile-Ads-SDK','~> 12.2.0' s.dependency 'webview_flutter_wkwebview' s.ios.deployment_target = '12.0' s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS' => 'armv7 arm64 x86_64' } diff --git a/packages/google_mobile_ads/lib/src/ad_containers.dart b/packages/google_mobile_ads/lib/src/ad_containers.dart index 83a038b7f..5303fc646 100644 --- a/packages/google_mobile_ads/lib/src/ad_containers.dart +++ b/packages/google_mobile_ads/lib/src/ad_containers.dart @@ -899,6 +899,16 @@ class BannerAd extends AdWithView { Future getPlatformAdSize() async { return await instanceManager.getAdSize(this); } + + /// Returns true if the ad Id is already mounted in a WidgetAd managed + /// by the instanceManager. + bool get isMounted { + final int? id = instanceManager.adIdFor(this); + if (id != null) { + return instanceManager.isWidgetAdIdMounted(id); + } + return false; + } } /// An 'AdManagerBannerAd' that has fluid ad size. diff --git a/packages/google_mobile_ads/lib/src/ad_instance_manager.dart b/packages/google_mobile_ads/lib/src/ad_instance_manager.dart index 9b93ad3e6..b5061bbea 100644 --- a/packages/google_mobile_ads/lib/src/ad_instance_manager.dart +++ b/packages/google_mobile_ads/lib/src/ad_instance_manager.dart @@ -16,12 +16,15 @@ // ignore_for_file: deprecated_member_use_from_same_package +// ignore_for_file: deprecated_member_use + import 'dart:async'; import 'dart:collection'; import 'dart:io'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:google_mobile_ads/src/ad_inspector_containers.dart'; import 'package:google_mobile_ads/src/ad_listeners.dart'; @@ -988,10 +991,10 @@ class AdMessageCodec extends StandardMessageCodec { writeValue(buffer, value.size); } else if (value is Color) { buffer.putUint8(_valueColor); - writeValue(buffer, value.alpha); - writeValue(buffer, value.red); - writeValue(buffer, value.green); - writeValue(buffer, value.blue); + writeValue(buffer, (value.a * 255).toInt()); + writeValue(buffer, (value.r * 255).toInt()); + writeValue(buffer, (value.g * 255).toInt()); + writeValue(buffer, (value.b * 255).toInt()); } else if (value is NativeTemplateFontStyle) { buffer.putUint8(_valueNativeTemplateFontStyle); writeValue(buffer, value.index); diff --git a/packages/google_mobile_ads/lib/src/nativetemplates/native_template_style.dart b/packages/google_mobile_ads/lib/src/nativetemplates/native_template_style.dart index 71947dbfc..0e800c450 100644 --- a/packages/google_mobile_ads/lib/src/nativetemplates/native_template_style.dart +++ b/packages/google_mobile_ads/lib/src/nativetemplates/native_template_style.dart @@ -68,7 +68,7 @@ class NativeTemplateStyle { primaryTextStyle == other.primaryTextStyle && secondaryTextStyle == other.secondaryTextStyle && tertiaryTextStyle == other.tertiaryTextStyle && - mainBackgroundColor?.value == other.mainBackgroundColor?.value && + mainBackgroundColor == other.mainBackgroundColor && cornerRadius == other.cornerRadius; } diff --git a/packages/google_mobile_ads/lib/src/nativetemplates/native_template_text_style.dart b/packages/google_mobile_ads/lib/src/nativetemplates/native_template_text_style.dart index d5d170fbd..f2c7b6f22 100644 --- a/packages/google_mobile_ads/lib/src/nativetemplates/native_template_text_style.dart +++ b/packages/google_mobile_ads/lib/src/nativetemplates/native_template_text_style.dart @@ -40,8 +40,8 @@ class NativeTemplateTextStyle { @override bool operator ==(Object other) { return other is NativeTemplateTextStyle && - textColor?.value == other.textColor?.value && - backgroundColor?.value == other.backgroundColor?.value && + textColor == other.textColor && + backgroundColor == other.backgroundColor && style == other.style && size == other.size; } diff --git a/packages/google_mobile_ads/lib/src/ump/consent_request_parameters.dart b/packages/google_mobile_ads/lib/src/ump/consent_request_parameters.dart index 7873c0abc..7419d211a 100644 --- a/packages/google_mobile_ads/lib/src/ump/consent_request_parameters.dart +++ b/packages/google_mobile_ads/lib/src/ump/consent_request_parameters.dart @@ -73,5 +73,12 @@ enum DebugGeography { debugGeographyEea, /// Geography appears as not in EEA for debug devices. - debugGeographyNotEea + @Deprecated('Use DebugGeography.debugGeographyOther') + debugGeographyNotEea, + + /// Geography appears as in a regulated US State for debug devices. + debugGeographyRegulatedUsState, + + /// Geography appears as in a region with no regulation in force. + debugGeographyOther } diff --git a/packages/google_mobile_ads/pubspec.yaml b/packages/google_mobile_ads/pubspec.yaml index 90149a169..f801939ff 100644 --- a/packages/google_mobile_ads/pubspec.yaml +++ b/packages/google_mobile_ads/pubspec.yaml @@ -13,7 +13,7 @@ # limitations under the License. name: google_mobile_ads -version: 5.2.0 +version: 6.0.0 description: Flutter plugin for Google Mobile Ads, supporting banner, interstitial (full-screen), rewarded and native ads repository: https://github.com/googleads/googleads-mobile-flutter/tree/main/packages/google_mobile_ads @@ -31,22 +31,22 @@ dependencies: meta: ^1.10.0 flutter: sdk: flutter - webview_flutter_android: ^4.0.0 - webview_flutter_wkwebview: ^3.12.0 - webview_flutter: ^4.7.0 + webview_flutter_android: ^4.3.4 + webview_flutter_wkwebview: ^3.18.4 + webview_flutter: ^4.10.0 dev_dependencies: - pedantic: ^1.11.0 # e2e: ^0.7.0 flutter_driver: sdk: flutter - mockito: ^5.0.0-0 - build_runner: ^2.1.10 + mockito: ^5.4.5 + build_runner: ^2.4.15 + flutter_lints: ^5.0.0 flutter_test: sdk: flutter webview_flutter_platform_interface: ^2.10.0 environment: - sdk: ">=2.17.0 <4.0.0" - flutter: ">=3.7.0" + sdk: ">=3.6.0 <4.0.0" + flutter: ">=3.27.0" diff --git a/packages/google_mobile_ads/test/banner_ad_test.dart b/packages/google_mobile_ads/test/banner_ad_test.dart index 06d364395..74aa6bbf3 100644 --- a/packages/google_mobile_ads/test/banner_ad_test.dart +++ b/packages/google_mobile_ads/test/banner_ad_test.dart @@ -321,5 +321,28 @@ void main() { expect(instanceManager.adFor(0), isNull); expect(instanceManager.adIdFor(banner), isNull); }); + + test('isMounted returns correct value', () { + final BannerAd banner = BannerAd( + adUnitId: 'test-ad-unit', + size: AdSize.banner, + listener: BannerAdListener(), + request: AdRequest(), + ); + + expect(instanceManager.adIdFor(banner), isNull); + expect(banner.isMounted, isFalse); + + banner.load(); + final int? adId = instanceManager.adIdFor(banner); + expect(adId, isNotNull); + expect(banner.isMounted, isFalse); + + instanceManager.mountWidgetAdId(adId!); + expect(banner.isMounted, isTrue); + + instanceManager.unmountWidgetAdId(adId); + expect(banner.isMounted, isFalse); + }); }); } diff --git a/packages/google_mobile_ads/test/fluid_ad_test.dart b/packages/google_mobile_ads/test/fluid_ad_test.dart index 22727b162..765d77675 100644 --- a/packages/google_mobile_ads/test/fluid_ad_test.dart +++ b/packages/google_mobile_ads/test/fluid_ad_test.dart @@ -19,7 +19,6 @@ import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart'; import 'package:google_mobile_ads/src/ad_instance_manager.dart'; -import 'package:pedantic/pedantic.dart'; import 'test_util.dart'; // ignore_for_file: deprecated_member_use_from_same_package diff --git a/packages/google_mobile_ads/test/mobile_ads_test.dart b/packages/google_mobile_ads/test/mobile_ads_test.dart index 9addf96b7..a53aaf609 100644 --- a/packages/google_mobile_ads/test/mobile_ads_test.dart +++ b/packages/google_mobile_ads/test/mobile_ads_test.dart @@ -516,7 +516,7 @@ void main() { test('encode/decode non-empty native text style', () { final textStyle = NativeTemplateTextStyle( - textColor: Colors.red, + textColor: Colors.red.shade900, backgroundColor: Colors.blue.withAlpha(50), style: NativeTemplateFontStyle.normal, size: 20, @@ -540,16 +540,16 @@ void main() { templateType: TemplateType.medium, callToActionTextStyle: NativeTemplateTextStyle(), primaryTextStyle: NativeTemplateTextStyle( - textColor: Colors.blue, + textColor: Colors.blue.shade900, ), secondaryTextStyle: NativeTemplateTextStyle( - backgroundColor: Colors.green, + backgroundColor: Colors.green.shade900, style: NativeTemplateFontStyle.italic, ), tertiaryTextStyle: NativeTemplateTextStyle( size: 15, ), - mainBackgroundColor: Colors.cyan, + mainBackgroundColor: Colors.cyan.shade900, cornerRadius: 12); final byteData = codec.encodeMessage(templateStyle); final result = codec.decodeMessage(byteData); @@ -562,10 +562,10 @@ void main() { templateType: TemplateType.medium, callToActionTextStyle: NativeTemplateTextStyle(), primaryTextStyle: NativeTemplateTextStyle( - textColor: Colors.blue, + textColor: Colors.blue.shade900, ), secondaryTextStyle: NativeTemplateTextStyle( - backgroundColor: Colors.green, + backgroundColor: Colors.green.shade900, style: NativeTemplateFontStyle.italic, ), tertiaryTextStyle: NativeTemplateTextStyle( diff --git a/packages/mediation/gma_mediation_applovin/CHANGELOG.md b/packages/mediation/gma_mediation_applovin/CHANGELOG.md index 2a725add8..c44fa90fe 100644 --- a/packages/mediation/gma_mediation_applovin/CHANGELOG.md +++ b/packages/mediation/gma_mediation_applovin/CHANGELOG.md @@ -1,21 +1,33 @@ ## AppLovin Flutter Mediation Adapter Changelog -#### Next Version -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.2.0. +#### Version 2.2.0 +- Supports [AppLovin Android adapter version 13.2.0.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/applovin/CHANGELOG.md#version-13200). +- Supports [AppLovin iOS adapter version 13.2.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/AppLovin/CHANGELOG.md#version-13200). +* Built and tested with the Google Mobile Ads Flutter Plugin version 6.0.0. -#### 1.2.0 -* Verified compatibility with AppLovin Android adapter version 12.6.1.0. -* Verified compatibility with AppLovin iOS adapter version 12.6.1.0. +#### Version 2.1.0 +- Supports [AppLovin Android adapter version 13.1.0.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/applovin/CHANGELOG.md#version-13100). +- Supports [AppLovin iOS adapter version 13.1.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/AppLovin/CHANGELOG.md#version-13100). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. + +#### Version 2.0.0 +- Supports [AppLovin Android adapter version 13.0.1.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/applovin/CHANGELOG.md#version-13010). +- Supports [AppLovin iOS adapter version 13.0.1.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/AppLovin/CHANGELOG.md#version-13010). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. + +#### Version 1.2.0 +- Supports [AppLovin Android adapter version 12.6.1.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/applovin/CHANGELOG.md#version-12610). +- Supports [AppLovin iOS adapter version 12.6.1.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/AppLovin/CHANGELOG.md#version-12610). * Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. -#### 1.1.0 -* API for the GmaMediationApplovin is no longer static. -* Verified compatibility with AppLovin Android adapter version 12.4.3.0. -* Verified compatibility with AppLovin iOS adapter version 12.4.2.0. +#### Version 1.1.0 +- API for the GmaMediationApplovin is no longer static. +- Supports [AppLovin Android adapter version 12.4.3.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/applovin/CHANGELOG.md#version-12430). +- Supports [AppLovin iOS adapter version 12.4.2.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/AppLovin/CHANGELOG.md#version-12420). * Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. -#### 1.0.0 +#### Version 1.0.0 * Initial release. -* Verified compatibility with AppLovin Android adapter version 12.3.0.0 -* Verified compatibility with AppLovin iOS adapter version 12.2.1.0 -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.0.0. \ No newline at end of file +- Supports [AppLovin Android adapter version 12.3.0.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/applovin/CHANGELOG.md#version-12300). +- Supports [AppLovin iOS adapter version 12.2.1.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/AppLovin/CHANGELOG.md#version-12210). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.0.0. diff --git a/packages/mediation/gma_mediation_applovin/android/build.gradle b/packages/mediation/gma_mediation_applovin/android/build.gradle index 1a94c641e..8e49d55c0 100644 --- a/packages/mediation/gma_mediation_applovin/android/build.gradle +++ b/packages/mediation/gma_mediation_applovin/android/build.gradle @@ -1,5 +1,5 @@ group 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_applovin' -version '1.0-SNAPSHOT' +version = "2.2.1" buildscript { ext.kotlin_version = '2.0.21' @@ -24,6 +24,10 @@ allprojects { apply plugin: 'com.android.library' apply plugin: 'kotlin-android' +ext { + stringVersion = "13.2.0.1" +} + android { if (project.android.hasProperty("namespace")) { namespace 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_applovin' @@ -46,13 +50,13 @@ android { } defaultConfig { - minSdkVersion 21 + minSdkVersion 23 } dependencies { - implementation 'com.applovin:applovin-sdk:12.6.1' - implementation 'com.google.ads.mediation:applovin:12.6.1.0' - implementation 'com.google.android.gms:play-services-ads:23.3.0' + implementation 'com.applovin:applovin-sdk:13.1.0' + implementation "com.google.ads.mediation:applovin:$stringVersion" + implementation 'com.google.android.gms:play-services-ads:23.6.0' implementation 'androidx.core:core-ktx:1.8.0' testImplementation 'junit:junit:4.13.2' testImplementation 'androidx.test:core:1.5.0' diff --git a/packages/mediation/gma_mediation_applovin/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_applovin/AppLovinSDKApi.g.kt b/packages/mediation/gma_mediation_applovin/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_applovin/AppLovinSDKApi.g.kt index 2cfb75971..638e9197f 100644 --- a/packages/mediation/gma_mediation_applovin/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_applovin/AppLovinSDKApi.g.kt +++ b/packages/mediation/gma_mediation_applovin/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_applovin/AppLovinSDKApi.g.kt @@ -1,5 +1,6 @@ -// Autogenerated from Pigeon (v17.1.2), do not edit directly. +// Autogenerated from Pigeon (v22.7.2), do not edit directly. // See also: https://pub.dev/packages/pigeon +@file:Suppress("UNCHECKED_CAST", "ArrayInDataClass") package io.flutter.plugins.googlemobileads.mediation.gma_mediation_applovin @@ -16,68 +17,84 @@ private fun wrapResult(result: Any?): List { } private fun wrapError(exception: Throwable): List { - if (exception is FlutterError) { - return listOf( - exception.code, - exception.message, - exception.details - ) + return if (exception is FlutterError) { + listOf(exception.code, exception.message, exception.details) } else { - return listOf( + listOf( exception.javaClass.simpleName, exception.toString(), - "Cause: " + exception.cause + ", Stacktrace: " + Log.getStackTraceString(exception) + "Cause: " + exception.cause + ", Stacktrace: " + Log.getStackTraceString(exception), ) } } /** * Error class for passing custom error details to Flutter via a thrown PlatformException. + * * @property code The error code. * @property message The error message. * @property details The error details. Must be a datatype supported by the api codec. */ -class FlutterError ( +class FlutterError( val code: String, override val message: String? = null, - val details: Any? = null + val details: Any? = null, ) : Throwable() + +private open class AppLovinSDKApiPigeonCodec : StandardMessageCodec() { + override fun readValueOfType(type: Byte, buffer: ByteBuffer): Any? { + return super.readValueOfType(type, buffer) + } + + override fun writeValue(stream: ByteArrayOutputStream, value: Any?) { + super.writeValue(stream, value) + } +} + /** - * The generated classes set the channels to call the methods in the corresponding kotlin AppLovinSDKApi interface and swift AppLovinSDKApi protocol from the dart layer. + * The generated classes set the channels to call the methods in the corresponding kotlin + * AppLovinSDKApi interface and swift AppLovinSDKApi protocol from the dart layer. * * Generated interface from Pigeon that represents a handler of messages from Flutter. */ interface AppLovinSDKApi { /** Used to configure GDPR consent on the Android or iOS AppLovin SDK */ fun setHasUserConsent(hasUserConsent: Boolean) - /** Used to acknowledge that the user is in an age-restricted category on the Android or iOS AppLovin SDK */ - fun setIsAgeRestrictedUser(isAgeRestrictedUser: Boolean) + /** Used to opt out of the sale of personal information in AppLovin SDK. */ fun setDoNotSell(doNotSell: Boolean) - /** Used to initialize the Android or iOS AppLovin SDK. Can be called anytime before the adapter initialization to let AppLovin track events as soon as possible. */ - fun initializeSdk(sdkKey: String) companion object { /** The codec used by AppLovinSDKApi. */ - val codec: MessageCodec by lazy { - StandardMessageCodec() - } + val codec: MessageCodec by lazy { AppLovinSDKApiPigeonCodec() } + /** Sets up an instance of `AppLovinSDKApi` to handle messages through the `binaryMessenger`. */ - @Suppress("UNCHECKED_CAST") - fun setUp(binaryMessenger: BinaryMessenger, api: AppLovinSDKApi?) { + @JvmOverloads + fun setUp( + binaryMessenger: BinaryMessenger, + api: AppLovinSDKApi?, + messageChannelSuffix: String = "", + ) { + val separatedMessageChannelSuffix = + if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else "" run { - val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.setHasUserConsent", codec) + val channel = + BasicMessageChannel( + binaryMessenger, + "dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.setHasUserConsent$separatedMessageChannelSuffix", + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val hasUserConsentArg = args[0] as Boolean - var wrapped: List - try { - api.setHasUserConsent(hasUserConsentArg) - wrapped = listOf(null) - } catch (exception: Throwable) { - wrapped = wrapError(exception) - } + val wrapped: List = + try { + api.setHasUserConsent(hasUserConsentArg) + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } reply.reply(wrapped) } } else { @@ -85,56 +102,23 @@ interface AppLovinSDKApi { } } run { - val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.setIsAgeRestrictedUser", codec) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val isAgeRestrictedUserArg = args[0] as Boolean - var wrapped: List - try { - api.setIsAgeRestrictedUser(isAgeRestrictedUserArg) - wrapped = listOf(null) - } catch (exception: Throwable) { - wrapped = wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } - } - run { - val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.setDoNotSell", codec) + val channel = + BasicMessageChannel( + binaryMessenger, + "dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.setDoNotSell$separatedMessageChannelSuffix", + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val doNotSellArg = args[0] as Boolean - var wrapped: List - try { - api.setDoNotSell(doNotSellArg) - wrapped = listOf(null) - } catch (exception: Throwable) { - wrapped = wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } - } - run { - val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.initializeSdk", codec) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val sdkKeyArg = args[0] as String - var wrapped: List - try { - api.initializeSdk(sdkKeyArg) - wrapped = listOf(null) - } catch (exception: Throwable) { - wrapped = wrapError(exception) - } + val wrapped: List = + try { + api.setDoNotSell(doNotSellArg) + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } reply.reply(wrapped) } } else { diff --git a/packages/mediation/gma_mediation_applovin/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_applovin/GmaMediationApplovinPlugin.kt b/packages/mediation/gma_mediation_applovin/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_applovin/GmaMediationApplovinPlugin.kt index 754e5f80d..c7b3701ff 100644 --- a/packages/mediation/gma_mediation_applovin/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_applovin/GmaMediationApplovinPlugin.kt +++ b/packages/mediation/gma_mediation_applovin/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_applovin/GmaMediationApplovinPlugin.kt @@ -16,13 +16,12 @@ package io.flutter.plugins.googlemobileads.mediation.gma_mediation_applovin import android.content.Context import com.applovin.sdk.AppLovinPrivacySettings -import com.applovin.sdk.AppLovinSdk import io.flutter.embedding.engine.plugins.FlutterPlugin import io.flutter.embedding.engine.plugins.activity.ActivityAware import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding -/** Links the Android dependency of the AppLovin Adapter and calls the AppLovin SDK APIs. */ -class GmaMediationApplovinPlugin: FlutterPlugin, ActivityAware, AppLovinSDKApi { +/** Links the Android dependency of the AppLovin Adapter and calls the AppLovin SDK APIs. */ +class GmaMediationApplovinPlugin : FlutterPlugin, ActivityAware, AppLovinSDKApi { private lateinit var context: Context override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { @@ -34,22 +33,14 @@ class GmaMediationApplovinPlugin: FlutterPlugin, ActivityAware, AppLovinSDKApi { AppLovinSDKApi.setUp(binding.binaryMessenger, null) } - override fun setHasUserConsent(hasUserConsent: Boolean){ + override fun setHasUserConsent(hasUserConsent: Boolean) { AppLovinPrivacySettings.setHasUserConsent(hasUserConsent, context) } - override fun setIsAgeRestrictedUser(isAgeRestrictedUser: Boolean){ - AppLovinPrivacySettings.setIsAgeRestrictedUser(isAgeRestrictedUser, context) - } - override fun setDoNotSell(doNotSell: Boolean) { AppLovinPrivacySettings.setDoNotSell(doNotSell, context) } - override fun initializeSdk(sdkKey: String) { - AppLovinSdk.getInstance(sdkKey, null, context).initializeSdk() - } - override fun onDetachedFromActivity() {} override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) {} diff --git a/packages/mediation/gma_mediation_applovin/android/src/test/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_applovin/GmaMediationApplovinPluginTest.kt b/packages/mediation/gma_mediation_applovin/android/src/test/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_applovin/GmaMediationApplovinPluginTest.kt index a07061ed5..6a91d9d9b 100644 --- a/packages/mediation/gma_mediation_applovin/android/src/test/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_applovin/GmaMediationApplovinPluginTest.kt +++ b/packages/mediation/gma_mediation_applovin/android/src/test/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_applovin/GmaMediationApplovinPluginTest.kt @@ -18,28 +18,25 @@ import android.content.Context import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.applovin.sdk.AppLovinPrivacySettings -import com.applovin.sdk.AppLovinSdk -import com.applovin.sdk.AppLovinSdk.getInstance import io.flutter.embedding.engine.plugins.FlutterPlugin import io.flutter.plugin.common.BinaryMessenger import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito.mockStatic -import org.mockito.kotlin.any import org.mockito.kotlin.doReturn import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.verify -import org.mockito.kotlin.whenever @RunWith(AndroidJUnit4::class) internal class GmaMediationApplovinPluginTest { private val context = ApplicationProvider.getApplicationContext() private val mockBinaryMessenger = mock() - private val mockFlutterPluginBinding = mock { - on { applicationContext } doReturn context - on { binaryMessenger } doReturn mockBinaryMessenger - } + private val mockFlutterPluginBinding = + mock { + on { applicationContext } doReturn context + on { binaryMessenger } doReturn mockBinaryMessenger + } @Test fun setHasUserConsent_withTrueValue_invokesSetHasUserConsent() { @@ -50,27 +47,7 @@ internal class GmaMediationApplovinPluginTest { plugin.setHasUserConsent(true) mockedAppLovinPrivacySettings.verify { - AppLovinPrivacySettings.setHasUserConsent( - eq(true), - eq(context) - ) - } - } - } - - @Test - fun setIsAgeRestrictedUser_withTrueValue_invokesSetIsAgeRestrictedUser() { - val plugin = GmaMediationApplovinPlugin() - mockStatic(AppLovinPrivacySettings::class.java).use { mockedAppLovinPrivacySettings -> - plugin.onAttachedToEngine(mockFlutterPluginBinding) - - plugin.setIsAgeRestrictedUser(true) - - mockedAppLovinPrivacySettings.verify { - AppLovinPrivacySettings.setIsAgeRestrictedUser( - eq(true), - eq(context) - ) + AppLovinPrivacySettings.setHasUserConsent(eq(true), eq(context)) } } } @@ -84,29 +61,8 @@ internal class GmaMediationApplovinPluginTest { plugin.setDoNotSell(true) mockedAppLovinPrivacySettings.verify { - AppLovinPrivacySettings.setDoNotSell( - eq(true), - eq(context) - ) + AppLovinPrivacySettings.setDoNotSell(eq(true), eq(context)) } } } - - @Test - fun initializeSdk_invokesinitializeSdk() { - val plugin = GmaMediationApplovinPlugin() - val mockAppLovinSdkInstance = mock() - mockStatic(AppLovinSdk::class.java).use { - plugin.onAttachedToEngine(mockFlutterPluginBinding) - whenever(getInstance(eq(TEST_SDK_KEY), eq(null), eq(context))) doReturn mockAppLovinSdkInstance - - plugin.initializeSdk(TEST_SDK_KEY) - - verify(mockAppLovinSdkInstance).initializeSdk() - } - } - - companion object { - private const val TEST_SDK_KEY = "TEST_SDK_KEY" - } } diff --git a/packages/mediation/gma_mediation_applovin/example/android/app/build.gradle b/packages/mediation/gma_mediation_applovin/example/android/app/build.gradle index afd0c63f4..58616ed81 100644 --- a/packages/mediation/gma_mediation_applovin/example/android/app/build.gradle +++ b/packages/mediation/gma_mediation_applovin/example/android/app/build.gradle @@ -45,7 +45,7 @@ android { applicationId "io.flutter.plugins.googlemobileads.mediation.gma_mediation_applovin_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion flutter.minSdkVersion + minSdkVersion 23 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/packages/mediation/gma_mediation_applovin/example/ios/RunnerTests/GmaMediationApplovinPluginTests.swift b/packages/mediation/gma_mediation_applovin/example/ios/RunnerTests/GmaMediationApplovinPluginTests.swift index 48567e6ec..67220d982 100644 --- a/packages/mediation/gma_mediation_applovin/example/ios/RunnerTests/GmaMediationApplovinPluginTests.swift +++ b/packages/mediation/gma_mediation_applovin/example/ios/RunnerTests/GmaMediationApplovinPluginTests.swift @@ -27,14 +27,6 @@ class GmaMediationApplovinPluginTests: XCTestCase { XCTAssertEqual(appLovinSdkFake.hasUserConsent, true) } - func testSetIsAgeRestrictedUser() { - let appLovinSdkFake = ALSdkFake() - - GmaMediationApplovinPlugin(applovinSdk: appLovinSdkFake).setIsAgeRestrictedUser(isAgeRestrictedUser: true) - - XCTAssertEqual(appLovinSdkFake.isAgeRestrictedUser, true) - } - func testSetDoNotSell() { let appLovinSdkFake = ALSdkFake() @@ -42,42 +34,22 @@ class GmaMediationApplovinPluginTests: XCTestCase { XCTAssertEqual(appLovinSdkFake.doNotSell, true) } - - func testInitializeSdk() { - let appLovinSdkFake = ALSdkFake() - - GmaMediationApplovinPlugin(applovinSdk: appLovinSdkFake).initializeSdk(sdkKey: "testKey") - - XCTAssertEqual(appLovinSdkFake.initializeSdkCalls, 1) - } } class ALSdkFake: ALSdkProtocol { var hasUserConsent: Bool - var isAgeRestrictedUser: Bool var doNotSell: Bool - var initializeSdkCalls: Int init() { hasUserConsent = false - isAgeRestrictedUser = false doNotSell = false - initializeSdkCalls = 0 } func setHasUserConsent(hasUserConsent: Bool) { self.hasUserConsent = hasUserConsent } - func setIsAgeRestrictedUser(isAgeRestrictedUser: Bool) { - self.isAgeRestrictedUser = isAgeRestrictedUser - } - func setDoNotSell(doNotSell: Bool) { self.doNotSell = doNotSell } - - func initializeSdk(sdkKey: String) { - initializeSdkCalls += 1 - } } diff --git a/packages/mediation/gma_mediation_applovin/example/pubspec.yaml b/packages/mediation/gma_mediation_applovin/example/pubspec.yaml index a85d0499c..950a55c17 100644 --- a/packages/mediation/gma_mediation_applovin/example/pubspec.yaml +++ b/packages/mediation/gma_mediation_applovin/example/pubspec.yaml @@ -5,7 +5,7 @@ description: "Demonstrates how to use the gma_mediation_applovin plugin." publish_to: 'none' # Remove this line if you wish to publish to pub.dev environment: - sdk: '>=3.2.5 <4.0.0' + sdk: '>=3.6.0 <4.0.0' # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -17,7 +17,7 @@ dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.0.0 + google_mobile_ads: ^6.0.0 gma_mediation_applovin: # When depending on this package from a real application you should use: # gma_mediation_applovin: ^x.y.z diff --git a/packages/mediation/gma_mediation_applovin/example/test/widget_test.dart b/packages/mediation/gma_mediation_applovin/example/test/widget_test.dart deleted file mode 100644 index d3e8f69d3..000000000 --- a/packages/mediation/gma_mediation_applovin/example/test/widget_test.dart +++ /dev/null @@ -1,27 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility in the flutter_test package. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:gma_mediation_applovin_example/main.dart'; - -void main() { - testWidgets('Verify Platform version', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const MyApp()); - - // Verify that platform version is retrieved. - expect( - find.byWidgetPredicate( - (Widget widget) => - widget is Text && widget.data!.startsWith('Running on:'), - ), - findsOneWidget, - ); - }); -} diff --git a/packages/mediation/gma_mediation_applovin/ios/Classes/AppLovinFlutterMediationExtras.swift b/packages/mediation/gma_mediation_applovin/ios/Classes/AppLovinFlutterMediationExtras.swift index 8ba4be5f3..4a071f205 100644 --- a/packages/mediation/gma_mediation_applovin/ios/Classes/AppLovinFlutterMediationExtras.swift +++ b/packages/mediation/gma_mediation_applovin/ios/Classes/AppLovinFlutterMediationExtras.swift @@ -12,23 +12,23 @@ // See the License for the specific language governing permissions and // limitations under the License. -import Foundation import AppLovinAdapter +import Foundation @objc protocol FLTMediationExtras { var extras: NSMutableDictionary { get } - func getMediationExtras() -> GADAdNetworkExtras + func getMediationExtras() -> AdNetworkExtras } @objc(AppLovinFlutterMediationExtras) -class AppLovinFlutterMediationExtras : NSObject, FLTMediationExtras { +class AppLovinFlutterMediationExtras: NSObject, FLTMediationExtras { var extras: NSMutableDictionary = [:] - func getMediationExtras() -> GADAdNetworkExtras { + func getMediationExtras() -> AdNetworkExtras { let appLovinExtras = GADMAdapterAppLovinExtras() if let muteAudio = extras["isMuted"] as? Bool { appLovinExtras.muteAudio = muteAudio } return appLovinExtras } -} \ No newline at end of file +} diff --git a/packages/mediation/gma_mediation_applovin/ios/Classes/AppLovinSDKApi.g.swift b/packages/mediation/gma_mediation_applovin/ios/Classes/AppLovinSDKApi.g.swift index 67c3c52d5..0b22db8ed 100644 --- a/packages/mediation/gma_mediation_applovin/ios/Classes/AppLovinSDKApi.g.swift +++ b/packages/mediation/gma_mediation_applovin/ios/Classes/AppLovinSDKApi.g.swift @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v17.1.2), do not edit directly. +// Autogenerated from Pigeon (v22.7.2), do not edit directly. // See also: https://pub.dev/packages/pigeon import Foundation @@ -11,11 +11,36 @@ import Foundation #error("Unsupported platform.") #endif +/// Error class for passing custom error details to Dart side. +final class PigeonError: Error { + let code: String + let message: String? + let details: Any? + + init(code: String, message: String?, details: Any?) { + self.code = code + self.message = message + self.details = details + } + + var localizedDescription: String { + return + "PigeonError(code: \(code), message: \(message ?? ""), details: \(details ?? "")" + } +} + private func wrapResult(_ result: Any?) -> [Any?] { return [result] } private func wrapError(_ error: Any) -> [Any?] { + if let pigeonError = error as? PigeonError { + return [ + pigeonError.code, + pigeonError.message, + pigeonError.details, + ] + } if let flutterError = error as? FlutterError { return [ flutterError.code, @@ -38,27 +63,51 @@ private func nilOrValue(_ value: Any?) -> T? { if value is NSNull { return nil } return value as! T? } + +private class AppLovinSDKApiPigeonCodecReader: FlutterStandardReader { +} + +private class AppLovinSDKApiPigeonCodecWriter: FlutterStandardWriter { +} + +private class AppLovinSDKApiPigeonCodecReaderWriter: FlutterStandardReaderWriter { + override func reader(with data: Data) -> FlutterStandardReader { + return AppLovinSDKApiPigeonCodecReader(data: data) + } + + override func writer(with data: NSMutableData) -> FlutterStandardWriter { + return AppLovinSDKApiPigeonCodecWriter(data: data) + } +} + +class AppLovinSDKApiPigeonCodec: FlutterStandardMessageCodec, @unchecked Sendable { + static let shared = AppLovinSDKApiPigeonCodec( + readerWriter: AppLovinSDKApiPigeonCodecReaderWriter()) +} + /// The generated classes set the channels to call the methods in the corresponding kotlin AppLovinSDKApi interface and swift AppLovinSDKApi protocol from the dart layer. /// /// Generated protocol from Pigeon that represents a handler of messages from Flutter. protocol AppLovinSDKApi { /// Used to configure GDPR consent on the Android or iOS AppLovin SDK func setHasUserConsent(hasUserConsent: Bool) throws - /// Used to acknowledge that the user is in an age-restricted category on the Android or iOS AppLovin SDK - func setIsAgeRestrictedUser(isAgeRestrictedUser: Bool) throws /// Used to opt out of the sale of personal information in AppLovin SDK. func setDoNotSell(doNotSell: Bool) throws - /// Used to initialize the Android or iOS AppLovin SDK. Can be called anytime before the adapter initialization to let AppLovin track events as soon as possible. - func initializeSdk(sdkKey: String) throws } /// Generated setup class from Pigeon to handle messages through the `binaryMessenger`. class AppLovinSDKApiSetup { - /// The codec used by AppLovinSDKApi. + static var codec: FlutterStandardMessageCodec { AppLovinSDKApiPigeonCodec.shared } /// Sets up an instance of `AppLovinSDKApi` to handle messages through the `binaryMessenger`. - static func setUp(binaryMessenger: FlutterBinaryMessenger, api: AppLovinSDKApi?) { + static func setUp( + binaryMessenger: FlutterBinaryMessenger, api: AppLovinSDKApi?, messageChannelSuffix: String = "" + ) { + let channelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : "" /// Used to configure GDPR consent on the Android or iOS AppLovin SDK - let setHasUserConsentChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.setHasUserConsent", binaryMessenger: binaryMessenger) + let setHasUserConsentChannel = FlutterBasicMessageChannel( + name: + "dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.setHasUserConsent\(channelSuffix)", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setHasUserConsentChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -73,24 +122,10 @@ class AppLovinSDKApiSetup { } else { setHasUserConsentChannel.setMessageHandler(nil) } - /// Used to acknowledge that the user is in an age-restricted category on the Android or iOS AppLovin SDK - let setIsAgeRestrictedUserChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.setIsAgeRestrictedUser", binaryMessenger: binaryMessenger) - if let api = api { - setIsAgeRestrictedUserChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let isAgeRestrictedUserArg = args[0] as! Bool - do { - try api.setIsAgeRestrictedUser(isAgeRestrictedUser: isAgeRestrictedUserArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - setIsAgeRestrictedUserChannel.setMessageHandler(nil) - } /// Used to opt out of the sale of personal information in AppLovin SDK. - let setDoNotSellChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.setDoNotSell", binaryMessenger: binaryMessenger) + let setDoNotSellChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.setDoNotSell\(channelSuffix)", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setDoNotSellChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -105,21 +140,5 @@ class AppLovinSDKApiSetup { } else { setDoNotSellChannel.setMessageHandler(nil) } - /// Used to initialize the Android or iOS AppLovin SDK. Can be called anytime before the adapter initialization to let AppLovin track events as soon as possible. - let initializeSdkChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.initializeSdk", binaryMessenger: binaryMessenger) - if let api = api { - initializeSdkChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let sdkKeyArg = args[0] as! String - do { - try api.initializeSdk(sdkKey: sdkKeyArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - initializeSdkChannel.setMessageHandler(nil) - } } } diff --git a/packages/mediation/gma_mediation_applovin/ios/Classes/GmaMediationApplovinPlugin.swift b/packages/mediation/gma_mediation_applovin/ios/Classes/GmaMediationApplovinPlugin.swift index 288d480e0..53d5d99e8 100644 --- a/packages/mediation/gma_mediation_applovin/ios/Classes/GmaMediationApplovinPlugin.swift +++ b/packages/mediation/gma_mediation_applovin/ios/Classes/GmaMediationApplovinPlugin.swift @@ -20,59 +20,41 @@ import UIKit public class GmaMediationApplovinPlugin: NSObject, FlutterPlugin, AppLovinSDKApi { let applovinSdk: ALSdkProtocol - init (applovinSdk: ALSdkProtocol) { + init(applovinSdk: ALSdkProtocol) { self.applovinSdk = applovinSdk } public static func register(with registrar: FlutterPluginRegistrar) { - let messenger : FlutterBinaryMessenger = registrar.messenger() - let api : AppLovinSDKApi& NSObjectProtocol = GmaMediationApplovinPlugin.init(applovinSdk: ALSdkImpl()) + let messenger: FlutterBinaryMessenger = registrar.messenger() + let api: AppLovinSDKApi & NSObjectProtocol = GmaMediationApplovinPlugin.init( + applovinSdk: ALSdkImpl()) AppLovinSDKApiSetup.setUp(binaryMessenger: messenger, api: api) } public func detachFromEngine(for registrar: FlutterPluginRegistrar) { - let messenger : FlutterBinaryMessenger = registrar.messenger() + let messenger: FlutterBinaryMessenger = registrar.messenger() AppLovinSDKApiSetup.setUp(binaryMessenger: messenger, api: nil) } func setHasUserConsent(hasUserConsent: Bool) { applovinSdk.setHasUserConsent(hasUserConsent: hasUserConsent) } - func setIsAgeRestrictedUser(isAgeRestrictedUser: Bool) { - applovinSdk.setIsAgeRestrictedUser(isAgeRestrictedUser: isAgeRestrictedUser) - } func setDoNotSell(doNotSell: Bool) { applovinSdk.setDoNotSell(doNotSell: doNotSell) } - func initializeSdk(sdkKey: String) { - applovinSdk.initializeSdk(sdkKey: sdkKey) - } } protocol ALSdkProtocol { func setHasUserConsent(hasUserConsent: Bool) - func setIsAgeRestrictedUser(isAgeRestrictedUser: Bool) - func setDoNotSell(doNotSell: Bool) - - func initializeSdk(sdkKey: String) } -class ALSdkImpl : ALSdkProtocol { +class ALSdkImpl: ALSdkProtocol { func setHasUserConsent(hasUserConsent: Bool) { ALPrivacySettings.setHasUserConsent(hasUserConsent) } - func setIsAgeRestrictedUser(isAgeRestrictedUser: Bool) { - ALPrivacySettings.setIsAgeRestrictedUser(isAgeRestrictedUser) - } - func setDoNotSell(doNotSell: Bool) { ALPrivacySettings.setDoNotSell(doNotSell) } - - func initializeSdk(sdkKey: String) { - let sdk = ALSdk.shared(withKey: sdkKey) - sdk?.initializeSdk() - } } diff --git a/packages/mediation/gma_mediation_applovin/ios/gma_mediation_applovin.podspec b/packages/mediation/gma_mediation_applovin/ios/gma_mediation_applovin.podspec index 21ce60c2b..81254e7b3 100644 --- a/packages/mediation/gma_mediation_applovin/ios/gma_mediation_applovin.podspec +++ b/packages/mediation/gma_mediation_applovin/ios/gma_mediation_applovin.podspec @@ -4,7 +4,7 @@ # Pod::Spec.new do |s| s.name = 'gma_mediation_applovin' - s.version = '1.2.0' + s.version = '2.2.1' s.summary = 'Google Mobile Ads Mediation of AppLovin.' s.description = <<-DESC Mediation Adapter for AppLovin to use with Google Mobile Ads. @@ -16,7 +16,7 @@ Mediation Adapter for AppLovin to use with Google Mobile Ads. s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'GoogleMobileAdsMediationAppLovin', '~> 12.6.1.0' + s.dependency 'GoogleMobileAdsMediationAppLovin', '~> 13.2.0.0' s.platform = :ios, '12.0' s.static_framework = true diff --git a/packages/mediation/gma_mediation_applovin/lib/applovin_sdk_api.g.dart b/packages/mediation/gma_mediation_applovin/lib/applovin_sdk_api.g.dart index af0f885ff..7d14b8fb5 100644 --- a/packages/mediation/gma_mediation_applovin/lib/applovin_sdk_api.g.dart +++ b/packages/mediation/gma_mediation_applovin/lib/applovin_sdk_api.g.dart @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v17.1.2), do not edit directly. +// Autogenerated from Pigeon (v22.7.2), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import, no_leading_underscores_for_local_identifiers @@ -15,62 +15,64 @@ PlatformException _createConnectionError(String channelName) { ); } +class _PigeonCodec extends StandardMessageCodec { + const _PigeonCodec(); + @override + void writeValue(WriteBuffer buffer, Object? value) { + if (value is int) { + buffer.putUint8(4); + buffer.putInt64(value); + } else { + super.writeValue(buffer, value); + } + } + + @override + Object? readValueOfType(int type, ReadBuffer buffer) { + switch (type) { + default: + return super.readValueOfType(type, buffer); + } + } +} + /// The generated classes set the channels to call the methods in the corresponding kotlin AppLovinSDKApi interface and swift AppLovinSDKApi protocol from the dart layer. class AppLovinSDKApi { /// Constructor for [AppLovinSDKApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - AppLovinSDKApi({BinaryMessenger? binaryMessenger}) - : __pigeon_binaryMessenger = binaryMessenger; - final BinaryMessenger? __pigeon_binaryMessenger; + AppLovinSDKApi({ + BinaryMessenger? binaryMessenger, + String messageChannelSuffix = '', + }) : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = + messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + final BinaryMessenger? pigeonVar_binaryMessenger; + + static const MessageCodec pigeonChannelCodec = _PigeonCodec(); - static const MessageCodec pigeonChannelCodec = - StandardMessageCodec(); + final String pigeonVar_messageChannelSuffix; /// Used to configure GDPR consent on the Android or iOS AppLovin SDK Future setHasUserConsent(bool hasUserConsent) async { - const String __pigeon_channelName = - 'dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.setHasUserConsent'; - final BasicMessageChannel __pigeon_channel = + final String pigeonVar_channelName = + 'dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.setHasUserConsent$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - __pigeon_channelName, - pigeonChannelCodec, - binaryMessenger: __pigeon_binaryMessenger, - ); - final List? __pigeon_replyList = await __pigeon_channel - .send([hasUserConsent]) as List?; - if (__pigeon_replyList == null) { - throw _createConnectionError(__pigeon_channelName); - } else if (__pigeon_replyList.length > 1) { + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final List? pigeonVar_replyList = + await pigeonVar_channel.send([hasUserConsent]) + as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { throw PlatformException( - code: __pigeon_replyList[0]! as String, - message: __pigeon_replyList[1] as String?, - details: __pigeon_replyList[2], - ); - } else { - return; - } - } - - /// Used to acknowledge that the user is in an age-restricted category on the Android or iOS AppLovin SDK - Future setIsAgeRestrictedUser(bool isAgeRestrictedUser) async { - const String __pigeon_channelName = - 'dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.setIsAgeRestrictedUser'; - final BasicMessageChannel __pigeon_channel = - BasicMessageChannel( - __pigeon_channelName, - pigeonChannelCodec, - binaryMessenger: __pigeon_binaryMessenger, - ); - final List? __pigeon_replyList = await __pigeon_channel - .send([isAgeRestrictedUser]) as List?; - if (__pigeon_replyList == null) { - throw _createConnectionError(__pigeon_channelName); - } else if (__pigeon_replyList.length > 1) { - throw PlatformException( - code: __pigeon_replyList[0]! as String, - message: __pigeon_replyList[1] as String?, - details: __pigeon_replyList[2], + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], ); } else { return; @@ -79,48 +81,23 @@ class AppLovinSDKApi { /// Used to opt out of the sale of personal information in AppLovin SDK. Future setDoNotSell(bool doNotSell) async { - const String __pigeon_channelName = - 'dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.setDoNotSell'; - final BasicMessageChannel __pigeon_channel = - BasicMessageChannel( - __pigeon_channelName, - pigeonChannelCodec, - binaryMessenger: __pigeon_binaryMessenger, - ); - final List? __pigeon_replyList = - await __pigeon_channel.send([doNotSell]) as List?; - if (__pigeon_replyList == null) { - throw _createConnectionError(__pigeon_channelName); - } else if (__pigeon_replyList.length > 1) { - throw PlatformException( - code: __pigeon_replyList[0]! as String, - message: __pigeon_replyList[1] as String?, - details: __pigeon_replyList[2], - ); - } else { - return; - } - } - - /// Used to initialize the Android or iOS AppLovin SDK. Can be called anytime before the adapter initialization to let AppLovin track events as soon as possible. - Future initializeSdk(String sdkKey) async { - const String __pigeon_channelName = - 'dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.initializeSdk'; - final BasicMessageChannel __pigeon_channel = + final String pigeonVar_channelName = + 'dev.flutter.pigeon.gma_mediation_applovin.AppLovinSDKApi.setDoNotSell$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - __pigeon_channelName, - pigeonChannelCodec, - binaryMessenger: __pigeon_binaryMessenger, - ); - final List? __pigeon_replyList = - await __pigeon_channel.send([sdkKey]) as List?; - if (__pigeon_replyList == null) { - throw _createConnectionError(__pigeon_channelName); - } else if (__pigeon_replyList.length > 1) { + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final List? pigeonVar_replyList = + await pigeonVar_channel.send([doNotSell]) as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { throw PlatformException( - code: __pigeon_replyList[0]! as String, - message: __pigeon_replyList[1] as String?, - details: __pigeon_replyList[2], + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], ); } else { return; diff --git a/packages/mediation/gma_mediation_applovin/lib/gma_mediation_applovin.dart b/packages/mediation/gma_mediation_applovin/lib/gma_mediation_applovin.dart index 49dc8d9a9..1e905cb24 100644 --- a/packages/mediation/gma_mediation_applovin/lib/gma_mediation_applovin.dart +++ b/packages/mediation/gma_mediation_applovin/lib/gma_mediation_applovin.dart @@ -20,15 +20,7 @@ class GmaMediationApplovin { AppLovinSDKApi().setHasUserConsent(hasUserConsent); } - Future setIsAgeRestrictedUser(bool isAgeRestrictedUser) async { - AppLovinSDKApi().setIsAgeRestrictedUser(isAgeRestrictedUser); - } - Future setDoNotSell(bool doNotSell) async { AppLovinSDKApi().setDoNotSell(doNotSell); } - - Future initializeSdk(String sdkKey) async { - AppLovinSDKApi().initializeSdk(sdkKey); - } } diff --git a/packages/mediation/gma_mediation_applovin/pigeons/applovin_privacy_api.dart b/packages/mediation/gma_mediation_applovin/pigeons/applovin_privacy_api.dart index ba1dad7ee..e967a83e7 100644 --- a/packages/mediation/gma_mediation_applovin/pigeons/applovin_privacy_api.dart +++ b/packages/mediation/gma_mediation_applovin/pigeons/applovin_privacy_api.dart @@ -36,12 +36,6 @@ abstract class AppLovinSDKApi { /// Used to configure GDPR consent on the Android or iOS AppLovin SDK void setHasUserConsent(bool hasUserConsent); - /// Used to acknowledge that the user is in an age-restricted category on the Android or iOS AppLovin SDK - void setIsAgeRestrictedUser(bool isAgeRestrictedUser); - /// Used to opt out of the sale of personal information in AppLovin SDK. void setDoNotSell(bool doNotSell); - - /// Used to initialize the Android or iOS AppLovin SDK. Can be called anytime before the adapter initialization to let AppLovin track events as soon as possible. - void initializeSdk(String sdkKey); } diff --git a/packages/mediation/gma_mediation_applovin/pubspec.yaml b/packages/mediation/gma_mediation_applovin/pubspec.yaml index 84dc4856e..c7a8a8aef 100644 --- a/packages/mediation/gma_mediation_applovin/pubspec.yaml +++ b/packages/mediation/gma_mediation_applovin/pubspec.yaml @@ -1,24 +1,24 @@ name: gma_mediation_applovin description: "Mediation Adapter that enables sending ad requests to the AppLovin ad network using the google_mobile_ads plugin." -version: 1.2.0 +version: 2.2.1 repository: https://github.com/googleads/googleads-mobile-flutter/tree/main/packages/mediation/gma_mediation_applovin environment: - sdk: '>=3.2.5 <4.0.0' - flutter: '>=3.3.0' + sdk: '>=3.6.0 <4.0.0' + flutter: '>=3.27.0' dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 - plugin_platform_interface: ^2.0.2 + google_mobile_ads: ^6.0.0 + plugin_platform_interface: ^2.1.8 dev_dependencies: - flutter_lints: ^2.0.0 + flutter_lints: ^5.0.0 flutter_test: sdk: flutter lint: ^2.3.0 - pigeon: ^17.0.0 + pigeon: ^22.7.2 flutter: plugin: diff --git a/packages/mediation/gma_mediation_chartboost/CHANGELOG.md b/packages/mediation/gma_mediation_chartboost/CHANGELOG.md index f9e4f3893..165dd6eeb 100644 --- a/packages/mediation/gma_mediation_chartboost/CHANGELOG.md +++ b/packages/mediation/gma_mediation_chartboost/CHANGELOG.md @@ -1,9 +1,17 @@ ## Chartboost Flutter Mediation Adapter Changelog -#### 1.0.0 +#### Version 1.0.2 +- Supports [Chartboost Android adapter version 9.8.3.1](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/chartboost/CHANGELOG.md#version-9831). +- Supports [Charboost iOS adapter version 9.8.1.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Chartboost/CHANGELOG.md#version-9810). +- Built and tested with the Google Mobile Ads Flutter Plugin version 6.0.0. -TODO: Add version numbers -* Initial release. -* Verified compatibility with Chartboost Android adapter version a.b.c.d -* Verified compatibility with Chartboost iOS adapter version a.b.c.d -* Built and tested with the Google Mobile Ads Flutter Plugin version X.Y.Z. +#### Version 1.0.1 +- Supports [Chartboost Android adapter version 9.8.3.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/chartboost/CHANGELOG.md#version-9830). +- Supports [Charboost iOS adapter version 9.8.1.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Chartboost/CHANGELOG.md#version-9810). +- Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. + +#### Version 1.0.0 +- Initial release. +- Supports [Chartboost Android adapter version 9.8.1.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/chartboost/CHANGELOG.md#version-9810). +- Supports [Charboost iOS adapter version 9.8.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Chartboost/CHANGELOG.md#version-9800). +- Built and tested with the Google Mobile Ads Flutter Plugin version 5.2.0. \ No newline at end of file diff --git a/packages/mediation/gma_mediation_chartboost/android/build.gradle b/packages/mediation/gma_mediation_chartboost/android/build.gradle index 550e3b429..d82fe7870 100644 --- a/packages/mediation/gma_mediation_chartboost/android/build.gradle +++ b/packages/mediation/gma_mediation_chartboost/android/build.gradle @@ -1,5 +1,5 @@ group = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_chartboost" -version = "1.0-SNAPSHOT" +version = "1.0.2" buildscript { ext.kotlin_version = "1.8.22" @@ -27,6 +27,10 @@ allprojects { apply plugin: "com.android.library" apply plugin: "kotlin-android" +ext { + stringVersion = "9.8.3.1" +} + android { if (project.android.hasProperty("namespace")) { namespace = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_chartboost" @@ -49,11 +53,11 @@ android { } defaultConfig { - minSdk = 21 + minSdk = 23 } dependencies { - implementation("com.google.ads.mediation:chartboost:9.8.1.0") + implementation("com.google.ads.mediation:chartboost:$stringVersion") testImplementation("org.jetbrains.kotlin:kotlin-test") testImplementation("org.mockito:mockito-core:5.0.0") } diff --git a/packages/mediation/gma_mediation_chartboost/example/android/app/build.gradle b/packages/mediation/gma_mediation_chartboost/example/android/app/build.gradle index e6b47c9ac..2ccf073e7 100644 --- a/packages/mediation/gma_mediation_chartboost/example/android/app/build.gradle +++ b/packages/mediation/gma_mediation_chartboost/example/android/app/build.gradle @@ -23,7 +23,7 @@ android { applicationId = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_chartboost_example" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = flutter.minSdkVersion + minSdk = 23 targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/packages/mediation/gma_mediation_chartboost/example/pubspec.yaml b/packages/mediation/gma_mediation_chartboost/example/pubspec.yaml index b176eecb5..882e8ee57 100644 --- a/packages/mediation/gma_mediation_chartboost/example/pubspec.yaml +++ b/packages/mediation/gma_mediation_chartboost/example/pubspec.yaml @@ -5,7 +5,7 @@ description: "Demonstrates how to use the gma_mediation_chartboost plugin." publish_to: 'none' # Remove this line if you wish to publish to pub.dev environment: - sdk: ^3.5.4 + sdk: ^3.6.0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -17,6 +17,7 @@ dependencies: flutter: sdk: flutter + google_mobile_ads: ^6.0.0 gma_mediation_chartboost: # When depending on this package from a real application you should use: # gma_mediation_chartboost: ^x.y.z diff --git a/packages/mediation/gma_mediation_chartboost/ios/gma_mediation_chartboost.podspec b/packages/mediation/gma_mediation_chartboost/ios/gma_mediation_chartboost.podspec index ad3b9f903..2db50cea5 100644 --- a/packages/mediation/gma_mediation_chartboost/ios/gma_mediation_chartboost.podspec +++ b/packages/mediation/gma_mediation_chartboost/ios/gma_mediation_chartboost.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'gma_mediation_chartboost' - s.version = '1.0.0' + s.version = '1.0.2' s.summary = 'Google Mobile Ads Mediation of Chartboost.' s.description = <<-DESC Mediation Adapter for Chartboost to use with Google Mobile Ads. @@ -11,7 +11,7 @@ Pod::Spec.new do |s| s.source = { :path => '.' } s.source_files = 'Classes/**/*' s.dependency 'Flutter' - s.dependency 'GoogleMobileAdsMediationChartboost', '~>9.8.0.0' + s.dependency 'GoogleMobileAdsMediationChartboost', '~>9.8.1.0' s.platform = :ios, '12.0' s.static_framework = true diff --git a/packages/mediation/gma_mediation_chartboost/pigeons/chartboost_sdk_api.dart b/packages/mediation/gma_mediation_chartboost/pigeons/chartboost_sdk_api.dart index 97411b562..2dee582e4 100644 --- a/packages/mediation/gma_mediation_chartboost/pigeons/chartboost_sdk_api.dart +++ b/packages/mediation/gma_mediation_chartboost/pigeons/chartboost_sdk_api.dart @@ -32,4 +32,4 @@ import 'package:pigeon/pigeon.dart'; @HostApi() /// The generated classes set the channels to call the methods in the corresponding kotlin ChartboostSDKApi interface and swift ChartboostSDKApi protocol from the dart layer. -abstract class ChartboostSDKApi { } +abstract class ChartboostSDKApi {} diff --git a/packages/mediation/gma_mediation_chartboost/pubspec.yaml b/packages/mediation/gma_mediation_chartboost/pubspec.yaml index 324627690..521f960a0 100644 --- a/packages/mediation/gma_mediation_chartboost/pubspec.yaml +++ b/packages/mediation/gma_mediation_chartboost/pubspec.yaml @@ -1,19 +1,19 @@ name: gma_mediation_chartboost description: 'Mediation Adapter that enables sending ad requests to the Chartboost ad network using the google_mobile_ads plugin.' -version: 1.0.0 +version: 1.0.2 environment: - sdk: ^3.5.4 - flutter: '>=3.3.0' + sdk: '>=3.6.0 <4.0.0' + flutter: '>=3.27.0' dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 plugin_platform_interface: ^2.0.2 dev_dependencies: + flutter_lints: ^4.0.0 flutter_test: sdk: flutter - flutter_lints: ^4.0.0 lint: ^2.3.0 pigeon: ^22.6.2 flutter: diff --git a/packages/mediation/gma_mediation_dtexchange/CHANGELOG.md b/packages/mediation/gma_mediation_dtexchange/CHANGELOG.md index 57366133a..9fc134f94 100644 --- a/packages/mediation/gma_mediation_dtexchange/CHANGELOG.md +++ b/packages/mediation/gma_mediation_dtexchange/CHANGELOG.md @@ -1,15 +1,23 @@ ## DT Exchange Flutter Mediation Adapter Changelog -#### Next Version -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.2.0. +#### Version 1.1.2 +* Supports [DT Exchange Android adapter version 8.3.6.1](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/dtexchange/CHANGELOG.md#version-8361). +* Supports [DT Exchange iOS adapter version 8.3.6.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/DTExchange/CHANGELOG.md#version-8360). +* Built and tested with the Google Mobile Ads Flutter Plugin version 6.0.0. -#### 1.1.0 -* Verified compatibility with DT Exchange Android adapter version 8.3.0.0. -* Verified compatibility with DT Exchange iOS adapter version 8.3.1.0. -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. +#### Version 1.1.1 +* Supports [DT Exchange Android adapter version 8.3.6.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/dtexchange/CHANGELOG.md#version-8360). +* Supports [DT Exchange iOS adapter version 8.3.5.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/DTExchange/CHANGELOG.md#version-8350). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. + +#### Version 1.1.0 +* iOS plugin is now a static framework. +* Supports [DT Exchange Android adapter version 8.3.5.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/dtexchange/CHANGELOG.md#version-8350). +* Supports [DT Exchange iOS adapter version 8.3.4.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/DTExchange/CHANGELOG.md#version-8340). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. -#### 1.0.0 +#### Version 1.0.0 * Initial release. -* Verified compatibility with DT Exchange Android adapter version 8.2.7.0. -* Verified compatibility with DT Exchange iOS adapter version 8.2.8.0. +* Supports [DT Exchange Android adapter version 8.2.7.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/dtexchange/CHANGELOG.md#version-8270). +* Supports [DT Exchange iOS adapter version 8.2.8.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/DTExchange/CHANGELOG.md#version-8280). * Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. diff --git a/packages/mediation/gma_mediation_dtexchange/android/build.gradle b/packages/mediation/gma_mediation_dtexchange/android/build.gradle index df3ed1b75..4f4cbfc77 100644 --- a/packages/mediation/gma_mediation_dtexchange/android/build.gradle +++ b/packages/mediation/gma_mediation_dtexchange/android/build.gradle @@ -1,5 +1,5 @@ group 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_dtexchange' -version '1.0-SNAPSHOT' +version = "1.1.3" buildscript { ext.kotlin_version = '2.0.21' @@ -24,6 +24,10 @@ allprojects { apply plugin: 'com.android.library' apply plugin: 'kotlin-android' +ext { + stringVersion = "8.3.7.0" +} + android { if (project.android.hasProperty("namespace")) { namespace 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_dtexchange' @@ -46,11 +50,11 @@ android { } defaultConfig { - minSdkVersion 21 + minSdkVersion 23 } dependencies { - implementation 'com.google.ads.mediation:fyber:8.3.0.0' + implementation "com.google.ads.mediation:fyber:$stringVersion" testImplementation 'junit:junit:4.13.2' testImplementation 'androidx.test:core:1.5.0' testImplementation 'androidx.test:core-ktx:1.5.0' diff --git a/packages/mediation/gma_mediation_dtexchange/example/android/app/build.gradle b/packages/mediation/gma_mediation_dtexchange/example/android/app/build.gradle index 13ab147d6..e7bd134e4 100644 --- a/packages/mediation/gma_mediation_dtexchange/example/android/app/build.gradle +++ b/packages/mediation/gma_mediation_dtexchange/example/android/app/build.gradle @@ -45,7 +45,7 @@ android { applicationId "io.flutter.plugins.googlemobileads.mediation.gma_mediation_dtexchange_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion flutter.minSdkVersion + minSdkVersion 23 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/packages/mediation/gma_mediation_dtexchange/example/pubspec.yaml b/packages/mediation/gma_mediation_dtexchange/example/pubspec.yaml index 40b64da46..5348d91bd 100644 --- a/packages/mediation/gma_mediation_dtexchange/example/pubspec.yaml +++ b/packages/mediation/gma_mediation_dtexchange/example/pubspec.yaml @@ -5,7 +5,7 @@ description: "Demonstrates how to use the gma_mediation_dtexchange plugin." publish_to: 'none' # Remove this line if you wish to publish to pub.dev environment: - sdk: '>=3.3.3 <4.0.0' + sdk: '>=3.6.0 <4.0.0' # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -17,6 +17,7 @@ dependencies: flutter: sdk: flutter + google_mobile_ads: ^6.0.0 gma_mediation_dtexchange: # When depending on this package from a real application you should use: # gma_mediation_dtexchange: ^x.y.z diff --git a/packages/mediation/gma_mediation_dtexchange/ios/gma_mediation_dtexchange.podspec b/packages/mediation/gma_mediation_dtexchange/ios/gma_mediation_dtexchange.podspec index 779aa1486..3545929d2 100644 --- a/packages/mediation/gma_mediation_dtexchange/ios/gma_mediation_dtexchange.podspec +++ b/packages/mediation/gma_mediation_dtexchange/ios/gma_mediation_dtexchange.podspec @@ -4,7 +4,7 @@ # Pod::Spec.new do |s| s.name = 'gma_mediation_dtexchange' - s.version = '1.1.0' + s.version = '1.1.3' s.summary = 'Google Mobile Ads Mediation of DT Exchange.' s.description = <<-DESC Mediation Adapter for DT Exchange to use with Google Mobile Ads. @@ -16,7 +16,7 @@ Mediation Adapter for DT Exchange to use with Google Mobile Ads. s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'GoogleMobileAdsMediationFyber', '~> 8.3.1.0' + s.dependency 'GoogleMobileAdsMediationFyber', '~> 8.3.6.0' s.platform = :ios, '12.0' s.static_framework = true # Flutter.framework does not contain a i386 slice. diff --git a/packages/mediation/gma_mediation_dtexchange/pubspec.yaml b/packages/mediation/gma_mediation_dtexchange/pubspec.yaml index fabbbcd86..c8aca5354 100644 --- a/packages/mediation/gma_mediation_dtexchange/pubspec.yaml +++ b/packages/mediation/gma_mediation_dtexchange/pubspec.yaml @@ -1,16 +1,16 @@ name: gma_mediation_dtexchange description: "Mediation Adapter that enables sending ad requests to the DT Exchange ad network using the google_mobile_ads plugin." -version: 1.1.0 +version: 1.1.3 repository: https://github.com/googleads/googleads-mobile-flutter/tree/main/packages/mediation/gma_mediation_dtexchange environment: - sdk: '>=3.2.5 <4.0.0' - flutter: '>=3.3.0' + sdk: '>=3.6.0 <4.0.0' + flutter: '>=3.27.0' dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 plugin_platform_interface: ^2.0.2 dev_dependencies: diff --git a/packages/mediation/gma_mediation_imobile/CHANGELOG.md b/packages/mediation/gma_mediation_imobile/CHANGELOG.md new file mode 100644 index 000000000..e2a1a544c --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/CHANGELOG.md @@ -0,0 +1,12 @@ +## i-mobile Flutter Mediation Adapter Changelog + +#### Version 1.0.1 +* Supports [i-mobile Android adapter version 2.3.2.1](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/imobile/CHANGELOG.md#version-2321). +* Supports [i-mobile iOS adapter version 2.3.4.2](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/I-Mobile/CHANGELOG.md#version-2342). +* Built and tested with the Google Mobile Ads Flutter Plugin version 6.0.0. + +#### Version 1.0.0 +* Initial release. +* Supports [i-mobile Android adapter version 2.3.2.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/imobile/CHANGELOG.md#version-2320). +* Supports [i-mobile iOS adapter version 2.3.4.1](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/I-Mobile/CHANGELOG.md#version-2341). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. diff --git a/packages/mediation/gma_mediation_imobile/LICENSE b/packages/mediation/gma_mediation_imobile/LICENSE new file mode 100644 index 000000000..e58143fcc --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2024 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/mediation/gma_mediation_imobile/README.md b/packages/mediation/gma_mediation_imobile/README.md new file mode 100644 index 000000000..46679cfbe --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/README.md @@ -0,0 +1,31 @@ +# Google Mobile Ads Mediation of imobile for Flutter + +[![gma_mediation_imobile](https://github.com/googleads/googleads-mobile-flutter/actions/workflows/google_mobile_ads.yaml/badge.svg)](https://github.com/googleads/googleads-mobile-flutter/actions/workflows/google_mobile_ads.yaml) + +This repository contains the source code for the Mediation imobile Flutter +plugin to be used with the Google Mobile Ads plugin. It enables mediation of the +imobile Ad Network through the Google Mobile Ads SDK. + +## Documentation +For instructions on how to use with the google_mobile_ads plugin, refer to the +developer guide for [imobile](https://developers.google.com/admob/flutter/mediation/imobile). + +## Downloads + +See [pub.dev](https://pub.dev/packages/gma_mediation_imobile/versions) for the +latest releases of the plugin. + +## Suggesting improvements + +To file bugs, make feature requests, or to suggest other improvements, please +use [github's issue tracker](https://github.com/googleads/googleads-mobile-flutter/issues). + + +## Other resources + +* [AdMob help center](https://support.google.com/admob/?hl=en#topic=7383088) +* [Ad Manager help center](https://support.google.com/admanager/?hl=en#topic=7505988) + +## License + +[Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0) \ No newline at end of file diff --git a/packages/mediation/gma_mediation_imobile/analysis_options.yaml b/packages/mediation/gma_mediation_imobile/analysis_options.yaml new file mode 100644 index 000000000..632d08c98 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/analysis_options.yaml @@ -0,0 +1,19 @@ +# Copyright 2025 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +include: package:lint/package.yaml + +analyzer: + exclude: + - '**.g.dart' \ No newline at end of file diff --git a/packages/mediation/gma_mediation_imobile/android/build.gradle b/packages/mediation/gma_mediation_imobile/android/build.gradle new file mode 100644 index 000000000..809a2a781 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/android/build.gradle @@ -0,0 +1,71 @@ +group = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_imobile" +version = "1.0.1" + +buildscript { + ext.kotlin_version = "1.8.22" + repositories { + google() + mavenCentral() + } + + dependencies { + classpath("com.android.tools.build:gradle:8.7.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +apply plugin: "com.android.library" +apply plugin: "kotlin-android" + +ext { + stringVersion = "2.3.2.1" +} + +android { + namespace = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_imobile" + + compileSdk = 35 + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11 + } + + sourceSets { + main.java.srcDirs += "src/main/kotlin" + test.java.srcDirs += "src/test/kotlin" + } + + defaultConfig { + minSdk = 23 + } + + dependencies { + implementation("com.google.ads.mediation:imobile:$stringVersion") + testImplementation("org.jetbrains.kotlin:kotlin-test") + testImplementation("org.mockito:mockito-core:5.0.0") + } + + testOptions { + unitTests.all { + useJUnitPlatform() + + testLogging { + events "passed", "skipped", "failed", "standardOut", "standardError" + outputs.upToDateWhen {false} + showStandardStreams = true + } + } + } +} diff --git a/packages/mediation/gma_mediation_imobile/android/gma_mediation_imobile_android.iml b/packages/mediation/gma_mediation_imobile/android/gma_mediation_imobile_android.iml new file mode 100644 index 000000000..e8b9110d5 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/android/gma_mediation_imobile_android.iml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_imobile/android/settings.gradle b/packages/mediation/gma_mediation_imobile/android/settings.gradle new file mode 100644 index 000000000..7d650fe0a --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/android/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'gma_mediation_imobile' diff --git a/packages/mediation/gma_mediation_imobile/android/src/main/AndroidManifest.xml b/packages/mediation/gma_mediation_imobile/android/src/main/AndroidManifest.xml new file mode 100644 index 000000000..501ea232b --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/android/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + diff --git a/packages/mediation/gma_mediation_imobile/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_imobile/GmaMediationimobilePlugin.kt b/packages/mediation/gma_mediation_imobile/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_imobile/GmaMediationimobilePlugin.kt new file mode 100644 index 000000000..34614fd45 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_imobile/GmaMediationimobilePlugin.kt @@ -0,0 +1,24 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package io.flutter.plugins.googlemobileads.mediation.gma_mediation_imobile + +import io.flutter.embedding.engine.plugins.FlutterPlugin + +/** Required to link the Android dependency of the imobile Adapter. */ +class GmaMediationimobilePlugin : FlutterPlugin { + override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {} + + override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {} +} diff --git a/packages/mediation/gma_mediation_imobile/example/README.md b/packages/mediation/gma_mediation_imobile/example/README.md new file mode 100644 index 000000000..4d40328e9 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/README.md @@ -0,0 +1,17 @@ +# gma_mediation_imobile_example + +Learn how to integrate with your app that uses the [google_mobile_ads](https://pub.dev/packages/google_mobile_ads) plugin +by following the [development guide](https://developers.google.com/admob/flutter/mediation/imobile). + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/packages/mediation/gma_mediation_imobile/example/analysis_options.yaml b/packages/mediation/gma_mediation_imobile/example/analysis_options.yaml new file mode 100644 index 000000000..0d2902135 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/mediation/gma_mediation_imobile/example/android/app/build.gradle.kts b/packages/mediation/gma_mediation_imobile/example/android/app/build.gradle.kts new file mode 100644 index 000000000..25c851504 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/android/app/build.gradle.kts @@ -0,0 +1,41 @@ +plugins { + id("com.android.application") + id("kotlin-android") + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("dev.flutter.flutter-gradle-plugin") +} + +android { + namespace = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_imobile_example" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + + kotlinOptions { jvmTarget = JavaVersion.VERSION_11.toString() } + + defaultConfig { + // TODO: Specify your own unique Application ID + // (https://developer.android.com/studio/build/application-id.html). + applicationId = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_imobile_example" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = 23 + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.getByName("debug") + } + } +} + +flutter { source = "../.." } diff --git a/packages/mediation/gma_mediation_imobile/example/android/app/src/debug/AndroidManifest.xml b/packages/mediation/gma_mediation_imobile/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 000000000..399f6981d --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/mediation/gma_mediation_imobile/example/android/app/src/main/AndroidManifest.xml b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..dbe9d7941 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_imobile/example/android/app/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_imobile_example/MainActivity.kt b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_imobile_example/MainActivity.kt new file mode 100644 index 000000000..09a57a8be --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_imobile_example/MainActivity.kt @@ -0,0 +1,5 @@ +package io.flutter.plugins.googlemobileads.mediation.gma_mediation_imobile_example + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity : FlutterActivity() diff --git a/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 000000000..f74085f3f --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/drawable/launch_background.xml b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 000000000..304732f88 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..db77bb4b7 Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..17987b79b Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..09d439148 Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..d5f1c8d34 Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..4d6372eeb Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/values-night/styles.xml b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 000000000..06952be74 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/values/styles.xml b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..cb1ef8805 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/mediation/gma_mediation_imobile/example/android/app/src/profile/AndroidManifest.xml b/packages/mediation/gma_mediation_imobile/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 000000000..399f6981d --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/mediation/gma_mediation_imobile/example/android/build.gradle.kts b/packages/mediation/gma_mediation_imobile/example/android/build.gradle.kts new file mode 100644 index 000000000..2417aee25 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/android/build.gradle.kts @@ -0,0 +1,20 @@ +allprojects { + repositories { + google() + mavenCentral() + maven { url = uri("https://imobile.github.io/adnw-sdk-android") } + } +} + +val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() + +rootProject.layout.buildDirectory.value(newBuildDir) + +subprojects { + val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) + project.layout.buildDirectory.value(newSubprojectBuildDir) +} + +subprojects { project.evaluationDependsOn(":app") } + +tasks.register("clean") { delete(rootProject.layout.buildDirectory) } diff --git a/packages/mediation/gma_mediation_imobile/example/android/gma_mediation_imobile_example_android.iml b/packages/mediation/gma_mediation_imobile/example/android/gma_mediation_imobile_example_android.iml new file mode 100644 index 000000000..18999696a --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/android/gma_mediation_imobile_example_android.iml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_imobile/example/android/gradle.properties b/packages/mediation/gma_mediation_imobile/example/android/gradle.properties new file mode 100644 index 000000000..f018a6181 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true +android.enableJetifier=true diff --git a/packages/mediation/gma_mediation_imobile/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/mediation/gma_mediation_imobile/example/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..afa1e8eb0 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip diff --git a/packages/mediation/gma_mediation_imobile/example/android/gradlew b/packages/mediation/gma_mediation_imobile/example/android/gradlew new file mode 100755 index 000000000..9d82f7891 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/android/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/packages/mediation/gma_mediation_imobile/example/android/gradlew.bat b/packages/mediation/gma_mediation_imobile/example/android/gradlew.bat new file mode 100644 index 000000000..aec99730b --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/android/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/packages/mediation/gma_mediation_imobile/example/android/settings.gradle.kts b/packages/mediation/gma_mediation_imobile/example/android/settings.gradle.kts new file mode 100644 index 000000000..b58f94546 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/android/settings.gradle.kts @@ -0,0 +1,25 @@ +pluginManagement { + val flutterSdkPath = run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("dev.flutter.flutter-plugin-loader") version "1.0.0" + id("com.android.application") version "8.7.0" apply false + id("org.jetbrains.kotlin.android") version "1.8.22" apply false +} + +include(":app") diff --git a/packages/mediation/gma_mediation_imobile/example/gma_mediation_imobile_example.iml b/packages/mediation/gma_mediation_imobile/example/gma_mediation_imobile_example.iml new file mode 100644 index 000000000..f66303d53 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/gma_mediation_imobile_example.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Flutter/AppFrameworkInfo.plist b/packages/mediation/gma_mediation_imobile/example/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 000000000..7c5696400 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 12.0 + + diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Flutter/Debug.xcconfig b/packages/mediation/gma_mediation_imobile/example/ios/Flutter/Debug.xcconfig new file mode 100644 index 000000000..592ceee85 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Flutter/Release.xcconfig b/packages/mediation/gma_mediation_imobile/example/ios/Flutter/Release.xcconfig new file mode 100644 index 000000000..592ceee85 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcodeproj/project.pbxproj b/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..ad1b7cd37 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,616 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationImobileExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationImobileExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationImobileExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationImobileExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationImobileExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationImobileExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..919434a62 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 000000000..15cada483 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..1d526a16e --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/AppDelegate.swift b/packages/mediation/gma_mediation_imobile/example/ios/Runner/AppDelegate.swift new file mode 100644 index 000000000..626664468 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Flutter +import UIKit + +@main +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..d36b1fab2 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 000000000..dc9ada472 Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 000000000..7353c41ec Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 000000000..797d452e4 Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 000000000..6ed2d933e Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 000000000..4cd7b0099 Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 000000000..fe730945a Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 000000000..321773cd8 Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 000000000..797d452e4 Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 000000000..502f463a9 Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 000000000..0ec303439 Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 000000000..0ec303439 Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 000000000..e9f5fea27 Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 000000000..84ac32ae7 Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 000000000..8953cba09 Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 000000000..0467bf12a Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 000000000..0bedcf2fd --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 000000000..9da19eaca Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 000000000..9da19eaca Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 000000000..9da19eaca Binary files /dev/null and b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 000000000..89c2725b7 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 000000000..f2e259c7c --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Base.lproj/Main.storyboard b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 000000000..f3c28516f --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Info.plist b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Info.plist new file mode 100644 index 000000000..3fb255807 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Gma Mediation Imobile + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + gma_mediation_imobile_example + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/packages/mediation/gma_mediation_imobile/example/ios/Runner/Runner-Bridging-Header.h b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 000000000..308a2a560 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/packages/mediation/gma_mediation_imobile/example/lib/main.dart b/packages/mediation/gma_mediation_imobile/example/lib/main.dart new file mode 100644 index 000000000..ea02decb7 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/lib/main.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatefulWidget { + const MyApp({super.key}); + + @override + State createState() => _MyAppState(); +} + +class _MyAppState extends State { + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + appBar: AppBar(title: const Text('Plugin example app')), + body: const Center(child: Text('Test app')), + ), + ); + } +} diff --git a/packages/mediation/gma_mediation_imobile/example/pubspec.lock b/packages/mediation/gma_mediation_imobile/example/pubspec.lock new file mode 100644 index 000000000..9062495ad --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/pubspec.lock @@ -0,0 +1,323 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 + url: "https://pub.dev" + source: hosted + version: "2.12.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + characters: + dependency: transitive + description: + name: characters + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" + source: hosted + version: "1.0.8" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" + url: "https://pub.dev" + source: hosted + version: "1.3.2" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_driver: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + fuchsia_remote_debug_protocol: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + gma_mediation_imobile: + dependency: "direct main" + description: + path: ".." + relative: true + source: path + version: "1.0.0" + google_mobile_ads: + dependency: transitive + description: + name: google_mobile_ads + sha256: "0d4a3744b5e8ed1b8be6a1b452d309f811688855a497c6113fc4400f922db603" + url: "https://pub.dev" + source: hosted + version: "5.3.1" + integration_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec + url: "https://pub.dev" + source: hosted + version: "10.0.8" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + url: "https://pub.dev" + source: hosted + version: "3.0.9" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + lints: + dependency: transitive + description: + name: lints + sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + url: "https://pub.dev" + source: hosted + version: "5.1.1" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + url: "https://pub.dev" + source: hosted + version: "1.16.0" + path: + dependency: transitive + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + platform: + dependency: transitive + description: + name: platform + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" + url: "https://pub.dev" + source: hosted + version: "3.1.6" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + process: + dependency: transitive + description: + name: process + sha256: "107d8be718f120bbba9dcd1e95e3bd325b1b4a4f07db64154635ba03f2567a0d" + url: "https://pub.dev" + source: hosted + version: "5.0.3" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + url: "https://pub.dev" + source: hosted + version: "1.10.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + sync_http: + dependency: transitive + description: + name: sync_http + sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" + url: "https://pub.dev" + source: hosted + version: "0.3.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test_api: + dependency: transitive + description: + name: test_api + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + url: "https://pub.dev" + source: hosted + version: "0.7.4" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" + url: "https://pub.dev" + source: hosted + version: "14.3.1" + webdriver: + dependency: transitive + description: + name: webdriver + sha256: "3d773670966f02a646319410766d3b5e1037efb7f07cc68f844d5e06cd4d61c8" + url: "https://pub.dev" + source: hosted + version: "3.0.4" + webview_flutter: + dependency: transitive + description: + name: webview_flutter + sha256: "889a0a678e7c793c308c68739996227c9661590605e70b1f6cf6b9a6634f7aec" + url: "https://pub.dev" + source: hosted + version: "4.10.0" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: "512c26ccc5b8a571fd5d13ec994b7509f142ff6faf85835e243dde3538fdc713" + url: "https://pub.dev" + source: hosted + version: "4.3.2" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d + url: "https://pub.dev" + source: hosted + version: "2.10.0" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: d7403ef4f042714c9ee2b26eaac4cadae7394cb0d4e608b1dd850c3ff96bd893 + url: "https://pub.dev" + source: hosted + version: "3.18.2" +sdks: + dart: ">=3.7.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/packages/mediation/gma_mediation_imobile/example/pubspec.yaml b/packages/mediation/gma_mediation_imobile/example/pubspec.yaml new file mode 100644 index 000000000..38ebf52fa --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/example/pubspec.yaml @@ -0,0 +1,86 @@ +name: gma_mediation_imobile_example +description: "Demonstrates how to use the gma_mediation_imobile plugin." +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +environment: + sdk: ^3.7.0 + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + + google_mobile_ads: ^6.0.0 + gma_mediation_imobile: + # When depending on this package from a real application you should use: + # gma_mediation_imobile: ^x.y.z + # See https://dart.dev/tools/pub/dependencies#version-constraints + # The example app is bundled with the plugin so we use a path dependency on + # the parent directory to use the current plugin's version. + path: ../ + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.8 + +dev_dependencies: + integration_test: + sdk: flutter + flutter_test: + sdk: flutter + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^5.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/to/resolution-aware-images + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/to/asset-from-package + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/to/font-from-package diff --git a/packages/mediation/gma_mediation_imobile/gma_mediation_imobile.iml b/packages/mediation/gma_mediation_imobile/gma_mediation_imobile.iml new file mode 100644 index 000000000..27686dd4b --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/gma_mediation_imobile.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_imobile/ios/Classes/GmaMediationimobilePlugin.swift b/packages/mediation/gma_mediation_imobile/ios/Classes/GmaMediationimobilePlugin.swift new file mode 100644 index 000000000..6aaeec58e --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/ios/Classes/GmaMediationimobilePlugin.swift @@ -0,0 +1,23 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import Flutter +import UIKit + +/// Required to link the iOS dependency of the imobile Adapter. +public class GmaMediationimobilePlugin: NSObject, FlutterPlugin { + public static func register(with registrar: FlutterPluginRegistrar) {} + + public func detachFromEngine(for registrar: FlutterPluginRegistrar) {} +} diff --git a/packages/mediation/gma_mediation_imobile/ios/Resources/PrivacyInfo.xcprivacy b/packages/mediation/gma_mediation_imobile/ios/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 000000000..a34b7e2e6 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/ios/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,14 @@ + + + + + NSPrivacyTrackingDomains + + NSPrivacyAccessedAPITypes + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/packages/mediation/gma_mediation_imobile/ios/gma_mediation_imobile.podspec b/packages/mediation/gma_mediation_imobile/ios/gma_mediation_imobile.podspec new file mode 100644 index 000000000..91fb6b737 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/ios/gma_mediation_imobile.podspec @@ -0,0 +1,21 @@ +Pod::Spec.new do |s| + s.name = 'gma_mediation_imobile' + s.version = '1.0.1' + s.summary = 'Google Mobile Ads Mediation of imobile.' + s.description = <<-DESC + Mediation Adapter for imobile to use with Google Mobile Ads. + DESC + s.homepage = 'https://developers.google.com/admob/flutter/mediation/imobile' + s.license = { :file => '../LICENSE' } + s.author = { 'Google LLC' => 'mediation-support@google.com' } + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + s.dependency 'Flutter' + s.dependency 'GoogleMobileAdsMediationIMobile', '~> 2.3.4.2' + s.platform = :ios, '12.0' + s.static_framework = true + + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } + s.swift_version = '5.0' + +end diff --git a/packages/mediation/gma_mediation_imobile/lib/gma_mediation_imobile.dart b/packages/mediation/gma_mediation_imobile/lib/gma_mediation_imobile.dart new file mode 100644 index 000000000..63bfbaa36 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/lib/gma_mediation_imobile.dart @@ -0,0 +1,16 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/// This empty class is needed to allow correct compatibility analysis with host platforms. +class GmaMediationimobile {} diff --git a/packages/mediation/gma_mediation_imobile/pubspec.lock b/packages/mediation/gma_mediation_imobile/pubspec.lock new file mode 100644 index 000000000..e72b0d763 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/pubspec.lock @@ -0,0 +1,261 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 + url: "https://pub.dev" + source: hosted + version: "2.12.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + characters: + dependency: transitive + description: + name: characters + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" + url: "https://pub.dev" + source: hosted + version: "1.3.2" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + google_mobile_ads: + dependency: "direct main" + description: + name: google_mobile_ads + sha256: "0d4a3744b5e8ed1b8be6a1b452d309f811688855a497c6113fc4400f922db603" + url: "https://pub.dev" + source: hosted + version: "5.3.1" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec + url: "https://pub.dev" + source: hosted + version: "10.0.8" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + url: "https://pub.dev" + source: hosted + version: "3.0.9" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + lint: + dependency: "direct dev" + description: + name: lint + sha256: "68d71111816dc7c1de358281e506efe574bb5072eae4a19f8a57484bf96825f5" + url: "https://pub.dev" + source: hosted + version: "2.6.1" + lints: + dependency: transitive + description: + name: lints + sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + url: "https://pub.dev" + source: hosted + version: "5.1.1" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + url: "https://pub.dev" + source: hosted + version: "1.16.0" + path: + dependency: transitive + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + plugin_platform_interface: + dependency: "direct main" + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + url: "https://pub.dev" + source: hosted + version: "1.10.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test_api: + dependency: transitive + description: + name: test_api + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + url: "https://pub.dev" + source: hosted + version: "0.7.4" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" + url: "https://pub.dev" + source: hosted + version: "14.3.1" + webview_flutter: + dependency: transitive + description: + name: webview_flutter + sha256: "889a0a678e7c793c308c68739996227c9661590605e70b1f6cf6b9a6634f7aec" + url: "https://pub.dev" + source: hosted + version: "4.10.0" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: "512c26ccc5b8a571fd5d13ec994b7509f142ff6faf85835e243dde3538fdc713" + url: "https://pub.dev" + source: hosted + version: "4.3.2" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d + url: "https://pub.dev" + source: hosted + version: "2.10.0" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: d7403ef4f042714c9ee2b26eaac4cadae7394cb0d4e608b1dd850c3ff96bd893 + url: "https://pub.dev" + source: hosted + version: "3.18.2" +sdks: + dart: ">=3.7.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/packages/mediation/gma_mediation_imobile/pubspec.yaml b/packages/mediation/gma_mediation_imobile/pubspec.yaml new file mode 100644 index 000000000..e5b6077e6 --- /dev/null +++ b/packages/mediation/gma_mediation_imobile/pubspec.yaml @@ -0,0 +1,26 @@ +name: gma_mediation_imobile +description: 'Mediation Adapter that enables sending ad requests to the imobile + ad network using the google_mobile_ads plugin.' +version: 1.0.1 +environment: + sdk: ^3.7.0 + flutter: '>=3.27.0' +dependencies: + flutter: + sdk: flutter + google_mobile_ads: ^6.0.0 + plugin_platform_interface: ^2.0.2 +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^5.0.0 + lint: ^2.6.1 +flutter: + plugin: + platforms: + android: + package: io.flutter.plugins.googlemobileads.mediation.gma_mediation_imobile + pluginClass: GmaMediationimobilePlugin + ios: + pluginClass: GmaMediationimobilePlugin +repository: https://github.com/googleads/googleads-mobile-flutter/tree/main/packages/mediation/gma_mediation_imobile diff --git a/packages/mediation/gma_mediation_inmobi/CHANGELOG.md b/packages/mediation/gma_mediation_inmobi/CHANGELOG.md index 6fb8bacfd..c339c15af 100644 --- a/packages/mediation/gma_mediation_inmobi/CHANGELOG.md +++ b/packages/mediation/gma_mediation_inmobi/CHANGELOG.md @@ -1,15 +1,18 @@ ## InMobi Flutter Mediation Adapter Changelog -#### Next Version -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.2.0. +#### Version 1.1.1 +* Supports [inMobi Android adapter version 10.8.2.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/inmobi/CHANGELOG.md#version-10820). +* Supports [inMobi iOS adapter version 10.8.2.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/InMobi/CHANGELOG.md#version-10820). +* Built and tested with the Google Mobile Ads Flutter Plugin version 6.0.0. -#### 1.1.0 -* Verified compatibility with InMobi Android adapter version 10.7.5.0. -* Verified compatibility with InMobi iOS adapter version 10.7.5.0. -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. +#### Version 1.1.0 +* iOS plugin is now a static framework. +* Supports [inMobi Android adapter version 10.8.0.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/inmobi/CHANGELOG.md#version-10800). +* Supports [inMobi iOS adapter version 10.8.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/InMobi/CHANGELOG.md#version-10800). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. -#### 1.0.0 +#### Version 1.0.0 * Initial release. -* Verified compatibility with InMobi Android adapter version 10.6.7.1. -* Verified compatibility with InMobi iOS adapter version 10.7.2.0. +* Supports [inMobi Android adapter version 10.6.7.1](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/inmobi/CHANGELOG.md#version-10671). +* Supports [inMobi iOS adapter version 10.7.2.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/InMobi/CHANGELOG.md#version-10720). * Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. diff --git a/packages/mediation/gma_mediation_inmobi/android/build.gradle b/packages/mediation/gma_mediation_inmobi/android/build.gradle index 8d97497cb..14742cec2 100644 --- a/packages/mediation/gma_mediation_inmobi/android/build.gradle +++ b/packages/mediation/gma_mediation_inmobi/android/build.gradle @@ -1,5 +1,5 @@ group 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_inmobi' -version '1.0-SNAPSHOT' +version = "1.1.1" buildscript { ext.kotlin_version = '2.0.21' @@ -24,6 +24,10 @@ allprojects { apply plugin: 'com.android.library' apply plugin: 'kotlin-android' +ext { + stringVersion = "10.8.2.0" +} + android { if (project.android.hasProperty("namespace")) { namespace 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_inmobi' @@ -46,11 +50,11 @@ android { } defaultConfig { - minSdkVersion 21 + minSdkVersion 23 } dependencies { - implementation 'com.google.ads.mediation:inmobi:10.7.5.0' + implementation "com.google.ads.mediation:inmobi:$stringVersion" testImplementation 'org.jetbrains.kotlin:kotlin-test' testImplementation 'org.mockito:mockito-core:5.0.0' } diff --git a/packages/mediation/gma_mediation_inmobi/example/android/app/build.gradle b/packages/mediation/gma_mediation_inmobi/example/android/app/build.gradle index e7d505edc..b716ee693 100644 --- a/packages/mediation/gma_mediation_inmobi/example/android/app/build.gradle +++ b/packages/mediation/gma_mediation_inmobi/example/android/app/build.gradle @@ -45,7 +45,7 @@ android { applicationId "io.flutter.plugins.googlemobileads.mediation.gma_mediation_inmobi_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion flutter.minSdkVersion + minSdkVersion 23 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/packages/mediation/gma_mediation_inmobi/example/pubspec.yaml b/packages/mediation/gma_mediation_inmobi/example/pubspec.yaml index 0630357ee..1c779abf5 100644 --- a/packages/mediation/gma_mediation_inmobi/example/pubspec.yaml +++ b/packages/mediation/gma_mediation_inmobi/example/pubspec.yaml @@ -5,7 +5,7 @@ description: "Demonstrates how to use the gma_mediation_inmobi plugin." publish_to: 'none' # Remove this line if you wish to publish to pub.dev environment: - sdk: '>=3.3.3 <4.0.0' + sdk: '>=3.6.0 <4.0.0' # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -17,6 +17,7 @@ dependencies: flutter: sdk: flutter + google_mobile_ads: ^6.0.0 gma_mediation_inmobi: # When depending on this package from a real application you should use: # gma_mediation_inmobi: ^x.y.z diff --git a/packages/mediation/gma_mediation_inmobi/ios/Classes/InMobiFlutterMediationExtras.swift b/packages/mediation/gma_mediation_inmobi/ios/Classes/InMobiFlutterMediationExtras.swift index fd78705fc..bb860f9c6 100644 --- a/packages/mediation/gma_mediation_inmobi/ios/Classes/InMobiFlutterMediationExtras.swift +++ b/packages/mediation/gma_mediation_inmobi/ios/Classes/InMobiFlutterMediationExtras.swift @@ -17,14 +17,14 @@ import InMobiAdapter @objc protocol FLTMediationExtras { var extras: NSMutableDictionary { get } - func getMediationExtras() -> GADAdNetworkExtras + func getMediationExtras() -> AdNetworkExtras } @objc(InMobiFlutterMediationExtras) -class InMobiFlutterMediationExtras : NSObject, FLTMediationExtras { +class InMobiFlutterMediationExtras: NSObject, FLTMediationExtras { var extras: NSMutableDictionary = [:] - func getMediationExtras() -> GADAdNetworkExtras { + func getMediationExtras() -> AdNetworkExtras { let inMobiExtras = GADInMobiExtras() if let ageGroup = extras["ageGroup"] as? Int { switch ageGroup { @@ -45,7 +45,7 @@ class InMobiFlutterMediationExtras : NSObject, FLTMediationExtras { case 7: inMobiExtras.ageGroup = IMSDKAgeGroup.above65 default: - break; + break } } if let educationType = extras["educationType"] as? Int { @@ -57,7 +57,7 @@ class InMobiFlutterMediationExtras : NSObject, FLTMediationExtras { case 2: inMobiExtras.educationType = IMSDKEducation.postGraduateOrAbove default: - break; + break } } if let logLevel = extras["logLevel"] as? Int { @@ -69,7 +69,7 @@ class InMobiFlutterMediationExtras : NSObject, FLTMediationExtras { case 2: inMobiExtras.logLevel = IMSDKLogLevel.error default: - break; + break } } diff --git a/packages/mediation/gma_mediation_inmobi/ios/gma_mediation_inmobi.podspec b/packages/mediation/gma_mediation_inmobi/ios/gma_mediation_inmobi.podspec index 4d25017d8..77e365d84 100644 --- a/packages/mediation/gma_mediation_inmobi/ios/gma_mediation_inmobi.podspec +++ b/packages/mediation/gma_mediation_inmobi/ios/gma_mediation_inmobi.podspec @@ -4,7 +4,7 @@ # Pod::Spec.new do |s| s.name = 'gma_mediation_inmobi' - s.version = '1.1.0' + s.version = '1.1.1' s.summary = 'Google Mobile Ads Mediation of InMobi.' s.description = <<-DESC Mediation Adapter for InMobi to use with Google Mobile Ads. @@ -16,7 +16,7 @@ Mediation Adapter for InMobi to use with Google Mobile Ads. s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'GoogleMobileAdsMediationInMobi', '~> 10.7.5.0' + s.dependency 'GoogleMobileAdsMediationInMobi', '~> 10.8.2.0' s.platform = :ios, '12.0' s.static_framework = true diff --git a/packages/mediation/gma_mediation_inmobi/pubspec.yaml b/packages/mediation/gma_mediation_inmobi/pubspec.yaml index 0b53b66e4..7c1353ae9 100644 --- a/packages/mediation/gma_mediation_inmobi/pubspec.yaml +++ b/packages/mediation/gma_mediation_inmobi/pubspec.yaml @@ -1,16 +1,16 @@ name: gma_mediation_inmobi description: "Mediation Adapter that enables sending ad requests to the InMobi ad network using the google_mobile_ads plugin." -version: 1.1.0 +version: 1.1.1 repository: https://github.com/googleads/googleads-mobile-flutter/tree/main/packages/mediation/gma_mediation_inmobi environment: - sdk: '>=3.3.3 <4.0.0' - flutter: '>=3.3.0' + sdk: '>=3.6.0 <4.0.0' + flutter: '>=3.27.0' dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 plugin_platform_interface: ^2.0.2 dev_dependencies: diff --git a/packages/mediation/gma_mediation_ironsource/CHANGELOG.md b/packages/mediation/gma_mediation_ironsource/CHANGELOG.md index 3220816cb..a077b133b 100644 --- a/packages/mediation/gma_mediation_ironsource/CHANGELOG.md +++ b/packages/mediation/gma_mediation_ironsource/CHANGELOG.md @@ -1,15 +1,23 @@ ## ironSource Flutter Mediation Adapter Changelog -#### Next Version -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.2.0. +#### 1.3.0 +- Supports [ironSource Android adapter version 8.8.0.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/ironsource/CHANGELOG.md#version-8800). +- Supports [ironSource iOS adapter version 8.8.0.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/IronSource/CHANGELOG.md#version-88000). +* Built and tested with the Google Mobile Ads Flutter Plugin version 6.0.0. + +#### 1.2.0 +- Supports [ironSource Android adapter version 8.7.0.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/ironsource/CHANGELOG.md#version-8700). +- Supports [ironSource iOS adapter version 8.6.1.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/IronSource/CHANGELOG.md#version-86100). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. #### 1.1.0 -* Verified compatibility with ironSource Android adapter version 8.2.1.0 -* Verified compatibility with ironSource iOS adapter version 8.2.0.0.0 -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. +* iOS plugin is now a static framework. +- Supports [ironSource Android adapter version 8.6.1.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/ironsource/CHANGELOG.md#version-8610). +- Supports [ironSource iOS adapter version 8.6.0.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/IronSource/CHANGELOG.md#version-86000). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. #### 1.0.0 * Initial release. -* Verified compatibility with ironSource Android adapter version 8.0.0.0 -* Verified compatibility with ironSource iOS adapter version 8.0.0.0.0 +- Supports [ironSource Android adapter version 8.0.0.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/ironsource/CHANGELOG.md#version-8000). +- Supports [ironSource iOS adapter version 8.0.0.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/IronSource/CHANGELOG.md#version-80000). * Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. diff --git a/packages/mediation/gma_mediation_ironsource/android/build.gradle b/packages/mediation/gma_mediation_ironsource/android/build.gradle index 5396c9654..50046f547 100644 --- a/packages/mediation/gma_mediation_ironsource/android/build.gradle +++ b/packages/mediation/gma_mediation_ironsource/android/build.gradle @@ -1,5 +1,5 @@ group 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_ironsource' -version '1.0-SNAPSHOT' +version = "1.3.0" buildscript { ext.kotlin_version = '2.0.21' @@ -27,6 +27,10 @@ allprojects { apply plugin: 'com.android.library' apply plugin: 'kotlin-android' +ext { + stringVersion = "8.8.0.0" +} + android { if (project.android.hasProperty("namespace")) { namespace 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_ironsource' @@ -49,11 +53,11 @@ android { } defaultConfig { - minSdkVersion 21 + minSdkVersion 23 } dependencies { - implementation 'com.google.ads.mediation:ironsource:8.2.1.0' + implementation "com.google.ads.mediation:ironsource:$stringVersion" testImplementation 'junit:junit:4.13.2' testImplementation 'androidx.test:core:1.5.0' testImplementation 'androidx.test:core-ktx:1.5.0' diff --git a/packages/mediation/gma_mediation_ironsource/example/android/app/build.gradle b/packages/mediation/gma_mediation_ironsource/example/android/app/build.gradle index 3085c707e..f2f2911fe 100644 --- a/packages/mediation/gma_mediation_ironsource/example/android/app/build.gradle +++ b/packages/mediation/gma_mediation_ironsource/example/android/app/build.gradle @@ -45,7 +45,7 @@ android { applicationId "io.flutter.plugins.googlemobileads.mediation.gma_mediation_ironsource_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion flutter.minSdkVersion + minSdkVersion 23 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/packages/mediation/gma_mediation_ironsource/example/ios/Flutter/AppFrameworkInfo.plist b/packages/mediation/gma_mediation_ironsource/example/ios/Flutter/AppFrameworkInfo.plist index 7c5696400..1dc6cf765 100644 --- a/packages/mediation/gma_mediation_ironsource/example/ios/Flutter/AppFrameworkInfo.plist +++ b/packages/mediation/gma_mediation_ironsource/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/packages/mediation/gma_mediation_ironsource/example/ios/Podfile b/packages/mediation/gma_mediation_ironsource/example/ios/Podfile index 38b28ff0d..b2d735017 100644 --- a/packages/mediation/gma_mediation_ironsource/example/ios/Podfile +++ b/packages/mediation/gma_mediation_ironsource/example/ios/Podfile @@ -1,5 +1,4 @@ -# Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/packages/mediation/gma_mediation_ironsource/example/ios/Runner.xcodeproj/project.pbxproj b/packages/mediation/gma_mediation_ironsource/example/ios/Runner.xcodeproj/project.pbxproj index ec226693b..11e0fb54b 100644 --- a/packages/mediation/gma_mediation_ironsource/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/mediation/gma_mediation_ironsource/example/ios/Runner.xcodeproj/project.pbxproj @@ -362,7 +362,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -488,7 +488,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -539,7 +539,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/packages/mediation/gma_mediation_ironsource/example/pubspec.yaml b/packages/mediation/gma_mediation_ironsource/example/pubspec.yaml index ccfa24bce..37fd6ab76 100644 --- a/packages/mediation/gma_mediation_ironsource/example/pubspec.yaml +++ b/packages/mediation/gma_mediation_ironsource/example/pubspec.yaml @@ -5,7 +5,7 @@ description: "Demonstrates how to use the gma_mediation_ironsource plugin." publish_to: 'none' # Remove this line if you wish to publish to pub.dev environment: - sdk: '>=3.3.1 <4.0.0' + sdk: '>=3.6.0 <4.0.0' # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -17,6 +17,7 @@ dependencies: flutter: sdk: flutter + google_mobile_ads: ^6.0.0 gma_mediation_ironsource: # When depending on this package from a real application you should use: # gma_mediation_ironsource: ^x.y.z diff --git a/packages/mediation/gma_mediation_ironsource/ios/gma_mediation_ironsource.podspec b/packages/mediation/gma_mediation_ironsource/ios/gma_mediation_ironsource.podspec index 87370434f..c913bca91 100644 --- a/packages/mediation/gma_mediation_ironsource/ios/gma_mediation_ironsource.podspec +++ b/packages/mediation/gma_mediation_ironsource/ios/gma_mediation_ironsource.podspec @@ -4,7 +4,7 @@ # Pod::Spec.new do |s| s.name = 'gma_mediation_ironsource' - s.version = '1.2.0' + s.version = '1.3.0' s.summary = 'Google Mobile Ads Mediation of ironSource.' s.description = <<-DESC Mediation Adapter for ironSource to use with Google Mobile Ads. @@ -16,8 +16,8 @@ Mediation Adapter for ironSource to use with Google Mobile Ads. s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'GoogleMobileAdsMediationIronSource', '~>8.2.0.0.0' - s.platform = :ios, '12.0' + s.dependency 'GoogleMobileAdsMediationIronSource', '~>8.8.0.0.0' + s.platform = :ios, '13.0' s.static_framework = true # Flutter.framework does not contain a i386 slice. diff --git a/packages/mediation/gma_mediation_ironsource/pubspec.yaml b/packages/mediation/gma_mediation_ironsource/pubspec.yaml index 54735b1e3..1ad07721a 100644 --- a/packages/mediation/gma_mediation_ironsource/pubspec.yaml +++ b/packages/mediation/gma_mediation_ironsource/pubspec.yaml @@ -1,16 +1,16 @@ name: gma_mediation_ironsource description: "Mediation Adapter that enables sending ad requests to the ironSource ad network using the google_mobile_ads plugin." -version: 1.1.0 +version: 1.3.0 repository: https://github.com/googleads/googleads-mobile-flutter/tree/main/packages/mediation/gma_mediation_ironsource environment: - sdk: '>=3.2.5 <4.0.0' - flutter: '>=3.3.0' + sdk: '>=3.6.0 <4.0.0' + flutter: '>=3.27.0' dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 plugin_platform_interface: ^2.0.2 dev_dependencies: diff --git a/packages/mediation/gma_mediation_liftoffmonetize/CHANGELOG.md b/packages/mediation/gma_mediation_liftoffmonetize/CHANGELOG.md index eb9adf92e..8d25f6808 100644 --- a/packages/mediation/gma_mediation_liftoffmonetize/CHANGELOG.md +++ b/packages/mediation/gma_mediation_liftoffmonetize/CHANGELOG.md @@ -1,15 +1,18 @@ ## Liftoff Monetize Flutter Mediation Adapter Changelog -#### Next Version -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.2.0. +#### Version 1.1.1 +* Supports [Liftoff Monetize Android adapter version 7.4.3.1](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/liftoffmonetize/CHANGELOG.md#version-7431). +* Supports [Liftoff Monetize iOS adapter version 7.4.5.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/LiftoffMonetize/CHANGELOG.md#version-7450). +* Built and tested with the Google Mobile Ads Flutter Plugin version 6.0.0. #### Version 1.1.0 -- Verified compatibility with Liftoff Monetize Android adapter version 7.4.0.1 -- Verified compatibility with LiftoffMonetize iOS adapter version 7.4.0.1 -- Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. +* iOS plugin is now a static framework. +* Supports [Liftoff Monetize Android adapter version 7.4.3.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/liftoffmonetize/CHANGELOG.md#version-7430). +* Supports [Liftoff Monetize iOS adapter version 7.4.4.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/LiftoffMonetize/CHANGELOG.md#version-7440). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. #### Version 1.0.0 -- Initial release. -- Verified compatibility with Liftoff Monetize Android adapter version 7.3.1.0 -- Verified compatibility with LiftoffMonetize iOS adapter version 7.3.2.0 -- Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. \ No newline at end of file +* Initial release. +* Supports [Liftoff Monetize Android adapter version 7.3.1.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/liftoffmonetize/CHANGELOG.md#version-7310). +* Supports [Liftoff Monetize iOS adapter version 7.3.2.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/LiftoffMonetize/CHANGELOG.md#version-7320). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. diff --git a/packages/mediation/gma_mediation_liftoffmonetize/android/build.gradle b/packages/mediation/gma_mediation_liftoffmonetize/android/build.gradle index da6126512..f2e04337d 100644 --- a/packages/mediation/gma_mediation_liftoffmonetize/android/build.gradle +++ b/packages/mediation/gma_mediation_liftoffmonetize/android/build.gradle @@ -1,5 +1,5 @@ group 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_liftoffmonetize' -version '1.0-SNAPSHOT' +version = "1.2.0" buildscript { ext.kotlin_version = '2.0.21' @@ -24,6 +24,10 @@ allprojects { apply plugin: 'com.android.library' apply plugin: 'kotlin-android' +ext { + stringVersion = "7.5.0.0" +} + android { if (project.android.hasProperty("namespace")) { namespace 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_liftoffmonetize' @@ -46,11 +50,11 @@ android { } defaultConfig { - minSdkVersion 21 + minSdkVersion 23 } dependencies { - implementation 'com.google.ads.mediation:vungle:7.4.0.1' + implementation "com.google.ads.mediation:vungle:$stringVersion" testImplementation 'junit:junit:4.13.2' testImplementation 'androidx.test:core:1.5.0' testImplementation 'androidx.test:core-ktx:1.5.0' diff --git a/packages/mediation/gma_mediation_liftoffmonetize/example/android/app/build.gradle b/packages/mediation/gma_mediation_liftoffmonetize/example/android/app/build.gradle index 860988977..236cc3b3c 100644 --- a/packages/mediation/gma_mediation_liftoffmonetize/example/android/app/build.gradle +++ b/packages/mediation/gma_mediation_liftoffmonetize/example/android/app/build.gradle @@ -45,7 +45,7 @@ android { applicationId "io.flutter.plugins.googlemobileads.mediation.gma_mediation_liftoffmonetize_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion flutter.minSdkVersion + minSdkVersion 23 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/packages/mediation/gma_mediation_liftoffmonetize/example/pubspec.yaml b/packages/mediation/gma_mediation_liftoffmonetize/example/pubspec.yaml index 7a365efaf..b4cef4018 100644 --- a/packages/mediation/gma_mediation_liftoffmonetize/example/pubspec.yaml +++ b/packages/mediation/gma_mediation_liftoffmonetize/example/pubspec.yaml @@ -5,7 +5,7 @@ description: "Demonstrates how to use the gma_mediation_liftoffmonetize plugin." publish_to: 'none' # Remove this line if you wish to publish to pub.dev environment: - sdk: '>=3.2.5 <4.0.0' + sdk: '>=3.6.0 <4.0.0' # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -17,7 +17,7 @@ dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.0.0 + google_mobile_ads: ^6.0.0 gma_mediation_liftoffmonetize: # When depending on this package from a real application you should use: # gma_mediation_liftoffmonetize: ^x.y.z diff --git a/packages/mediation/gma_mediation_liftoffmonetize/ios/gma_mediation_liftoffmonetize.podspec b/packages/mediation/gma_mediation_liftoffmonetize/ios/gma_mediation_liftoffmonetize.podspec index a78021742..9c01ec19b 100644 --- a/packages/mediation/gma_mediation_liftoffmonetize/ios/gma_mediation_liftoffmonetize.podspec +++ b/packages/mediation/gma_mediation_liftoffmonetize/ios/gma_mediation_liftoffmonetize.podspec @@ -4,7 +4,7 @@ # Pod::Spec.new do |s| s.name = 'gma_mediation_liftoffmonetize' - s.version = '1.1.0' + s.version = '1.2.0' s.summary = 'Google Mobile Ads Mediation of Liftoff Monetize.' s.description = <<-DESC Mediation Adapter for Liftoff Monetize to use with Google Mobile Ads. @@ -15,7 +15,7 @@ Mediation Adapter for Liftoff Monetize to use with Google Mobile Ads. s.source = { :path => '.' } s.source_files = 'Classes/**/*' s.public_header_files = 'Public/**/*.h' - s.dependency 'GoogleMobileAdsMediationVungle', '~>7.4.0.1' + s.dependency 'GoogleMobileAdsMediationVungle', '~>7.5.0.0' s.dependency 'Flutter' s.platform = :ios, '12.0' s.static_framework = true diff --git a/packages/mediation/gma_mediation_liftoffmonetize/pubspec.yaml b/packages/mediation/gma_mediation_liftoffmonetize/pubspec.yaml index 1fb35694f..fc311bf1d 100644 --- a/packages/mediation/gma_mediation_liftoffmonetize/pubspec.yaml +++ b/packages/mediation/gma_mediation_liftoffmonetize/pubspec.yaml @@ -1,16 +1,16 @@ name: gma_mediation_liftoffmonetize description: "Mediation Adapter that enables sending ad requests to the LiftoffMonetize ad network using the google_mobile_ads plugin." -version: 1.1.0 +version: 1.2.0 repository: https://github.com/googleads/googleads-mobile-flutter/tree/main/packages/mediation/gma_mediation_liftoffmonetize environment: - sdk: '>=3.2.5 <4.0.0' - flutter: '>=3.3.0' + sdk: '>=3.6.0 <4.0.0' + flutter: '>=3.27.0' dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 plugin_platform_interface: ^2.0.2 dev_dependencies: diff --git a/packages/mediation/gma_mediation_line/CHANGELOG.md b/packages/mediation/gma_mediation_line/CHANGELOG.md new file mode 100644 index 000000000..0e46eedf0 --- /dev/null +++ b/packages/mediation/gma_mediation_line/CHANGELOG.md @@ -0,0 +1,17 @@ +## Line Flutter Mediation Adapter Changelog + +#### Version 1.0.2 +- Supports [Line Android adapter version 2.9.20250317.1](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/line/CHANGELOG.md#version-29202503171). +- Supports [Line iOS adapter version 2.9.20241106.3](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Line/CHANGELOG.md#version-29202411063). +- Built and tested with the Google Mobile Ads Flutter Plugin version 6.0.0 + +#### Version 1.0.1 +- Supports [Line Android adapter version 2.9.20250110.1](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/line/CHANGELOG.md#version-29202501101). +- Supports [Line iOS adapter version 2.9.20241106.2](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Line/CHANGELOG.md#version-29202411062). +- Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. + +#### Version 1.0.0 +- Initial release. +- Supports [Line Android adapter version 2.9.20250110.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/line/CHANGELOG.md#version-29202501100). +- Supports [Line iOS adapter version 2.9.20241106.1](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Line/CHANGELOG.md#version-29202411061). +- Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. \ No newline at end of file diff --git a/packages/mediation/gma_mediation_line/LICENSE b/packages/mediation/gma_mediation_line/LICENSE new file mode 100644 index 000000000..e58143fcc --- /dev/null +++ b/packages/mediation/gma_mediation_line/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2024 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/mediation/gma_mediation_line/README.md b/packages/mediation/gma_mediation_line/README.md new file mode 100644 index 000000000..3d2e9f568 --- /dev/null +++ b/packages/mediation/gma_mediation_line/README.md @@ -0,0 +1,31 @@ +# Google Mobile Ads Mediation of Line for Flutter + +[![gma_mediation_line](https://github.com/googleads/googleads-mobile-flutter/actions/workflows/google_mobile_ads.yaml/badge.svg)](https://github.com/googleads/googleads-mobile-flutter/actions/workflows/google_mobile_ads.yaml) + +This repository contains the source code for the Mediation Line Flutter +plugin to be used with the Google Mobile Ads plugin. It enables mediation of the +Line Ad Network through the Google Mobile Ads SDK. + +## Documentation +For instructions on how to use with the google_mobile_ads plugin, refer to the +developer guide for [Line](https://developers.google.com/admob/flutter/mediation/line). + +## Downloads + +See [pub.dev](https://pub.dev/packages/gma_mediation_line/versions) for the +latest releases of the plugin. + +## Suggesting improvements + +To file bugs, make feature requests, or to suggest other improvements, please +use [github's issue tracker](https://github.com/googleads/googleads-mobile-flutter/issues). + + +## Other resources + +* [AdMob help center](https://support.google.com/admob/?hl=en#topic=7383088) +* [Ad Manager help center](https://support.google.com/admanager/?hl=en#topic=7505988) + +## License + +[Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0) \ No newline at end of file diff --git a/packages/mediation/gma_mediation_line/analysis_options.yaml b/packages/mediation/gma_mediation_line/analysis_options.yaml new file mode 100644 index 000000000..fac4bcd12 --- /dev/null +++ b/packages/mediation/gma_mediation_line/analysis_options.yaml @@ -0,0 +1,19 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +include: package:lint/package.yaml + +analyzer: + exclude: + - '**.g.dart' \ No newline at end of file diff --git a/packages/mediation/gma_mediation_line/android/build.gradle b/packages/mediation/gma_mediation_line/android/build.gradle new file mode 100644 index 000000000..ad342a3f0 --- /dev/null +++ b/packages/mediation/gma_mediation_line/android/build.gradle @@ -0,0 +1,73 @@ +group = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_line" +version = "1.0.2" + +buildscript { + ext.kotlin_version = "1.8.22" + repositories { + google() + mavenCentral() + } + + dependencies { + classpath("com.android.tools.build:gradle:8.1.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +apply plugin: "com.android.library" +apply plugin: "kotlin-android" + +ext { + stringVersion = "2.9.20250317.1" +} + +android { + if (project.android.hasProperty("namespace")) { + namespace = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_line" + } + + compileSdk = 34 + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11 + } + + sourceSets { + main.java.srcDirs += "src/main/kotlin" + test.java.srcDirs += "src/test/kotlin" + } + + defaultConfig { + minSdk = 23 + } + + dependencies { + implementation("com.google.ads.mediation:line:$stringVersion") + testImplementation("org.jetbrains.kotlin:kotlin-test") + testImplementation("org.mockito:mockito-core:5.0.0") + } + + testOptions { + unitTests.all { + useJUnitPlatform() + + testLogging { + events "passed", "skipped", "failed", "standardOut", "standardError" + outputs.upToDateWhen {false} + showStandardStreams = true + } + } + } +} diff --git a/packages/mediation/gma_mediation_line/android/gma_mediation_line_android.iml b/packages/mediation/gma_mediation_line/android/gma_mediation_line_android.iml new file mode 100644 index 000000000..e8b9110d5 --- /dev/null +++ b/packages/mediation/gma_mediation_line/android/gma_mediation_line_android.iml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_line/android/settings.gradle b/packages/mediation/gma_mediation_line/android/settings.gradle new file mode 100644 index 000000000..64f251ecd --- /dev/null +++ b/packages/mediation/gma_mediation_line/android/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'gma_mediation_line' diff --git a/packages/mediation/gma_mediation_line/android/src/main/AndroidManifest.xml b/packages/mediation/gma_mediation_line/android/src/main/AndroidManifest.xml new file mode 100644 index 000000000..351e7d53d --- /dev/null +++ b/packages/mediation/gma_mediation_line/android/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + diff --git a/packages/mediation/gma_mediation_line/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_line/GmaMediationLinePlugin.kt b/packages/mediation/gma_mediation_line/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_line/GmaMediationLinePlugin.kt new file mode 100644 index 000000000..af2be82b8 --- /dev/null +++ b/packages/mediation/gma_mediation_line/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_line/GmaMediationLinePlugin.kt @@ -0,0 +1,24 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package io.flutter.plugins.googlemobileads.mediation.gma_mediation_line + +import io.flutter.embedding.engine.plugins.FlutterPlugin + +/** Required to link the Android dependency of the Line Adapter. */ +class GmaMediationLinePlugin : FlutterPlugin { + override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {} + + override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {} +} diff --git a/packages/mediation/gma_mediation_line/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_line/LineFlutterMediationExtras.kt b/packages/mediation/gma_mediation_line/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_line/LineFlutterMediationExtras.kt new file mode 100644 index 000000000..22d3d269f --- /dev/null +++ b/packages/mediation/gma_mediation_line/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_line/LineFlutterMediationExtras.kt @@ -0,0 +1,54 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package io.flutter.plugins.googlemobileads.mediation.gma_mediation_line + +import android.os.Bundle +import android.util.Pair +import androidx.core.os.bundleOf +import com.google.ads.mediation.line.LineExtras +import com.google.ads.mediation.line.LineMediationAdapter +import com.google.android.gms.ads.mediation.MediationExtrasReceiver +import io.flutter.plugins.googlemobileads.FlutterMediationExtras + +class LineFlutterMediationExtras : FlutterMediationExtras() { + private var flutterExtras: Map? = null + + override fun setMediationExtras(extras: MutableMap) { + flutterExtras = extras + } + + override fun getMediationExtras(): Pair, Bundle> { + val extrasMap = flutterExtras + if (extrasMap == null) { + return Pair, Bundle>( + LineMediationAdapter::class.java, + bundleOf(), + ) + } + var extrasBundle = bundleOf() + val isSoundEnabled = extrasMap[ENABLE_AD_SOUND] + if (isSoundEnabled is Boolean) { + extrasBundle = LineExtras(isSoundEnabled).build() + } + return Pair, Bundle>( + LineMediationAdapter::class.java, + extrasBundle, + ) + } + + private companion object { + const val ENABLE_AD_SOUND = "enableAdSound" + } +} diff --git a/packages/mediation/gma_mediation_line/example/README.md b/packages/mediation/gma_mediation_line/example/README.md new file mode 100644 index 000000000..d0382fd2f --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/README.md @@ -0,0 +1,17 @@ +# gma_mediation_line_example + +Learn how to integrate with your app that uses the [google_mobile_ads](https://pub.dev/packages/google_mobile_ads) plugin +by following the [development guide](https://developers.google.com/admob/flutter/mediation/line). + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/packages/mediation/gma_mediation_line/example/analysis_options.yaml b/packages/mediation/gma_mediation_line/example/analysis_options.yaml new file mode 100644 index 000000000..0d2902135 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/mediation/gma_mediation_line/example/android/app/build.gradle b/packages/mediation/gma_mediation_line/example/android/app/build.gradle new file mode 100644 index 000000000..5aacb8a60 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/android/app/build.gradle @@ -0,0 +1,44 @@ +plugins { + id "com.android.application" + id "kotlin-android" + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id "dev.flutter.flutter-gradle-plugin" +} + +android { + namespace = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_line_example" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11 + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_line_example" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = 23 + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.debug + } + } +} + +flutter { + source = "../.." +} diff --git a/packages/mediation/gma_mediation_line/example/android/app/src/debug/AndroidManifest.xml b/packages/mediation/gma_mediation_line/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 000000000..399f6981d --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/mediation/gma_mediation_line/example/android/app/src/main/AndroidManifest.xml b/packages/mediation/gma_mediation_line/example/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..0067df05f --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_line/example/android/app/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_line_example/MainActivity.kt b/packages/mediation/gma_mediation_line/example/android/app/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_line_example/MainActivity.kt new file mode 100644 index 000000000..11b9da886 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/android/app/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_line_example/MainActivity.kt @@ -0,0 +1,5 @@ +package io.flutter.plugins.googlemobileads.mediation.gma_mediation_line_example + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity : FlutterActivity() diff --git a/packages/mediation/gma_mediation_line/example/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 000000000..f74085f3f --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/mediation/gma_mediation_line/example/android/app/src/main/res/drawable/launch_background.xml b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 000000000..304732f88 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/mediation/gma_mediation_line/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..db77bb4b7 Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_line/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..17987b79b Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_line/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..09d439148 Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_line/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..d5f1c8d34 Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_line/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..4d6372eeb Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_line/example/android/app/src/main/res/values-night/styles.xml b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 000000000..06952be74 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/mediation/gma_mediation_line/example/android/app/src/main/res/values/styles.xml b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..cb1ef8805 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/mediation/gma_mediation_line/example/android/app/src/profile/AndroidManifest.xml b/packages/mediation/gma_mediation_line/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 000000000..399f6981d --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/mediation/gma_mediation_line/example/android/build.gradle b/packages/mediation/gma_mediation_line/example/android/build.gradle new file mode 100644 index 000000000..d2ffbffa4 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/android/build.gradle @@ -0,0 +1,18 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = "../build" +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/packages/mediation/gma_mediation_line/example/android/gma_mediation_line_example_android.iml b/packages/mediation/gma_mediation_line/example/android/gma_mediation_line_example_android.iml new file mode 100644 index 000000000..18999696a --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/android/gma_mediation_line_example_android.iml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_line/example/android/gradle.properties b/packages/mediation/gma_mediation_line/example/android/gradle.properties new file mode 100644 index 000000000..259717082 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true +android.enableJetifier=true diff --git a/packages/mediation/gma_mediation_line/example/android/settings.gradle b/packages/mediation/gma_mediation_line/example/android/settings.gradle new file mode 100644 index 000000000..b9e43bd37 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/android/settings.gradle @@ -0,0 +1,25 @@ +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.1.0" apply false + id "org.jetbrains.kotlin.android" version "1.8.22" apply false +} + +include ":app" diff --git a/packages/mediation/gma_mediation_line/example/gma_mediation_line_example.iml b/packages/mediation/gma_mediation_line/example/gma_mediation_line_example.iml new file mode 100644 index 000000000..f66303d53 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/gma_mediation_line_example.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_line/example/ios/Flutter/AppFrameworkInfo.plist b/packages/mediation/gma_mediation_line/example/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 000000000..7c5696400 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 12.0 + + diff --git a/packages/mediation/gma_mediation_line/example/ios/Flutter/Debug.xcconfig b/packages/mediation/gma_mediation_line/example/ios/Flutter/Debug.xcconfig new file mode 100644 index 000000000..592ceee85 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/packages/mediation/gma_mediation_line/example/ios/Flutter/Release.xcconfig b/packages/mediation/gma_mediation_line/example/ios/Flutter/Release.xcconfig new file mode 100644 index 000000000..592ceee85 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner.xcodeproj/project.pbxproj b/packages/mediation/gma_mediation_line/example/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..26c02e461 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,616 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationLineExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationLineExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationLineExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationLineExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationLineExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationLineExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/mediation/gma_mediation_line/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..919434a62 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/mediation/gma_mediation_line/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/mediation/gma_mediation_line/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/mediation/gma_mediation_line/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 000000000..8e3ca5dfe --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/mediation/gma_mediation_line/example/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..1d526a16e --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/mediation/gma_mediation_line/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/mediation/gma_mediation_line/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/AppDelegate.swift b/packages/mediation/gma_mediation_line/example/ios/Runner/AppDelegate.swift new file mode 100644 index 000000000..626664468 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Flutter +import UIKit + +@main +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..d36b1fab2 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 000000000..dc9ada472 Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 000000000..7353c41ec Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 000000000..797d452e4 Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 000000000..6ed2d933e Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 000000000..4cd7b0099 Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 000000000..fe730945a Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 000000000..321773cd8 Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 000000000..797d452e4 Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 000000000..502f463a9 Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 000000000..0ec303439 Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 000000000..0ec303439 Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 000000000..e9f5fea27 Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 000000000..84ac32ae7 Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 000000000..8953cba09 Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 000000000..0467bf12a Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 000000000..0bedcf2fd --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 000000000..9da19eaca Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 000000000..9da19eaca Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 000000000..9da19eaca Binary files /dev/null and b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 000000000..89c2725b7 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/mediation/gma_mediation_line/example/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 000000000..f2e259c7c --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Base.lproj/Main.storyboard b/packages/mediation/gma_mediation_line/example/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 000000000..f3c28516f --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Info.plist b/packages/mediation/gma_mediation_line/example/ios/Runner/Info.plist new file mode 100644 index 000000000..183ffb7ae --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Gma Mediation Line + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + gma_mediation_line_example + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/packages/mediation/gma_mediation_line/example/ios/Runner/Runner-Bridging-Header.h b/packages/mediation/gma_mediation_line/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 000000000..308a2a560 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/packages/mediation/gma_mediation_line/example/lib/main.dart b/packages/mediation/gma_mediation_line/example/lib/main.dart new file mode 100644 index 000000000..ea02decb7 --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/lib/main.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatefulWidget { + const MyApp({super.key}); + + @override + State createState() => _MyAppState(); +} + +class _MyAppState extends State { + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + appBar: AppBar(title: const Text('Plugin example app')), + body: const Center(child: Text('Test app')), + ), + ); + } +} diff --git a/packages/mediation/gma_mediation_line/example/pubspec.lock b/packages/mediation/gma_mediation_line/example/pubspec.lock new file mode 100644 index 000000000..f6195694b --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/pubspec.lock @@ -0,0 +1,323 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" + source: hosted + version: "1.18.0" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" + source: hosted + version: "1.0.8" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + file: + dependency: transitive + description: + name: file + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_driver: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + fuchsia_remote_debug_protocol: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + gma_mediation_line: + dependency: "direct main" + description: + path: ".." + relative: true + source: path + version: "1.0.0" + google_mobile_ads: + dependency: transitive + description: + name: google_mobile_ads + sha256: "4775006383a27a5d86d46f8fb452bfcb17794fc0a46c732979e49a8eb1c8963f" + url: "https://pub.dev" + source: hosted + version: "5.2.0" + integration_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" + url: "https://pub.dev" + source: hosted + version: "10.0.5" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" + url: "https://pub.dev" + source: hosted + version: "3.0.5" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + lints: + dependency: transitive + description: + name: lints + sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + url: "https://pub.dev" + source: hosted + version: "0.12.16+1" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + url: "https://pub.dev" + source: hosted + version: "1.15.0" + path: + dependency: transitive + description: + name: path + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.dev" + source: hosted + version: "1.9.0" + platform: + dependency: transitive + description: + name: platform + sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" + url: "https://pub.dev" + source: hosted + version: "3.1.5" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + process: + dependency: transitive + description: + name: process + sha256: "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32" + url: "https://pub.dev" + source: hosted + version: "5.0.2" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" + source: hosted + version: "1.11.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + sync_http: + dependency: transitive + description: + name: sync_http + sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" + url: "https://pub.dev" + source: hosted + version: "0.3.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" + url: "https://pub.dev" + source: hosted + version: "0.7.2" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" + url: "https://pub.dev" + source: hosted + version: "14.2.5" + webdriver: + dependency: transitive + description: + name: webdriver + sha256: "003d7da9519e1e5f329422b36c4dcdf18d7d2978d1ba099ea4e45ba490ed845e" + url: "https://pub.dev" + source: hosted + version: "3.0.3" + webview_flutter: + dependency: transitive + description: + name: webview_flutter + sha256: ec81f57aa1611f8ebecf1d2259da4ef052281cb5ad624131c93546c79ccc7736 + url: "https://pub.dev" + source: hosted + version: "4.9.0" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: "47a8da40d02befda5b151a26dba71f47df471cddd91dfdb7802d0a87c5442558" + url: "https://pub.dev" + source: hosted + version: "3.16.9" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d + url: "https://pub.dev" + source: hosted + version: "2.10.0" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: b7e92f129482460951d96ef9a46b49db34bd2e1621685de26e9eaafd9674e7eb + url: "https://pub.dev" + source: hosted + version: "3.16.3" +sdks: + dart: ">=3.5.4 <4.0.0" + flutter: ">=3.24.0" diff --git a/packages/mediation/gma_mediation_line/example/pubspec.yaml b/packages/mediation/gma_mediation_line/example/pubspec.yaml new file mode 100644 index 000000000..75e5d659d --- /dev/null +++ b/packages/mediation/gma_mediation_line/example/pubspec.yaml @@ -0,0 +1,86 @@ +name: gma_mediation_line_example +description: "Demonstrates how to use the gma_mediation_line plugin." +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +environment: + sdk: ^3.6.0 + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + + google_mobile_ads: ^6.0.0 + gma_mediation_line: + # When depending on this package from a real application you should use: + # gma_mediation_line: ^x.y.z + # See https://dart.dev/tools/pub/dependencies#version-constraints + # The example app is bundled with the plugin so we use a path dependency on + # the parent directory to use the current plugin's version. + path: ../ + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.8 + +dev_dependencies: + integration_test: + sdk: flutter + flutter_test: + sdk: flutter + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^4.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/to/resolution-aware-images + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/to/asset-from-package + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/to/font-from-package diff --git a/packages/mediation/gma_mediation_line/gma_mediation_line.iml b/packages/mediation/gma_mediation_line/gma_mediation_line.iml new file mode 100644 index 000000000..27686dd4b --- /dev/null +++ b/packages/mediation/gma_mediation_line/gma_mediation_line.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_line/ios/Classes/GmaMediationLinePlugin.swift b/packages/mediation/gma_mediation_line/ios/Classes/GmaMediationLinePlugin.swift new file mode 100644 index 000000000..095a51536 --- /dev/null +++ b/packages/mediation/gma_mediation_line/ios/Classes/GmaMediationLinePlugin.swift @@ -0,0 +1,23 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import Flutter +import UIKit + +/// Required to link the iOS dependency of the Line Adapter. +public class GmaMediationLinePlugin: NSObject, FlutterPlugin { + public static func register(with registrar: FlutterPluginRegistrar) {} + + public func detachFromEngine(for registrar: FlutterPluginRegistrar) {} +} diff --git a/packages/mediation/gma_mediation_line/ios/Classes/LineFlutterMediationExtras.swift b/packages/mediation/gma_mediation_line/ios/Classes/LineFlutterMediationExtras.swift new file mode 100644 index 000000000..195c536e2 --- /dev/null +++ b/packages/mediation/gma_mediation_line/ios/Classes/LineFlutterMediationExtras.swift @@ -0,0 +1,36 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import Foundation +import LineAdapter + +@objc protocol FLTMediationExtras { + var extras: NSMutableDictionary { get } + func getMediationExtras() -> AdNetworkExtras +} + +@objc(GADFLineFlutterMediationExtras) +class LineFlutterMediationExtras: NSObject, FLTMediationExtras { + var extras: NSMutableDictionary = [:] + + func getMediationExtras() -> AdNetworkExtras { + let lineExtras = GADMediationAdapterLineExtras() + if let enableAdSound = extras["enableAdSound"] as? Bool { + lineExtras.adAudio = + enableAdSound + ? GADMediationAdapterLineAdAudio.unmuted : GADMediationAdapterLineAdAudio.muted + } + return lineExtras + } +} diff --git a/packages/mediation/gma_mediation_line/ios/Resources/PrivacyInfo.xcprivacy b/packages/mediation/gma_mediation_line/ios/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 000000000..a34b7e2e6 --- /dev/null +++ b/packages/mediation/gma_mediation_line/ios/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,14 @@ + + + + + NSPrivacyTrackingDomains + + NSPrivacyAccessedAPITypes + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/packages/mediation/gma_mediation_line/ios/gma_mediation_line.podspec b/packages/mediation/gma_mediation_line/ios/gma_mediation_line.podspec new file mode 100644 index 000000000..19620775f --- /dev/null +++ b/packages/mediation/gma_mediation_line/ios/gma_mediation_line.podspec @@ -0,0 +1,21 @@ +Pod::Spec.new do |s| + s.name = 'gma_mediation_line' + s.version = '1.0.2' + s.summary = 'Google Mobile Ads Mediation of Line.' + s.description = <<-DESC + Mediation Adapter for Line to use with Google Mobile Ads. + DESC + s.homepage = 'https://developers.google.com/admob/flutter/mediation/line' + s.license = { :file => '../LICENSE' } + s.author = { 'Google LLC' => 'mediation-support@google.com' } + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + s.dependency 'Flutter' + s.dependency 'GoogleMobileAdsMediationLine', '~>2.9.20241106.3' + s.platform = :ios, '12.0' + s.static_framework = true + + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } + s.swift_version = '5.0' + +end diff --git a/packages/mediation/gma_mediation_line/lib/gma_mediation_line.dart b/packages/mediation/gma_mediation_line/lib/gma_mediation_line.dart new file mode 100644 index 000000000..d69e09cac --- /dev/null +++ b/packages/mediation/gma_mediation_line/lib/gma_mediation_line.dart @@ -0,0 +1,16 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/// This empty class is needed to allow correct compatibility analysis with host platforms. +class GmaMediationLine {} diff --git a/packages/mediation/gma_mediation_line/lib/line_mediation_extras.dart b/packages/mediation/gma_mediation_line/lib/line_mediation_extras.dart new file mode 100644 index 000000000..f736478d1 --- /dev/null +++ b/packages/mediation/gma_mediation_line/lib/line_mediation_extras.dart @@ -0,0 +1,38 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import 'package:google_mobile_ads/google_mobile_ads.dart'; + +/// Extra information sent to the Line adapter through an [AdRequest] or an [AdManagerAdRequest]. +class LineMediationExtras implements MediationExtras { + /// Default constructor with required extras value. + const LineMediationExtras({required this.enableAdSound}); + + final bool enableAdSound; + + @override + String getAndroidClassName() { + return 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_line.LineFlutterMediationExtras'; + } + + @override + String getIOSClassName() { + return 'LineFlutterMediationExtras'; + } + + @override + Map getExtras() { + return {'enableAdSound': enableAdSound}; + } +} diff --git a/packages/mediation/gma_mediation_line/pubspec.lock b/packages/mediation/gma_mediation_line/pubspec.lock new file mode 100644 index 000000000..e2bf2f601 --- /dev/null +++ b/packages/mediation/gma_mediation_line/pubspec.lock @@ -0,0 +1,261 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" + source: hosted + version: "1.18.0" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + google_mobile_ads: + dependency: "direct main" + description: + name: google_mobile_ads + sha256: "4775006383a27a5d86d46f8fb452bfcb17794fc0a46c732979e49a8eb1c8963f" + url: "https://pub.dev" + source: hosted + version: "5.2.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" + url: "https://pub.dev" + source: hosted + version: "10.0.5" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" + url: "https://pub.dev" + source: hosted + version: "3.0.5" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + lint: + dependency: "direct dev" + description: + name: lint + sha256: d758a5211fce7fd3f5e316f804daefecdc34c7e53559716125e6da7388ae8565 + url: "https://pub.dev" + source: hosted + version: "2.3.0" + lints: + dependency: transitive + description: + name: lints + sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + url: "https://pub.dev" + source: hosted + version: "0.12.16+1" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + url: "https://pub.dev" + source: hosted + version: "1.15.0" + path: + dependency: transitive + description: + name: path + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.dev" + source: hosted + version: "1.9.0" + plugin_platform_interface: + dependency: "direct main" + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" + source: hosted + version: "1.11.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" + url: "https://pub.dev" + source: hosted + version: "0.7.2" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" + url: "https://pub.dev" + source: hosted + version: "14.2.5" + webview_flutter: + dependency: transitive + description: + name: webview_flutter + sha256: ec81f57aa1611f8ebecf1d2259da4ef052281cb5ad624131c93546c79ccc7736 + url: "https://pub.dev" + source: hosted + version: "4.9.0" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: "47a8da40d02befda5b151a26dba71f47df471cddd91dfdb7802d0a87c5442558" + url: "https://pub.dev" + source: hosted + version: "3.16.9" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d + url: "https://pub.dev" + source: hosted + version: "2.10.0" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: b7e92f129482460951d96ef9a46b49db34bd2e1621685de26e9eaafd9674e7eb + url: "https://pub.dev" + source: hosted + version: "3.16.3" +sdks: + dart: ">=3.5.4 <4.0.0" + flutter: ">=3.24.0" diff --git a/packages/mediation/gma_mediation_line/pubspec.yaml b/packages/mediation/gma_mediation_line/pubspec.yaml new file mode 100644 index 000000000..bb5f35eba --- /dev/null +++ b/packages/mediation/gma_mediation_line/pubspec.yaml @@ -0,0 +1,26 @@ +name: gma_mediation_line +description: 'Mediation Adapter that enables sending ad requests to the Line + ad network using the google_mobile_ads plugin.' +version: 1.0.2 +environment: + sdk: '>=3.6.0 <4.0.0' + flutter: '>=3.27.0' +dependencies: + flutter: + sdk: flutter + google_mobile_ads: ^6.0.0 + plugin_platform_interface: ^2.0.2 +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^4.0.0 + lint: ^2.3.0 +flutter: + plugin: + platforms: + android: + package: io.flutter.plugins.googlemobileads.mediation.gma_mediation_line + pluginClass: GmaMediationLinePlugin + ios: + pluginClass: GmaMediationLinePlugin +repository: https://github.com/googleads/googleads-mobile-flutter/tree/main/packages/mediation/gma_mediation_line diff --git a/packages/mediation/gma_mediation_maio/CHANGELOG.md b/packages/mediation/gma_mediation_maio/CHANGELOG.md new file mode 100644 index 000000000..46b044cd2 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/CHANGELOG.md @@ -0,0 +1,12 @@ +## maio Flutter Mediation Adapter Changelog + +#### Version 1.0.1 +- Supports [maio Android adapter version 2.0.3.1](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/maio/CHANGELOG.md#version-2031). +- Supports [maio iOS adapter version 2.1.6.1](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Maio/CHANGELOG.md#version-2161). +- Built and tested with the Google Mobile Ads Flutter Plugin version 6.0.0. + +#### Version 1.0.0 +- Initial release. +- Supports [maio Android adapter version 2.0.3.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/maio/CHANGELOG.md#version-2030). +- Supports [maio iOS adapter version 2.1.6.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Maio/CHANGELOG.md#version-2160). +- Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. diff --git a/packages/mediation/gma_mediation_maio/LICENSE b/packages/mediation/gma_mediation_maio/LICENSE new file mode 100644 index 000000000..e58143fcc --- /dev/null +++ b/packages/mediation/gma_mediation_maio/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2024 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/mediation/gma_mediation_maio/README.md b/packages/mediation/gma_mediation_maio/README.md new file mode 100644 index 000000000..2bc0b1503 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/README.md @@ -0,0 +1,31 @@ +# Google Mobile Ads Mediation of maio for Flutter + +[![gma_mediation_maio](https://github.com/googleads/googleads-mobile-flutter/actions/workflows/google_mobile_ads.yaml/badge.svg)](https://github.com/googleads/googleads-mobile-flutter/actions/workflows/google_mobile_ads.yaml) + +This repository contains the source code for the Mediation maio Flutter +plugin to be used with the Google Mobile Ads plugin. It enables mediation of the +maio Ad Network through the Google Mobile Ads SDK. + +## Documentation +For instructions on how to use with the google_mobile_ads plugin, refer to the +developer guide for [maio](https://developers.google.com/admob/flutter/mediation/maio). + +## Downloads + +See [pub.dev](https://pub.dev/packages/gma_mediation_maio/versions) for the +latest releases of the plugin. + +## Suggesting improvements + +To file bugs, make feature requests, or to suggest other improvements, please +use [github's issue tracker](https://github.com/googleads/googleads-mobile-flutter/issues). + + +## Other resources + +* [AdMob help center](https://support.google.com/admob/?hl=en#topic=7383088) +* [Ad Manager help center](https://support.google.com/admanager/?hl=en#topic=7505988) + +## License + +[Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0) \ No newline at end of file diff --git a/packages/mediation/gma_mediation_maio/analysis_options.yaml b/packages/mediation/gma_mediation_maio/analysis_options.yaml new file mode 100644 index 000000000..632d08c98 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/analysis_options.yaml @@ -0,0 +1,19 @@ +# Copyright 2025 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +include: package:lint/package.yaml + +analyzer: + exclude: + - '**.g.dart' \ No newline at end of file diff --git a/packages/mediation/gma_mediation_maio/android/build.gradle b/packages/mediation/gma_mediation_maio/android/build.gradle new file mode 100644 index 000000000..718b6d51c --- /dev/null +++ b/packages/mediation/gma_mediation_maio/android/build.gradle @@ -0,0 +1,71 @@ +group = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_maio" +version = "1.0.1" + +buildscript { + ext.kotlin_version = "1.8.22" + repositories { + google() + mavenCentral() + } + + dependencies { + classpath("com.android.tools.build:gradle:8.7.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +apply plugin: "com.android.library" +apply plugin: "kotlin-android" + +ext { + stringVersion = "2.0.3.1" +} + +android { + namespace = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_maio" + + compileSdk = 35 + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11 + } + + sourceSets { + main.java.srcDirs += "src/main/kotlin" + test.java.srcDirs += "src/test/kotlin" + } + + defaultConfig { + minSdk = 23 + } + + dependencies { + implementation("com.google.ads.mediation:maio:$stringVersion") + testImplementation("org.jetbrains.kotlin:kotlin-test") + testImplementation("org.mockito:mockito-core:5.0.0") + } + + testOptions { + unitTests.all { + useJUnitPlatform() + + testLogging { + events "passed", "skipped", "failed", "standardOut", "standardError" + outputs.upToDateWhen {false} + showStandardStreams = true + } + } + } +} diff --git a/packages/mediation/gma_mediation_maio/android/gma_mediation_maio_android.iml b/packages/mediation/gma_mediation_maio/android/gma_mediation_maio_android.iml new file mode 100644 index 000000000..e8b9110d5 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/android/gma_mediation_maio_android.iml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_maio/android/settings.gradle b/packages/mediation/gma_mediation_maio/android/settings.gradle new file mode 100644 index 000000000..79d154e90 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/android/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'gma_mediation_maio' diff --git a/packages/mediation/gma_mediation_maio/android/src/main/AndroidManifest.xml b/packages/mediation/gma_mediation_maio/android/src/main/AndroidManifest.xml new file mode 100644 index 000000000..8a79eb1fb --- /dev/null +++ b/packages/mediation/gma_mediation_maio/android/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + diff --git a/packages/mediation/gma_mediation_maio/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_maio/GmaMediationmaioPlugin.kt b/packages/mediation/gma_mediation_maio/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_maio/GmaMediationmaioPlugin.kt new file mode 100644 index 000000000..1c7b2c087 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_maio/GmaMediationmaioPlugin.kt @@ -0,0 +1,24 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package io.flutter.plugins.googlemobileads.mediation.gma_mediation_maio + +import io.flutter.embedding.engine.plugins.FlutterPlugin + +/** Required to link the Android dependency of the maio Adapter. */ +class GmaMediationmaioPlugin : FlutterPlugin { + override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {} + + override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {} +} diff --git a/packages/mediation/gma_mediation_maio/example/README.md b/packages/mediation/gma_mediation_maio/example/README.md new file mode 100644 index 000000000..be0aadd37 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/README.md @@ -0,0 +1,17 @@ +# gma_mediation_maio_example + +Learn how to integrate with your app that uses the [google_mobile_ads](https://pub.dev/packages/google_mobile_ads) plugin +by following the [development guide](https://developers.google.com/admob/flutter/mediation/maio). + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/packages/mediation/gma_mediation_maio/example/analysis_options.yaml b/packages/mediation/gma_mediation_maio/example/analysis_options.yaml new file mode 100644 index 000000000..0d2902135 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/mediation/gma_mediation_maio/example/android/app/build.gradle.kts b/packages/mediation/gma_mediation_maio/example/android/app/build.gradle.kts new file mode 100644 index 000000000..6c545eb71 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/android/app/build.gradle.kts @@ -0,0 +1,41 @@ +plugins { + id("com.android.application") + id("kotlin-android") + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("dev.flutter.flutter-gradle-plugin") +} + +android { + namespace = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_maio_example" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + + kotlinOptions { jvmTarget = JavaVersion.VERSION_11.toString() } + + defaultConfig { + // TODO: Specify your own unique Application ID + // (https://developer.android.com/studio/build/application-id.html). + applicationId = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_maio_example" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = 23 + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.getByName("debug") + } + } +} + +flutter { source = "../.." } diff --git a/packages/mediation/gma_mediation_maio/example/android/app/src/debug/AndroidManifest.xml b/packages/mediation/gma_mediation_maio/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 000000000..399f6981d --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/mediation/gma_mediation_maio/example/android/app/src/main/AndroidManifest.xml b/packages/mediation/gma_mediation_maio/example/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..ac35f6e2b --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_maio/example/android/app/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_maio_example/MainActivity.kt b/packages/mediation/gma_mediation_maio/example/android/app/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_maio_example/MainActivity.kt new file mode 100644 index 000000000..590c3012b --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/android/app/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_maio_example/MainActivity.kt @@ -0,0 +1,5 @@ +package io.flutter.plugins.googlemobileads.mediation.gma_mediation_maio_example + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity : FlutterActivity() diff --git a/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 000000000..f74085f3f --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/drawable/launch_background.xml b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 000000000..304732f88 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..db77bb4b7 Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..17987b79b Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..09d439148 Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..d5f1c8d34 Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..4d6372eeb Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/values-night/styles.xml b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 000000000..06952be74 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/values/styles.xml b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..cb1ef8805 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/mediation/gma_mediation_maio/example/android/app/src/profile/AndroidManifest.xml b/packages/mediation/gma_mediation_maio/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 000000000..399f6981d --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/mediation/gma_mediation_maio/example/android/build.gradle.kts b/packages/mediation/gma_mediation_maio/example/android/build.gradle.kts new file mode 100644 index 000000000..893d07262 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/android/build.gradle.kts @@ -0,0 +1,20 @@ +allprojects { + repositories { + google() + mavenCentral() + maven { url = uri("https://imobile-maio.github.io/maven") } + } +} + +val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() + +rootProject.layout.buildDirectory.value(newBuildDir) + +subprojects { + val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) + project.layout.buildDirectory.value(newSubprojectBuildDir) +} + +subprojects { project.evaluationDependsOn(":app") } + +tasks.register("clean") { delete(rootProject.layout.buildDirectory) } diff --git a/packages/mediation/gma_mediation_maio/example/android/gma_mediation_maio_example_android.iml b/packages/mediation/gma_mediation_maio/example/android/gma_mediation_maio_example_android.iml new file mode 100644 index 000000000..18999696a --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/android/gma_mediation_maio_example_android.iml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_maio/example/android/gradle.properties b/packages/mediation/gma_mediation_maio/example/android/gradle.properties new file mode 100644 index 000000000..f018a6181 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true +android.enableJetifier=true diff --git a/packages/mediation/gma_mediation_maio/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/mediation/gma_mediation_maio/example/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..afa1e8eb0 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip diff --git a/packages/mediation/gma_mediation_maio/example/android/gradlew b/packages/mediation/gma_mediation_maio/example/android/gradlew new file mode 100755 index 000000000..9d82f7891 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/android/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/packages/mediation/gma_mediation_maio/example/android/gradlew.bat b/packages/mediation/gma_mediation_maio/example/android/gradlew.bat new file mode 100644 index 000000000..aec99730b --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/android/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/packages/mediation/gma_mediation_maio/example/android/settings.gradle.kts b/packages/mediation/gma_mediation_maio/example/android/settings.gradle.kts new file mode 100644 index 000000000..b58f94546 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/android/settings.gradle.kts @@ -0,0 +1,25 @@ +pluginManagement { + val flutterSdkPath = run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("dev.flutter.flutter-plugin-loader") version "1.0.0" + id("com.android.application") version "8.7.0" apply false + id("org.jetbrains.kotlin.android") version "1.8.22" apply false +} + +include(":app") diff --git a/packages/mediation/gma_mediation_maio/example/gma_mediation_maio_example.iml b/packages/mediation/gma_mediation_maio/example/gma_mediation_maio_example.iml new file mode 100644 index 000000000..f66303d53 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/gma_mediation_maio_example.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_maio/example/ios/Flutter/AppFrameworkInfo.plist b/packages/mediation/gma_mediation_maio/example/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 000000000..7c5696400 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 12.0 + + diff --git a/packages/mediation/gma_mediation_maio/example/ios/Flutter/Debug.xcconfig b/packages/mediation/gma_mediation_maio/example/ios/Flutter/Debug.xcconfig new file mode 100644 index 000000000..592ceee85 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/packages/mediation/gma_mediation_maio/example/ios/Flutter/Release.xcconfig b/packages/mediation/gma_mediation_maio/example/ios/Flutter/Release.xcconfig new file mode 100644 index 000000000..592ceee85 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner.xcodeproj/project.pbxproj b/packages/mediation/gma_mediation_maio/example/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..acb7a3ed1 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,616 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMaioExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMaioExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMaioExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMaioExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMaioExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMaioExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/mediation/gma_mediation_maio/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..919434a62 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/mediation/gma_mediation_maio/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/mediation/gma_mediation_maio/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/mediation/gma_mediation_maio/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 000000000..15cada483 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/mediation/gma_mediation_maio/example/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..1d526a16e --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/mediation/gma_mediation_maio/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/mediation/gma_mediation_maio/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/AppDelegate.swift b/packages/mediation/gma_mediation_maio/example/ios/Runner/AppDelegate.swift new file mode 100644 index 000000000..626664468 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Flutter +import UIKit + +@main +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..d36b1fab2 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 000000000..dc9ada472 Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 000000000..7353c41ec Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 000000000..797d452e4 Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 000000000..6ed2d933e Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 000000000..4cd7b0099 Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 000000000..fe730945a Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 000000000..321773cd8 Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 000000000..797d452e4 Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 000000000..502f463a9 Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 000000000..0ec303439 Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 000000000..0ec303439 Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 000000000..e9f5fea27 Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 000000000..84ac32ae7 Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 000000000..8953cba09 Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 000000000..0467bf12a Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 000000000..0bedcf2fd --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 000000000..9da19eaca Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 000000000..9da19eaca Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 000000000..9da19eaca Binary files /dev/null and b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 000000000..89c2725b7 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/mediation/gma_mediation_maio/example/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 000000000..f2e259c7c --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Base.lproj/Main.storyboard b/packages/mediation/gma_mediation_maio/example/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 000000000..f3c28516f --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Info.plist b/packages/mediation/gma_mediation_maio/example/ios/Runner/Info.plist new file mode 100644 index 000000000..8a69f473a --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Gma Mediation Maio + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + gma_mediation_maio_example + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/packages/mediation/gma_mediation_maio/example/ios/Runner/Runner-Bridging-Header.h b/packages/mediation/gma_mediation_maio/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 000000000..308a2a560 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/packages/mediation/gma_mediation_maio/example/lib/main.dart b/packages/mediation/gma_mediation_maio/example/lib/main.dart new file mode 100644 index 000000000..ea02decb7 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/lib/main.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatefulWidget { + const MyApp({super.key}); + + @override + State createState() => _MyAppState(); +} + +class _MyAppState extends State { + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + appBar: AppBar(title: const Text('Plugin example app')), + body: const Center(child: Text('Test app')), + ), + ); + } +} diff --git a/packages/mediation/gma_mediation_maio/example/pubspec.lock b/packages/mediation/gma_mediation_maio/example/pubspec.lock new file mode 100644 index 000000000..4c929ea20 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/pubspec.lock @@ -0,0 +1,323 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 + url: "https://pub.dev" + source: hosted + version: "2.12.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + characters: + dependency: transitive + description: + name: characters + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" + source: hosted + version: "1.0.8" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" + url: "https://pub.dev" + source: hosted + version: "1.3.2" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_driver: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + fuchsia_remote_debug_protocol: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + gma_mediation_maio: + dependency: "direct main" + description: + path: ".." + relative: true + source: path + version: "1.0.0" + google_mobile_ads: + dependency: transitive + description: + name: google_mobile_ads + sha256: "0d4a3744b5e8ed1b8be6a1b452d309f811688855a497c6113fc4400f922db603" + url: "https://pub.dev" + source: hosted + version: "5.3.1" + integration_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec + url: "https://pub.dev" + source: hosted + version: "10.0.8" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + url: "https://pub.dev" + source: hosted + version: "3.0.9" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + lints: + dependency: transitive + description: + name: lints + sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + url: "https://pub.dev" + source: hosted + version: "5.1.1" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + url: "https://pub.dev" + source: hosted + version: "1.16.0" + path: + dependency: transitive + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + platform: + dependency: transitive + description: + name: platform + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" + url: "https://pub.dev" + source: hosted + version: "3.1.6" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + process: + dependency: transitive + description: + name: process + sha256: "107d8be718f120bbba9dcd1e95e3bd325b1b4a4f07db64154635ba03f2567a0d" + url: "https://pub.dev" + source: hosted + version: "5.0.3" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + url: "https://pub.dev" + source: hosted + version: "1.10.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + sync_http: + dependency: transitive + description: + name: sync_http + sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" + url: "https://pub.dev" + source: hosted + version: "0.3.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test_api: + dependency: transitive + description: + name: test_api + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + url: "https://pub.dev" + source: hosted + version: "0.7.4" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" + url: "https://pub.dev" + source: hosted + version: "14.3.1" + webdriver: + dependency: transitive + description: + name: webdriver + sha256: "3d773670966f02a646319410766d3b5e1037efb7f07cc68f844d5e06cd4d61c8" + url: "https://pub.dev" + source: hosted + version: "3.0.4" + webview_flutter: + dependency: transitive + description: + name: webview_flutter + sha256: "889a0a678e7c793c308c68739996227c9661590605e70b1f6cf6b9a6634f7aec" + url: "https://pub.dev" + source: hosted + version: "4.10.0" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: "512c26ccc5b8a571fd5d13ec994b7509f142ff6faf85835e243dde3538fdc713" + url: "https://pub.dev" + source: hosted + version: "4.3.2" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d + url: "https://pub.dev" + source: hosted + version: "2.10.0" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: d7403ef4f042714c9ee2b26eaac4cadae7394cb0d4e608b1dd850c3ff96bd893 + url: "https://pub.dev" + source: hosted + version: "3.18.2" +sdks: + dart: ">=3.7.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/packages/mediation/gma_mediation_maio/example/pubspec.yaml b/packages/mediation/gma_mediation_maio/example/pubspec.yaml new file mode 100644 index 000000000..ca87f21a2 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/example/pubspec.yaml @@ -0,0 +1,86 @@ +name: gma_mediation_maio_example +description: "Demonstrates how to use the gma_mediation_maio plugin." +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +environment: + sdk: ^3.7.0 + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + + google_mobile_ads: ^6.0.0 + gma_mediation_maio: + # When depending on this package from a real application you should use: + # gma_mediation_maio: ^x.y.z + # See https://dart.dev/tools/pub/dependencies#version-constraints + # The example app is bundled with the plugin so we use a path dependency on + # the parent directory to use the current plugin's version. + path: ../ + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.8 + +dev_dependencies: + integration_test: + sdk: flutter + flutter_test: + sdk: flutter + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^5.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/to/resolution-aware-images + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/to/asset-from-package + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/to/font-from-package diff --git a/packages/mediation/gma_mediation_maio/gma_mediation_maio.iml b/packages/mediation/gma_mediation_maio/gma_mediation_maio.iml new file mode 100644 index 000000000..27686dd4b --- /dev/null +++ b/packages/mediation/gma_mediation_maio/gma_mediation_maio.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_maio/ios/Classes/GmaMediationmaioPlugin.swift b/packages/mediation/gma_mediation_maio/ios/Classes/GmaMediationmaioPlugin.swift new file mode 100644 index 000000000..e4a9a2480 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/ios/Classes/GmaMediationmaioPlugin.swift @@ -0,0 +1,23 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import Flutter +import UIKit + +/// Required to link the iOS dependency of the maio Adapter. +public class GmaMediationmaioPlugin: NSObject, FlutterPlugin { + public static func register(with registrar: FlutterPluginRegistrar) {} + + public func detachFromEngine(for registrar: FlutterPluginRegistrar) {} +} diff --git a/packages/mediation/gma_mediation_maio/ios/Resources/PrivacyInfo.xcprivacy b/packages/mediation/gma_mediation_maio/ios/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 000000000..a34b7e2e6 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/ios/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,14 @@ + + + + + NSPrivacyTrackingDomains + + NSPrivacyAccessedAPITypes + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/packages/mediation/gma_mediation_maio/ios/gma_mediation_maio.podspec b/packages/mediation/gma_mediation_maio/ios/gma_mediation_maio.podspec new file mode 100644 index 000000000..26919057c --- /dev/null +++ b/packages/mediation/gma_mediation_maio/ios/gma_mediation_maio.podspec @@ -0,0 +1,21 @@ +Pod::Spec.new do |s| + s.name = 'gma_mediation_maio' + s.version = '1.0.1' + s.summary = 'Google Mobile Ads Mediation of maio.' + s.description = <<-DESC + Mediation Adapter for maio to use with Google Mobile Ads. + DESC + s.homepage = 'https://developers.google.com/admob/flutter/mediation/maio' + s.license = { :file => '../LICENSE' } + s.author = { 'Google LLC' => 'mediation-support@google.com' } + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + s.dependency 'Flutter' + s.dependency 'GoogleMobileAdsMediationMaio', '~>2.1.6.1' + s.platform = :ios, '12.0' + s.static_framework = true + + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } + s.swift_version = '5.0' + +end diff --git a/packages/mediation/gma_mediation_maio/lib/gma_mediation_maio.dart b/packages/mediation/gma_mediation_maio/lib/gma_mediation_maio.dart new file mode 100644 index 000000000..91f9c8a6f --- /dev/null +++ b/packages/mediation/gma_mediation_maio/lib/gma_mediation_maio.dart @@ -0,0 +1,16 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/// This empty class is needed to allow correct compatibility analysis with host platforms. +class GmaMediationmaio {} diff --git a/packages/mediation/gma_mediation_maio/pubspec.lock b/packages/mediation/gma_mediation_maio/pubspec.lock new file mode 100644 index 000000000..e72b0d763 --- /dev/null +++ b/packages/mediation/gma_mediation_maio/pubspec.lock @@ -0,0 +1,261 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 + url: "https://pub.dev" + source: hosted + version: "2.12.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + characters: + dependency: transitive + description: + name: characters + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" + url: "https://pub.dev" + source: hosted + version: "1.3.2" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + google_mobile_ads: + dependency: "direct main" + description: + name: google_mobile_ads + sha256: "0d4a3744b5e8ed1b8be6a1b452d309f811688855a497c6113fc4400f922db603" + url: "https://pub.dev" + source: hosted + version: "5.3.1" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec + url: "https://pub.dev" + source: hosted + version: "10.0.8" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + url: "https://pub.dev" + source: hosted + version: "3.0.9" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + lint: + dependency: "direct dev" + description: + name: lint + sha256: "68d71111816dc7c1de358281e506efe574bb5072eae4a19f8a57484bf96825f5" + url: "https://pub.dev" + source: hosted + version: "2.6.1" + lints: + dependency: transitive + description: + name: lints + sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + url: "https://pub.dev" + source: hosted + version: "5.1.1" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + url: "https://pub.dev" + source: hosted + version: "1.16.0" + path: + dependency: transitive + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + plugin_platform_interface: + dependency: "direct main" + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + url: "https://pub.dev" + source: hosted + version: "1.10.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test_api: + dependency: transitive + description: + name: test_api + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + url: "https://pub.dev" + source: hosted + version: "0.7.4" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" + url: "https://pub.dev" + source: hosted + version: "14.3.1" + webview_flutter: + dependency: transitive + description: + name: webview_flutter + sha256: "889a0a678e7c793c308c68739996227c9661590605e70b1f6cf6b9a6634f7aec" + url: "https://pub.dev" + source: hosted + version: "4.10.0" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: "512c26ccc5b8a571fd5d13ec994b7509f142ff6faf85835e243dde3538fdc713" + url: "https://pub.dev" + source: hosted + version: "4.3.2" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d + url: "https://pub.dev" + source: hosted + version: "2.10.0" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: d7403ef4f042714c9ee2b26eaac4cadae7394cb0d4e608b1dd850c3ff96bd893 + url: "https://pub.dev" + source: hosted + version: "3.18.2" +sdks: + dart: ">=3.7.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/packages/mediation/gma_mediation_maio/pubspec.yaml b/packages/mediation/gma_mediation_maio/pubspec.yaml new file mode 100644 index 000000000..c0250c61a --- /dev/null +++ b/packages/mediation/gma_mediation_maio/pubspec.yaml @@ -0,0 +1,26 @@ +name: gma_mediation_maio +description: 'Mediation Adapter that enables sending ad requests to the maio + ad network using the google_mobile_ads plugin.' +version: 1.0.1 +environment: + sdk: ^3.7.0 + flutter: '>=3.27.0' +dependencies: + flutter: + sdk: flutter + google_mobile_ads: ^6.0.0 + plugin_platform_interface: ^2.0.2 +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^5.0.0 + lint: ^2.6.1 +flutter: + plugin: + platforms: + android: + package: io.flutter.plugins.googlemobileads.mediation.gma_mediation_maio + pluginClass: GmaMediationmaioPlugin + ios: + pluginClass: GmaMediationmaioPlugin +repository: https://github.com/googleads/googleads-mobile-flutter/tree/main/packages/mediation/gma_mediation_maio diff --git a/packages/mediation/gma_mediation_meta/CHANGELOG.md b/packages/mediation/gma_mediation_meta/CHANGELOG.md index ced916084..85494232c 100644 --- a/packages/mediation/gma_mediation_meta/CHANGELOG.md +++ b/packages/mediation/gma_mediation_meta/CHANGELOG.md @@ -1,23 +1,24 @@ ## Meta Audience Network Flutter Mediation Adapter Changelog -#### Next Version -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.2.0. +#### Version 1.2.0 +* Supports [Meta Audience Network Android adapter version 6.19.0.1](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/meta/CHANGELOG.md#version-61901). +* Supports [Meta Audience Network iOS adapter version 6.17.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Meta/CHANGELOG.md#version-61700). +* Built and tested with the Google Mobile Ads Flutter Plugin version 6.0.0. -#### 1.1.0 -* Verified compatibility with Meta Android adapter version 6.17.0.0 -* Verified compatibility with Meta iOS adapter version 6.15.2.0 -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. - -#### 1.0.1 +#### Version 1.1.0 +* iOS plugin is now a static framework. +* Supports [Meta Audience Network Android adapter version 6.18.0.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/meta/CHANGELOG.md#version-61800). +* Supports [Meta Audience Network iOS adapter version 6.16.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Meta/CHANGELOG.md#version-61600). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. +#### Version 1.0.1 * Added dart class to allow correct compatibility analysis with host platforms -* Verified compatibility with Meta Android adapter version 6.17.0.0 -* Verified compatibility with Meta iOS adapter version 6.15.0.0 +- Supports [Meta Audience Network Android adapter version 6.17.0.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/meta/CHANGELOG.md#version-61700). +- Supports [Meta Audience Network iOS adapter version 6.15.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Meta/CHANGELOG.md#version-61500). * Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. -#### 1.0.0 - +#### Version 1.0.0 * Initial release. -* Verified compatibility with Meta Android adapter version 6.17.0.0 -* Verified compatibility with Meta iOS adapter version 6.15.0.0 +- Supports [Meta Audience Network Android adapter version 6.17.0.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/meta/CHANGELOG.md#version-61700). +- Supports [Meta Audience Network iOS adapter version 6.15.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Meta/CHANGELOG.md#version-61500). * Built and tested with the Google Mobile Ads Flutter Plugin version 5.0.0. diff --git a/packages/mediation/gma_mediation_meta/android/build.gradle b/packages/mediation/gma_mediation_meta/android/build.gradle index 9c92be3ae..fec1ac2fe 100644 --- a/packages/mediation/gma_mediation_meta/android/build.gradle +++ b/packages/mediation/gma_mediation_meta/android/build.gradle @@ -1,5 +1,5 @@ group 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_meta' -version '1.0-SNAPSHOT' +version = "1.2.0" buildscript { ext.kotlin_version = '2.0.21' @@ -24,6 +24,10 @@ allprojects { apply plugin: 'com.android.library' apply plugin: 'kotlin-android' +ext { + stringVersion = "6.19.0.1" +} + android { if (project.android.hasProperty("namespace")) { namespace 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_meta' @@ -46,11 +50,11 @@ android { } defaultConfig { - minSdkVersion 21 + minSdkVersion 23 } dependencies { - implementation 'com.google.ads.mediation:facebook:6.17.0.0' + implementation "com.google.ads.mediation:facebook:$stringVersion" testImplementation 'org.jetbrains.kotlin:kotlin-test' testImplementation 'org.mockito:mockito-core:5.0.0' } diff --git a/packages/mediation/gma_mediation_meta/example/android/app/build.gradle b/packages/mediation/gma_mediation_meta/example/android/app/build.gradle index 76bdc62cb..d8251030c 100644 --- a/packages/mediation/gma_mediation_meta/example/android/app/build.gradle +++ b/packages/mediation/gma_mediation_meta/example/android/app/build.gradle @@ -45,7 +45,7 @@ android { applicationId "io.flutter.plugins.googlemobileads.mediation.gma_mediation_meta_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion flutter.minSdkVersion + minSdkVersion 23 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/packages/mediation/gma_mediation_meta/example/pubspec.yaml b/packages/mediation/gma_mediation_meta/example/pubspec.yaml index 089210cfe..e1b4e495a 100644 --- a/packages/mediation/gma_mediation_meta/example/pubspec.yaml +++ b/packages/mediation/gma_mediation_meta/example/pubspec.yaml @@ -5,7 +5,7 @@ description: "Demonstrates how to use the gma_mediation_meta plugin." publish_to: 'none' # Remove this line if you wish to publish to pub.dev environment: - sdk: '>=3.2.5 <4.0.0' + sdk: '>=3.6.0 <4.0.0' # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -17,7 +17,7 @@ dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.0.0 + google_mobile_ads: ^6.0.0 gma_mediation_meta: # When depending on this package from a real application you should use: # gma_mediation_meta: ^x.y.z diff --git a/packages/mediation/gma_mediation_meta/ios/gma_mediation_meta.podspec b/packages/mediation/gma_mediation_meta/ios/gma_mediation_meta.podspec index 3138d4c2f..223b2e0d7 100644 --- a/packages/mediation/gma_mediation_meta/ios/gma_mediation_meta.podspec +++ b/packages/mediation/gma_mediation_meta/ios/gma_mediation_meta.podspec @@ -4,7 +4,7 @@ # Pod::Spec.new do |s| s.name = 'gma_mediation_meta' - s.version = '1.1.0' + s.version = '1.2.0' s.summary = 'Google Mobile Ads Mediation of Meta Audience Network.' s.description = <<-DESC Mediation Adapter for Meta Audience Network to use with Google Mobile Ads. @@ -16,7 +16,7 @@ Mediation Adapter for Meta Audience Network to use with Google Mobile Ads. s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'GoogleMobileAdsMediationFacebook', '~> 6.15.2.0' + s.dependency 'GoogleMobileAdsMediationFacebook', '~> 6.17.1.0' s.platform = :ios, '12.0' s.static_framework = true diff --git a/packages/mediation/gma_mediation_meta/pubspec.yaml b/packages/mediation/gma_mediation_meta/pubspec.yaml index b3e42d0a2..3ffe14009 100644 --- a/packages/mediation/gma_mediation_meta/pubspec.yaml +++ b/packages/mediation/gma_mediation_meta/pubspec.yaml @@ -1,16 +1,16 @@ name: gma_mediation_meta description: "Mediation Adapter that enables sending ad requests to the Meta Audience Network ad network using the google_mobile_ads plugin." -version: 1.1.0 +version: 1.2.0 repository: https://github.com/googleads/googleads-mobile-flutter/tree/main/packages/mediation/gma_mediation_meta environment: - sdk: '>=3.2.5 <4.0.0' - flutter: '>=3.3.0' + sdk: '>=3.6.0 <4.0.0' + flutter: '>=3.27.0' dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 plugin_platform_interface: ^2.0.2 dev_dependencies: diff --git a/packages/mediation/gma_mediation_mintegral/CHANGELOG.md b/packages/mediation/gma_mediation_mintegral/CHANGELOG.md index ddb65a9ab..586bbc2f6 100644 --- a/packages/mediation/gma_mediation_mintegral/CHANGELOG.md +++ b/packages/mediation/gma_mediation_mintegral/CHANGELOG.md @@ -1,16 +1,24 @@ ## Mintegral Flutter Mediation Adapter Changelog -#### Next Version -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.2.0. +#### Version 1.2.1 +- Supports [Mintegral Android adapter version 16.9.61.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/mintegral/CHANGELOG.md#version-169610). +- Supports [Mintegral iOS adapter version 7.7.7.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Mintegral/CHANGELOG.md#version-7770). +- Built and tested with the Google Mobile Ads Flutter Plugin version 6.0.0. -#### 1.1.0 -* Verified compatibility with Mintegral Android adapter version 16.8.31.0. -* Verified compatibility with Mintegral iOS adapter version 7.7.1.0. -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. +#### Version 1.2.0 +- Supports [Mintegral Android adapter version 16.9.41.1](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/mintegral/CHANGELOG.md#version-169411). +- Supports [Mintegral iOS adapter version 7.7.7.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Mintegral/CHANGELOG.md#version-7770). +- Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. -#### 1.0.0 +#### Version 1.1.0 +- iOS plugin is now a static framework. +- Supports [Mintegral Android adapter version 16.8.61.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/mintegral/CHANGELOG.md#version-168610). +- Supports [Mintegral iOS adapter version 7.7.5.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Mintegral/CHANGELOG.md#version-7750). +- Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. -* Initial release. -* Verified compatibility with Mintegral Android adapter version 16.7.21.0. -* Verified compatibility with Mintegral iOS adapter version 7.6.3.0. -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. +#### Version 1.0.0 + +- Initial release. +- Supports [Mintegral Android adapter version 16.7.21.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/mintegral/CHANGELOG.md#version-167210). +- Supports [Mintegral iOS adapter version 7.6.3.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Mintegral/CHANGELOG.md#version-7630). +- Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. diff --git a/packages/mediation/gma_mediation_mintegral/android/build.gradle b/packages/mediation/gma_mediation_mintegral/android/build.gradle index f6db177cd..0f9fd4f8c 100644 --- a/packages/mediation/gma_mediation_mintegral/android/build.gradle +++ b/packages/mediation/gma_mediation_mintegral/android/build.gradle @@ -1,5 +1,5 @@ group 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_mintegral' -version '1.0-SNAPSHOT' +version = "1.2.1" buildscript { ext.kotlin_version = '2.0.21' @@ -24,6 +24,10 @@ allprojects { apply plugin: 'com.android.library' apply plugin: 'kotlin-android' +ext { + stringVersion = "16.9.61.0" +} + android { if (project.android.hasProperty("namespace")) { namespace 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_mintegral' @@ -46,11 +50,11 @@ android { } defaultConfig { - minSdkVersion 21 + minSdkVersion 23 } dependencies { - implementation 'com.google.ads.mediation:mintegral:16.8.31.0' + implementation "com.google.ads.mediation:mintegral:$stringVersion" testImplementation 'org.jetbrains.kotlin:kotlin-test' testImplementation 'org.mockito:mockito-core:5.0.0' } diff --git a/packages/mediation/gma_mediation_mintegral/example/android/app/build.gradle b/packages/mediation/gma_mediation_mintegral/example/android/app/build.gradle index a31107e11..8553f1326 100644 --- a/packages/mediation/gma_mediation_mintegral/example/android/app/build.gradle +++ b/packages/mediation/gma_mediation_mintegral/example/android/app/build.gradle @@ -45,7 +45,7 @@ android { applicationId "io.flutter.plugins.googlemobileads.mediation.gma_mediation_mintegral_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion flutter.minSdkVersion + minSdkVersion 23 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/packages/mediation/gma_mediation_mintegral/example/pubspec.yaml b/packages/mediation/gma_mediation_mintegral/example/pubspec.yaml index a7973d0d6..2a8191c4f 100644 --- a/packages/mediation/gma_mediation_mintegral/example/pubspec.yaml +++ b/packages/mediation/gma_mediation_mintegral/example/pubspec.yaml @@ -5,7 +5,7 @@ description: "Demonstrates how to use the gma_mediation_mintegral plugin." publish_to: 'none' # Remove this line if you wish to publish to pub.dev environment: - sdk: '>=3.3.3 <4.0.0' + sdk: '>=3.6.0 <4.0.0' # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -17,6 +17,7 @@ dependencies: flutter: sdk: flutter + google_mobile_ads: ^6.0.0 gma_mediation_mintegral: # When depending on this package from a real application you should use: # gma_mediation_mintegral: ^x.y.z diff --git a/packages/mediation/gma_mediation_mintegral/ios/gma_mediation_mintegral.podspec b/packages/mediation/gma_mediation_mintegral/ios/gma_mediation_mintegral.podspec index de57f6d8b..7087e565c 100644 --- a/packages/mediation/gma_mediation_mintegral/ios/gma_mediation_mintegral.podspec +++ b/packages/mediation/gma_mediation_mintegral/ios/gma_mediation_mintegral.podspec @@ -4,7 +4,7 @@ # Pod::Spec.new do |s| s.name = 'gma_mediation_mintegral' - s.version = '1.1.0' + s.version = '1.2.1' s.summary = 'Google Mobile Ads Mediation of Mintegral.' s.description = <<-DESC Mediation Adapter for Mintegral to use with Google Mobile Ads. @@ -16,7 +16,7 @@ Mediation Adapter for Mintegral to use with Google Mobile Ads. s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'GoogleMobileAdsMediationMintegral', '~>7.7.1.0' + s.dependency 'GoogleMobileAdsMediationMintegral', '~>7.7.7.0' s.platform = :ios, '12.0' s.static_framework = true diff --git a/packages/mediation/gma_mediation_mintegral/pubspec.yaml b/packages/mediation/gma_mediation_mintegral/pubspec.yaml index 2d099aabc..b7f9b8738 100644 --- a/packages/mediation/gma_mediation_mintegral/pubspec.yaml +++ b/packages/mediation/gma_mediation_mintegral/pubspec.yaml @@ -1,16 +1,16 @@ name: gma_mediation_mintegral description: "Mediation Adapter that enables sending ad requests to the Mintegral ad network using the google_mobile_ads plugin." -version: 1.1.0 +version: 1.2.1 repository: https://github.com/googleads/googleads-mobile-flutter/tree/main/packages/mediation/gma_mediation_mintegral environment: - sdk: '>=3.3.3 <4.0.0' - flutter: '>=3.3.0' + sdk: '>=3.6.0 <4.0.0' + flutter: '>=3.27.0' dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 plugin_platform_interface: ^2.0.2 dev_dependencies: diff --git a/packages/mediation/gma_mediation_moloco/CHANGELOG.md b/packages/mediation/gma_mediation_moloco/CHANGELOG.md new file mode 100644 index 000000000..c3a5e0b44 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/CHANGELOG.md @@ -0,0 +1,17 @@ +## Moloco Flutter Mediation Adapter Changelog + +#### Version 1.2.0 +- Supports [Moloco Android adapter version 3.8.0.1](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/moloco/CHANGELOG.md#version-3801). +- Supports [Moloco iOS adapter version 3.8.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Moloco/CHANGELOG.md#version-3800). +- Built and tested with the Google Mobile Ads Flutter Plugin version 6.0.0. + +#### Version 1.1.0 +- Supports [Moloco Android adapter version 3.7.0.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/moloco/CHANGELOG.md#version-3700). +- Supports [Moloco iOS adapter version 3.6.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Moloco/CHANGELOG.md#version-3600). +- Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. + +#### Version 1.0.0 +- Initial release. +- Supports [Moloco Android adapter version 3.6.1.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/moloco/CHANGELOG.md#version-3610). +- Supports [Moloco iOS adapter version 3.6.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Moloco/CHANGELOG.md#version-3600). +- Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. \ No newline at end of file diff --git a/packages/mediation/gma_mediation_moloco/LICENSE b/packages/mediation/gma_mediation_moloco/LICENSE new file mode 100644 index 000000000..e58143fcc --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2024 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/mediation/gma_mediation_moloco/README.md b/packages/mediation/gma_mediation_moloco/README.md new file mode 100644 index 000000000..1390131f4 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/README.md @@ -0,0 +1,36 @@ +# Google Mobile Ads Mediation of Moloco for Flutter + +[![gma_mediation_moloco](https://github.com/googleads/googleads-mobile-flutter/actions/workflows/google_mobile_ads.yaml/badge.svg)](https://github.com/googleads/googleads-mobile-flutter/actions/workflows/google_mobile_ads.yaml) + +This repository contains the source code for the Mediation Moloco Flutter +plugin to be used with the Google Mobile Ads plugin. It enables mediation of the +Moloco Ad Network through the Google Mobile Ads SDK. + +This plugin use the [Pigeon Flutter plugin](https://pub.dev/packages/pigeon) to +generate the classes that bridge the dart layer with each platform's code. +To add or modify the third party sdk, use the classes in the pigeons folder +following [this guide](https://github.com/flutter/packages/blob/main/packages/pigeon/example/README.md). + +## Documentation +For instructions on how to use with the google_mobile_ads plugin, refer to the +developer guide for [Moloco](https://developers.google.com/admob/flutter/mediation/moloco). + +## Downloads + +See [pub.dev](https://pub.dev/packages/gma_mediation_moloco/versions) for the +latest releases of the plugin. + +## Suggesting improvements + +To file bugs, make feature requests, or to suggest other improvements, please +use [github's issue tracker](https://github.com/googleads/googleads-mobile-flutter/issues). + + +## Other resources + +* [AdMob help center](https://support.google.com/admob/?hl=en#topic=7383088) +* [Ad Manager help center](https://support.google.com/admanager/?hl=en#topic=7505988) + +## License + +[Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0) \ No newline at end of file diff --git a/packages/mediation/gma_mediation_moloco/analysis_options.yaml b/packages/mediation/gma_mediation_moloco/analysis_options.yaml new file mode 100644 index 000000000..632d08c98 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/analysis_options.yaml @@ -0,0 +1,19 @@ +# Copyright 2025 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +include: package:lint/package.yaml + +analyzer: + exclude: + - '**.g.dart' \ No newline at end of file diff --git a/packages/mediation/gma_mediation_moloco/android/build.gradle b/packages/mediation/gma_mediation_moloco/android/build.gradle new file mode 100644 index 000000000..a0b8f2540 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/android/build.gradle @@ -0,0 +1,81 @@ +group = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_moloco" +version = "1.3.0" + +buildscript { + ext.kotlin_version = "1.8.22" + repositories { + google() + mavenCentral() + } + + dependencies { + classpath("com.android.tools.build:gradle:8.1.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +apply plugin: "com.android.library" +apply plugin: "kotlin-android" + +ext { + stringVersion = "3.9.0.0" +} + +android { + namespace = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_moloco" + + compileSdk = 35 + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11 + } + + sourceSets { + main.java.srcDirs += "src/main/kotlin" + test.java.srcDirs += "src/test/kotlin" + } + + defaultConfig { + minSdk = 23 + } + + dependencies { + implementation("com.google.ads.mediation:moloco:$stringVersion") + testImplementation 'junit:junit:4.13.2' + testImplementation 'androidx.test:core:1.6.1' + testImplementation 'androidx.test:core-ktx:1.6.1' + testImplementation 'androidx.test.ext:junit:1.2.1' + testImplementation 'org.jetbrains.kotlin:kotlin-stdlib:2.0.21' + testImplementation 'org.mockito:mockito-core:5.5.0' + testImplementation 'org.mockito.kotlin:mockito-kotlin:5.1.0' + testImplementation 'org.robolectric:robolectric:4.10.3' + } + + testOptions { + unitTests.all { + useJUnit() + + testLogging { + events "passed", "skipped", "failed", "standardOut", "standardError" + outputs.upToDateWhen {false} + showStandardStreams = true + } + } + unitTests { + includeAndroidResources = true + unitTests.returnDefaultValues = true + } + } +} diff --git a/packages/mediation/gma_mediation_moloco/android/gma_mediation_moloco_android.iml b/packages/mediation/gma_mediation_moloco/android/gma_mediation_moloco_android.iml new file mode 100644 index 000000000..e8b9110d5 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/android/gma_mediation_moloco_android.iml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_moloco/android/settings.gradle b/packages/mediation/gma_mediation_moloco/android/settings.gradle new file mode 100644 index 000000000..ce3ca0c56 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/android/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'gma_mediation_moloco' diff --git a/packages/mediation/gma_mediation_moloco/android/src/main/AndroidManifest.xml b/packages/mediation/gma_mediation_moloco/android/src/main/AndroidManifest.xml new file mode 100644 index 000000000..bef83c901 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/android/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + diff --git a/packages/mediation/gma_mediation_moloco/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_moloco/GmaMediationMolocoPlugin.kt b/packages/mediation/gma_mediation_moloco/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_moloco/GmaMediationMolocoPlugin.kt new file mode 100644 index 000000000..be9e46d3a --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_moloco/GmaMediationMolocoPlugin.kt @@ -0,0 +1,24 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package io.flutter.plugins.googlemobileads.mediation.gma_mediation_moloco + +import io.flutter.embedding.engine.plugins.FlutterPlugin + +/** Required to link the Android dependency of the Moloco Adapter. */ +class GmaMediationMolocoPlugin : FlutterPlugin { + override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {} + + override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {} +} diff --git a/packages/mediation/gma_mediation_moloco/android/src/test/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_moloco/GmaMediationMolocoPluginTest.kt b/packages/mediation/gma_mediation_moloco/android/src/test/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_moloco/GmaMediationMolocoPluginTest.kt new file mode 100644 index 000000000..1d32bce26 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/android/src/test/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_moloco/GmaMediationMolocoPluginTest.kt @@ -0,0 +1,17 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package io.flutter.plugins.googlemobileads.mediation.gma_mediation_moloco + +internal class GmaMediationMolocoPluginTest {} diff --git a/packages/mediation/gma_mediation_moloco/example/README.md b/packages/mediation/gma_mediation_moloco/example/README.md new file mode 100644 index 000000000..5c705f456 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/README.md @@ -0,0 +1,17 @@ +# gma_mediation_moloco_example + +Learn how to integrate with your app that uses the [google_mobile_ads](https://pub.dev/packages/google_mobile_ads) plugin +by following the [development guide](https://developers.google.com/admob/flutter/mediation/moloco). + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/packages/mediation/gma_mediation_moloco/example/analysis_options.yaml b/packages/mediation/gma_mediation_moloco/example/analysis_options.yaml new file mode 100644 index 000000000..0d2902135 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/mediation/gma_mediation_moloco/example/android/app/build.gradle b/packages/mediation/gma_mediation_moloco/example/android/app/build.gradle new file mode 100644 index 000000000..4042aaef9 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/android/app/build.gradle @@ -0,0 +1,44 @@ +plugins { + id "com.android.application" + id "kotlin-android" + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id "dev.flutter.flutter-gradle-plugin" +} + +android { + namespace = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_moloco_example" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11 + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_moloco_example" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = 23 + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.debug + } + } +} + +flutter { + source = "../.." +} diff --git a/packages/mediation/gma_mediation_moloco/example/android/app/src/debug/AndroidManifest.xml b/packages/mediation/gma_mediation_moloco/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 000000000..399f6981d --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/mediation/gma_mediation_moloco/example/android/app/src/main/AndroidManifest.xml b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..161a45c48 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_moloco/example/android/app/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_moloco_example/MainActivity.kt b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_moloco_example/MainActivity.kt new file mode 100644 index 000000000..c1d0253b3 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_moloco_example/MainActivity.kt @@ -0,0 +1,5 @@ +package io.flutter.plugins.googlemobileads.mediation.gma_mediation_moloco_example + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity : FlutterActivity() diff --git a/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 000000000..f74085f3f --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/drawable/launch_background.xml b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 000000000..304732f88 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..db77bb4b7 Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..17987b79b Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..09d439148 Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..d5f1c8d34 Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..4d6372eeb Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/values-night/styles.xml b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 000000000..06952be74 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/values/styles.xml b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..cb1ef8805 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/mediation/gma_mediation_moloco/example/android/app/src/profile/AndroidManifest.xml b/packages/mediation/gma_mediation_moloco/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 000000000..399f6981d --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/mediation/gma_mediation_moloco/example/android/build.gradle b/packages/mediation/gma_mediation_moloco/example/android/build.gradle new file mode 100644 index 000000000..d2ffbffa4 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/android/build.gradle @@ -0,0 +1,18 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = "../build" +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/packages/mediation/gma_mediation_moloco/example/android/gma_mediation_moloco_example_android.iml b/packages/mediation/gma_mediation_moloco/example/android/gma_mediation_moloco_example_android.iml new file mode 100644 index 000000000..18999696a --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/android/gma_mediation_moloco_example_android.iml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_moloco/example/android/gradle.properties b/packages/mediation/gma_mediation_moloco/example/android/gradle.properties new file mode 100644 index 000000000..259717082 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true +android.enableJetifier=true diff --git a/packages/mediation/gma_mediation_moloco/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/mediation/gma_mediation_moloco/example/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..7bb2df6ba --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip diff --git a/packages/mediation/gma_mediation_moloco/example/android/gradlew b/packages/mediation/gma_mediation_moloco/example/android/gradlew new file mode 100755 index 000000000..9d82f7891 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/android/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/packages/mediation/gma_mediation_moloco/example/android/gradlew.bat b/packages/mediation/gma_mediation_moloco/example/android/gradlew.bat new file mode 100644 index 000000000..aec99730b --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/android/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/packages/mediation/gma_mediation_moloco/example/android/settings.gradle b/packages/mediation/gma_mediation_moloco/example/android/settings.gradle new file mode 100644 index 000000000..b9e43bd37 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/android/settings.gradle @@ -0,0 +1,25 @@ +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.1.0" apply false + id "org.jetbrains.kotlin.android" version "1.8.22" apply false +} + +include ":app" diff --git a/packages/mediation/gma_mediation_moloco/example/gma_mediation_moloco_example.iml b/packages/mediation/gma_mediation_moloco/example/gma_mediation_moloco_example.iml new file mode 100644 index 000000000..f66303d53 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/gma_mediation_moloco_example.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Flutter/AppFrameworkInfo.plist b/packages/mediation/gma_mediation_moloco/example/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 000000000..7c5696400 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 12.0 + + diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Flutter/Debug.xcconfig b/packages/mediation/gma_mediation_moloco/example/ios/Flutter/Debug.xcconfig new file mode 100644 index 000000000..592ceee85 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Flutter/Release.xcconfig b/packages/mediation/gma_mediation_moloco/example/ios/Flutter/Release.xcconfig new file mode 100644 index 000000000..592ceee85 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcodeproj/project.pbxproj b/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..012bf6621 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,616 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMolocoExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMolocoExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMolocoExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMolocoExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMolocoExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMolocoExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..919434a62 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 000000000..8e3ca5dfe --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..1d526a16e --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/AppDelegate.swift b/packages/mediation/gma_mediation_moloco/example/ios/Runner/AppDelegate.swift new file mode 100644 index 000000000..626664468 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Flutter +import UIKit + +@main +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..d36b1fab2 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 000000000..dc9ada472 Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 000000000..7353c41ec Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 000000000..797d452e4 Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 000000000..6ed2d933e Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 000000000..4cd7b0099 Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 000000000..fe730945a Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 000000000..321773cd8 Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 000000000..797d452e4 Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 000000000..502f463a9 Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 000000000..0ec303439 Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 000000000..0ec303439 Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 000000000..e9f5fea27 Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 000000000..84ac32ae7 Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 000000000..8953cba09 Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 000000000..0467bf12a Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 000000000..0bedcf2fd --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 000000000..9da19eaca Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 000000000..9da19eaca Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 000000000..9da19eaca Binary files /dev/null and b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 000000000..89c2725b7 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 000000000..f2e259c7c --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Base.lproj/Main.storyboard b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 000000000..f3c28516f --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Info.plist b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Info.plist new file mode 100644 index 000000000..71f133ff8 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Gma Mediation Moloco + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + gma_mediation_moloco_example + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/packages/mediation/gma_mediation_moloco/example/ios/Runner/Runner-Bridging-Header.h b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 000000000..308a2a560 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/packages/mediation/gma_mediation_moloco/example/ios/RunnerTests/GmaMediationMolocoPluginTests.swift b/packages/mediation/gma_mediation_moloco/example/ios/RunnerTests/GmaMediationMolocoPluginTests.swift new file mode 100644 index 000000000..a326f9a54 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/ios/RunnerTests/GmaMediationMolocoPluginTests.swift @@ -0,0 +1,20 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import UIKit +import XCTest + +@testable import gma_mediation_moloco + +class GmaMediationMolocoPluginTests: XCTestCase {} diff --git a/packages/mediation/gma_mediation_moloco/example/lib/main.dart b/packages/mediation/gma_mediation_moloco/example/lib/main.dart new file mode 100644 index 000000000..ea02decb7 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/lib/main.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatefulWidget { + const MyApp({super.key}); + + @override + State createState() => _MyAppState(); +} + +class _MyAppState extends State { + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + appBar: AppBar(title: const Text('Plugin example app')), + body: const Center(child: Text('Test app')), + ), + ); + } +} diff --git a/packages/mediation/gma_mediation_moloco/example/pubspec.lock b/packages/mediation/gma_mediation_moloco/example/pubspec.lock new file mode 100644 index 000000000..1e9ac9bef --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/pubspec.lock @@ -0,0 +1,323 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + url: "https://pub.dev" + source: hosted + version: "1.19.0" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" + source: hosted + version: "1.0.8" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + file: + dependency: transitive + description: + name: file + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_driver: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + fuchsia_remote_debug_protocol: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + gma_mediation_moloco: + dependency: "direct main" + description: + path: ".." + relative: true + source: path + version: "1.0.0" + google_mobile_ads: + dependency: transitive + description: + name: google_mobile_ads + sha256: "0d4a3744b5e8ed1b8be6a1b452d309f811688855a497c6113fc4400f922db603" + url: "https://pub.dev" + source: hosted + version: "5.3.1" + integration_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + url: "https://pub.dev" + source: hosted + version: "10.0.7" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + url: "https://pub.dev" + source: hosted + version: "3.0.8" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + lints: + dependency: transitive + description: + name: lints + sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + url: "https://pub.dev" + source: hosted + version: "5.1.1" + matcher: + dependency: transitive + description: + name: matcher + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + url: "https://pub.dev" + source: hosted + version: "0.12.16+1" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + url: "https://pub.dev" + source: hosted + version: "1.15.0" + path: + dependency: transitive + description: + name: path + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.dev" + source: hosted + version: "1.9.0" + platform: + dependency: transitive + description: + name: platform + sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" + url: "https://pub.dev" + source: hosted + version: "3.1.5" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + process: + dependency: transitive + description: + name: process + sha256: "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32" + url: "https://pub.dev" + source: hosted + version: "5.0.2" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + url: "https://pub.dev" + source: hosted + version: "1.12.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + sync_http: + dependency: transitive + description: + name: sync_http + sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" + url: "https://pub.dev" + source: hosted + version: "0.3.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + url: "https://pub.dev" + source: hosted + version: "0.7.3" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + url: "https://pub.dev" + source: hosted + version: "14.3.0" + webdriver: + dependency: transitive + description: + name: webdriver + sha256: "3d773670966f02a646319410766d3b5e1037efb7f07cc68f844d5e06cd4d61c8" + url: "https://pub.dev" + source: hosted + version: "3.0.4" + webview_flutter: + dependency: transitive + description: + name: webview_flutter + sha256: "889a0a678e7c793c308c68739996227c9661590605e70b1f6cf6b9a6634f7aec" + url: "https://pub.dev" + source: hosted + version: "4.10.0" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: "512c26ccc5b8a571fd5d13ec994b7509f142ff6faf85835e243dde3538fdc713" + url: "https://pub.dev" + source: hosted + version: "4.3.2" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d + url: "https://pub.dev" + source: hosted + version: "2.10.0" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: "7310de7efa4e6df8b3d2ff14aef3f290bc00b43363f2d0028845e6de46507fc9" + url: "https://pub.dev" + source: hosted + version: "3.18.1" +sdks: + dart: ">=3.6.2 <4.0.0" + flutter: ">=3.24.0" diff --git a/packages/mediation/gma_mediation_moloco/example/pubspec.yaml b/packages/mediation/gma_mediation_moloco/example/pubspec.yaml new file mode 100644 index 000000000..c7b4f2b93 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/example/pubspec.yaml @@ -0,0 +1,86 @@ +name: gma_mediation_moloco_example +description: "Demonstrates how to use the gma_mediation_moloco plugin." +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +environment: + sdk: ^3.6.2 + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + + google_mobile_ads: ^6.0.0 + gma_mediation_moloco: + # When depending on this package from a real application you should use: + # gma_mediation_moloco: ^x.y.z + # See https://dart.dev/tools/pub/dependencies#version-constraints + # The example app is bundled with the plugin so we use a path dependency on + # the parent directory to use the current plugin's version. + path: ../ + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.8 + +dev_dependencies: + integration_test: + sdk: flutter + flutter_test: + sdk: flutter + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^5.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/to/resolution-aware-images + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/to/asset-from-package + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/to/font-from-package diff --git a/packages/mediation/gma_mediation_moloco/gma_mediation_moloco.iml b/packages/mediation/gma_mediation_moloco/gma_mediation_moloco.iml new file mode 100644 index 000000000..27686dd4b --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/gma_mediation_moloco.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_moloco/ios/Classes/GmaMediationMolocoPlugin.swift b/packages/mediation/gma_mediation_moloco/ios/Classes/GmaMediationMolocoPlugin.swift new file mode 100644 index 000000000..cfea52906 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/ios/Classes/GmaMediationMolocoPlugin.swift @@ -0,0 +1,23 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import Flutter +import UIKit + +/// Required to link the iOS dependency of the Moloco Adapter. +public class GmaMediationMolocoPlugin: NSObject, FlutterPlugin { + public static func register(with registrar: FlutterPluginRegistrar) {} + + public func detachFromEngine(for registrar: FlutterPluginRegistrar) {} +} diff --git a/packages/mediation/gma_mediation_moloco/ios/Resources/PrivacyInfo.xcprivacy b/packages/mediation/gma_mediation_moloco/ios/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 000000000..a34b7e2e6 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/ios/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,14 @@ + + + + + NSPrivacyTrackingDomains + + NSPrivacyAccessedAPITypes + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/packages/mediation/gma_mediation_moloco/ios/gma_mediation_moloco.podspec b/packages/mediation/gma_mediation_moloco/ios/gma_mediation_moloco.podspec new file mode 100644 index 000000000..cf56c6200 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/ios/gma_mediation_moloco.podspec @@ -0,0 +1,21 @@ +Pod::Spec.new do |s| + s.name = 'gma_mediation_moloco' + s.version = '1.3.0' + s.summary = 'Google Mobile Ads Mediation of Moloco.' + s.description = <<-DESC + Mediation Adapter for Moloco to use with Google Mobile Ads. + DESC + s.homepage = 'https://developers.google.com/admob/flutter/mediation/moloco' + s.license = { :file => '../LICENSE' } + s.author = { 'Google LLC' => 'mediation-support@google.com' } + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + s.dependency 'Flutter' + s.dependency 'GoogleMobileAdsMediationMoloco', '~> 3.9.0.0' + s.platform = :ios, '12.0' + s.static_framework = true + + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } + s.swift_version = '5.0' + +end diff --git a/packages/mediation/gma_mediation_moloco/lib/gma_mediation_moloco.dart b/packages/mediation/gma_mediation_moloco/lib/gma_mediation_moloco.dart new file mode 100644 index 000000000..6670bbc6c --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/lib/gma_mediation_moloco.dart @@ -0,0 +1,16 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/// This empty class is needed to allow correct compatibility analysis with host platforms. +class GmaMediationMoloco {} diff --git a/packages/mediation/gma_mediation_moloco/pigeons/moloco_sdk_api.dart b/packages/mediation/gma_mediation_moloco/pigeons/moloco_sdk_api.dart new file mode 100644 index 000000000..eebcaf1b0 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/pigeons/moloco_sdk_api.dart @@ -0,0 +1,36 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import 'package:pigeon/pigeon.dart'; + +@ConfigurePigeon( + PigeonOptions( + dartOut: 'lib/moloco_sdk_api.g.dart', + dartOptions: DartOptions(), + kotlinOut: + 'android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_moloco/MolocoSDKApi.g.kt', + kotlinOptions: KotlinOptions( + package: + "io.flutter.plugins.googlemobileads.mediation.gma_mediation_moloco", + ), + swiftOut: 'ios/Classes/MolocoSDKApi.g.swift', + swiftOptions: SwiftOptions(), + dartPackageName: 'gma_mediation_moloco', + ), +) +@HostApi() +/// The generated classes set the channels to call the methods in the corresponding kotlin MolocoSDKApi interface and swift MolocoSDKApi protocol from the dart layer. +abstract class MolocoSDKApi { + // TODO: Add SDK methods here. +} diff --git a/packages/mediation/gma_mediation_moloco/pubspec.lock b/packages/mediation/gma_mediation_moloco/pubspec.lock new file mode 100644 index 000000000..b98eff2a1 --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/pubspec.lock @@ -0,0 +1,413 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: dc27559385e905ad30838356c5f5d574014ba39872d732111cd07ac0beff4c57 + url: "https://pub.dev" + source: hosted + version: "80.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: "192d1c5b944e7e53b24b5586db760db934b177d4147c42fbca8c8c5f1eb8d11e" + url: "https://pub.dev" + source: hosted + version: "7.3.0" + args: + dependency: transitive + description: + name: args + sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6 + url: "https://pub.dev" + source: hosted + version: "2.6.0" + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + built_collection: + dependency: transitive + description: + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: "28a712df2576b63c6c005c465989a348604960c0958d28be5303ba9baa841ac2" + url: "https://pub.dev" + source: hosted + version: "8.9.3" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + code_builder: + dependency: transitive + description: + name: code_builder + sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e" + url: "https://pub.dev" + source: hosted + version: "4.10.1" + collection: + dependency: transitive + description: + name: collection + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + url: "https://pub.dev" + source: hosted + version: "1.19.0" + convert: + dependency: transitive + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + crypto: + dependency: transitive + description: + name: crypto + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + url: "https://pub.dev" + source: hosted + version: "3.0.6" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: "27eb0ae77836989a3bc541ce55595e8ceee0992807f14511552a898ddd0d88ac" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be + url: "https://pub.dev" + source: hosted + version: "1.1.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + glob: + dependency: transitive + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" + google_mobile_ads: + dependency: "direct main" + description: + name: google_mobile_ads + sha256: "0d4a3744b5e8ed1b8be6a1b452d309f811688855a497c6113fc4400f922db603" + url: "https://pub.dev" + source: hosted + version: "5.3.1" + graphs: + dependency: transitive + description: + name: graphs + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + url: "https://pub.dev" + source: hosted + version: "10.0.7" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + url: "https://pub.dev" + source: hosted + version: "3.0.8" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + lint: + dependency: "direct dev" + description: + name: lint + sha256: "9d4a1bc7196b9eb8bcbb1fd9cbb7df28b926948bb4d36a183c207bf7502e0a87" + url: "https://pub.dev" + source: hosted + version: "2.4.0" + lints: + dependency: transitive + description: + name: lints + sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + url: "https://pub.dev" + source: hosted + version: "5.1.1" + matcher: + dependency: transitive + description: + name: matcher + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + url: "https://pub.dev" + source: hosted + version: "0.12.16+1" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + url: "https://pub.dev" + source: hosted + version: "1.15.0" + package_config: + dependency: transitive + description: + name: package_config + sha256: "92d4488434b520a62570293fbd33bb556c7d49230791c1b4bbd973baf6d2dc67" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + path: + dependency: transitive + description: + name: path + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.dev" + source: hosted + version: "1.9.0" + pigeon: + dependency: "direct dev" + description: + name: pigeon + sha256: "70aabf0a7afc2665d17f7da9914e1aa461ce991c3bf20dc15ec68b3b96e32238" + url: "https://pub.dev" + source: hosted + version: "24.1.1" + plugin_platform_interface: + dependency: "direct main" + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "7b3cfbf654f3edd0c6298ecd5be782ce997ddf0e00531b9464b55245185bbbbd" + url: "https://pub.dev" + source: hosted + version: "2.1.5" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + url: "https://pub.dev" + source: hosted + version: "1.12.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + url: "https://pub.dev" + source: hosted + version: "0.7.3" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + url: "https://pub.dev" + source: hosted + version: "14.3.0" + watcher: + dependency: transitive + description: + name: watcher + sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + webview_flutter: + dependency: transitive + description: + name: webview_flutter + sha256: "889a0a678e7c793c308c68739996227c9661590605e70b1f6cf6b9a6634f7aec" + url: "https://pub.dev" + source: hosted + version: "4.10.0" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: "512c26ccc5b8a571fd5d13ec994b7509f142ff6faf85835e243dde3538fdc713" + url: "https://pub.dev" + source: hosted + version: "4.3.2" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d + url: "https://pub.dev" + source: hosted + version: "2.10.0" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: "7310de7efa4e6df8b3d2ff14aef3f290bc00b43363f2d0028845e6de46507fc9" + url: "https://pub.dev" + source: hosted + version: "3.18.1" + yaml: + dependency: transitive + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" +sdks: + dart: ">=3.6.2 <4.0.0" + flutter: ">=3.24.0" diff --git a/packages/mediation/gma_mediation_moloco/pubspec.yaml b/packages/mediation/gma_mediation_moloco/pubspec.yaml new file mode 100644 index 000000000..751f636af --- /dev/null +++ b/packages/mediation/gma_mediation_moloco/pubspec.yaml @@ -0,0 +1,27 @@ +name: gma_mediation_moloco +description: 'Mediation Adapter that enables sending ad requests to the Moloco + ad network using the google_mobile_ads plugin.' +version: 1.3.0 +environment: + sdk: ^3.6.2 + flutter: '>=3.27.0' +dependencies: + flutter: + sdk: flutter + google_mobile_ads: ^6.0.0 + plugin_platform_interface: ^2.0.2 +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^5.0.0 + lint: ^2.4.0 + pigeon: ^24.1.1 +flutter: + plugin: + platforms: + android: + package: io.flutter.plugins.googlemobileads.mediation.gma_mediation_moloco + pluginClass: GmaMediationMolocoPlugin + ios: + pluginClass: GmaMediationMolocoPlugin +repository: https://github.com/googleads/googleads-mobile-flutter/tree/main/packages/mediation/gma_mediation_moloco diff --git a/packages/mediation/gma_mediation_mytarget/CHANGELOG.md b/packages/mediation/gma_mediation_mytarget/CHANGELOG.md new file mode 100644 index 000000000..5fcd4e2b4 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/CHANGELOG.md @@ -0,0 +1,12 @@ +## myTarget Flutter Mediation Adapter Changelog + +#### Version 1.1.0 +* Supports [myTarget Android adapter version 5.27.1.1](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/mytarget/CHANGELOG.md#version-52711). +* Supports [myTarget iOS adapter version 5.28.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/MyTarget/CHANGELOG.md#version-52800). +* Built and tested with the Google Mobile Ads Flutter Plugin version 6.0.0. + +#### Version 1.0.0 +* Initial release. +* Supports [myTarget Android adapter version 5.27.1.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/mytarget/CHANGELOG.md#version-52710). +* Supports [myTarget iOS adapter version 5.24.1.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/MyTarget/CHANGELOG.md#version-52410). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. diff --git a/packages/mediation/gma_mediation_mytarget/LICENSE b/packages/mediation/gma_mediation_mytarget/LICENSE new file mode 100644 index 000000000..e58143fcc --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2024 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/mediation/gma_mediation_mytarget/README.md b/packages/mediation/gma_mediation_mytarget/README.md new file mode 100644 index 000000000..c8ad289de --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/README.md @@ -0,0 +1,36 @@ +# Google Mobile Ads Mediation of mytarget for Flutter + +[![gma_mediation_mytarget](https://github.com/googleads/googleads-mobile-flutter/actions/workflows/google_mobile_ads.yaml/badge.svg)](https://github.com/googleads/googleads-mobile-flutter/actions/workflows/google_mobile_ads.yaml) + +This repository contains the source code for the Mediation mytarget Flutter +plugin to be used with the Google Mobile Ads plugin. It enables mediation of the +mytarget Ad Network through the Google Mobile Ads SDK. + +This plugin use the [Pigeon Flutter plugin](https://pub.dev/packages/pigeon) to +generate the classes that bridge the dart layer with each platform's code. +To add or modify the third party sdk, use the classes in the pigeons folder +following [this guide](https://github.com/flutter/packages/blob/main/packages/pigeon/example/README.md). + +## Documentation +For instructions on how to use with the google_mobile_ads plugin, refer to the +developer guide for [mytarget](https://developers.google.com/admob/flutter/mediation/mytarget). + +## Downloads + +See [pub.dev](https://pub.dev/packages/gma_mediation_mytarget/versions) for the +latest releases of the plugin. + +## Suggesting improvements + +To file bugs, make feature requests, or to suggest other improvements, please +use [github's issue tracker](https://github.com/googleads/googleads-mobile-flutter/issues). + + +## Other resources + +* [AdMob help center](https://support.google.com/admob/?hl=en#topic=7383088) +* [Ad Manager help center](https://support.google.com/admanager/?hl=en#topic=7505988) + +## License + +[Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0) \ No newline at end of file diff --git a/packages/mediation/gma_mediation_mytarget/analysis_options.yaml b/packages/mediation/gma_mediation_mytarget/analysis_options.yaml new file mode 100644 index 000000000..632d08c98 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/analysis_options.yaml @@ -0,0 +1,19 @@ +# Copyright 2025 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +include: package:lint/package.yaml + +analyzer: + exclude: + - '**.g.dart' \ No newline at end of file diff --git a/packages/mediation/gma_mediation_mytarget/android/build.gradle b/packages/mediation/gma_mediation_mytarget/android/build.gradle new file mode 100644 index 000000000..992f92409 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/android/build.gradle @@ -0,0 +1,71 @@ +group = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_mytarget" +version = "1.2.0" + +buildscript { + ext.kotlin_version = "1.8.22" + repositories { + google() + mavenCentral() + } + + dependencies { + classpath("com.android.tools.build:gradle:8.7.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +apply plugin: "com.android.library" +apply plugin: "kotlin-android" + +ext { + stringVersion = "5.27.1.1" +} + +android { + namespace = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_mytarget" + + compileSdk = 35 + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11 + } + + sourceSets { + main.java.srcDirs += "src/main/kotlin" + test.java.srcDirs += "src/test/kotlin" + } + + defaultConfig { + minSdk = 23 + } + + dependencies { + implementation("com.google.ads.mediation:mytarget:$stringVersion") + testImplementation("org.jetbrains.kotlin:kotlin-test") + testImplementation("org.mockito:mockito-core:5.0.0") + } + + testOptions { + unitTests.all { + useJUnitPlatform() + + testLogging { + events "passed", "skipped", "failed", "standardOut", "standardError" + outputs.upToDateWhen {false} + showStandardStreams = true + } + } + } +} diff --git a/packages/mediation/gma_mediation_mytarget/android/gma_mediation_mytarget_android.iml b/packages/mediation/gma_mediation_mytarget/android/gma_mediation_mytarget_android.iml new file mode 100644 index 000000000..e8b9110d5 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/android/gma_mediation_mytarget_android.iml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_mytarget/android/settings.gradle b/packages/mediation/gma_mediation_mytarget/android/settings.gradle new file mode 100644 index 000000000..34241917e --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/android/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'gma_mediation_mytarget' diff --git a/packages/mediation/gma_mediation_mytarget/android/src/main/AndroidManifest.xml b/packages/mediation/gma_mediation_mytarget/android/src/main/AndroidManifest.xml new file mode 100644 index 000000000..5a0ebc5d7 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/android/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + diff --git a/packages/mediation/gma_mediation_mytarget/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_mytarget/GmaMediationmytargetPlugin.kt b/packages/mediation/gma_mediation_mytarget/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_mytarget/GmaMediationmytargetPlugin.kt new file mode 100644 index 000000000..57506ee22 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_mytarget/GmaMediationmytargetPlugin.kt @@ -0,0 +1,24 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package io.flutter.plugins.googlemobileads.mediation.gma_mediation_mytarget + +import io.flutter.embedding.engine.plugins.FlutterPlugin + +/** Required to link the Android dependency of the mytarget Adapter. */ +class GmaMediationmytargetPlugin : FlutterPlugin { + override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {} + + override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {} +} diff --git a/packages/mediation/gma_mediation_mytarget/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_mytarget/MytargetFlutterMediationExtras.kt b/packages/mediation/gma_mediation_mytarget/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_mytarget/MytargetFlutterMediationExtras.kt new file mode 100644 index 000000000..96cc20718 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_mytarget/MytargetFlutterMediationExtras.kt @@ -0,0 +1,35 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package io.flutter.plugins.googlemobileads.mediation.gma_mediation_mytarget + +import android.os.Bundle +import android.util.Pair +import androidx.core.os.bundleOf +import com.google.android.gms.ads.mediation.Adapter +import com.google.android.gms.ads.mediation.MediationExtrasReceiver +import io.flutter.plugins.googlemobileads.FlutterMediationExtras + +class MytargetFlutterMediationExtras : FlutterMediationExtras() { + private var flutterExtras: Map? = null + + override fun setMediationExtras(extras: MutableMap) { + flutterExtras = extras + } + + override fun getMediationExtras(): Pair, Bundle> { + // MyTarget does not support any extras for Android adapter. + return Pair, Bundle>(Adapter::class.java, bundleOf()) + } +} diff --git a/packages/mediation/gma_mediation_mytarget/android/src/test/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_mytarget/GmaMediationmytargetPluginTest.kt b/packages/mediation/gma_mediation_mytarget/android/src/test/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_mytarget/GmaMediationmytargetPluginTest.kt new file mode 100644 index 000000000..98a1fa6d1 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/android/src/test/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_mytarget/GmaMediationmytargetPluginTest.kt @@ -0,0 +1,17 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package io.flutter.plugins.googlemobileads.mediation.gma_mediation_mytarget + +internal class GmaMediationmytargetPluginTest {} diff --git a/packages/mediation/gma_mediation_mytarget/example/README.md b/packages/mediation/gma_mediation_mytarget/example/README.md new file mode 100644 index 000000000..7b76fcf9f --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/README.md @@ -0,0 +1,17 @@ +# gma_mediation_mytarget_example + +Learn how to integrate with your app that uses the [google_mobile_ads](https://pub.dev/packages/google_mobile_ads) plugin +by following the [development guide](https://developers.google.com/admob/flutter/mediation/mytarget). + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/packages/mediation/gma_mediation_mytarget/example/analysis_options.yaml b/packages/mediation/gma_mediation_mytarget/example/analysis_options.yaml new file mode 100644 index 000000000..0d2902135 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/mediation/gma_mediation_mytarget/example/android/app/build.gradle.kts b/packages/mediation/gma_mediation_mytarget/example/android/app/build.gradle.kts new file mode 100644 index 000000000..0ac321175 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/android/app/build.gradle.kts @@ -0,0 +1,41 @@ +plugins { + id("com.android.application") + id("kotlin-android") + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("dev.flutter.flutter-gradle-plugin") +} + +android { + namespace = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_mytarget_example" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + + kotlinOptions { jvmTarget = JavaVersion.VERSION_11.toString() } + + defaultConfig { + // TODO: Specify your own unique Application ID + // (https://developer.android.com/studio/build/application-id.html). + applicationId = "io.flutter.plugins.googlemobileads.mediation.gma_mediation_mytarget_example" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = 23 + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.getByName("debug") + } + } +} + +flutter { source = "../.." } diff --git a/packages/mediation/gma_mediation_mytarget/example/android/app/src/debug/AndroidManifest.xml b/packages/mediation/gma_mediation_mytarget/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 000000000..399f6981d --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/AndroidManifest.xml b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..f0564d728 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_mytarget_example/MainActivity.kt b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_mytarget_example/MainActivity.kt new file mode 100644 index 000000000..e06793ea5 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_mytarget_example/MainActivity.kt @@ -0,0 +1,5 @@ +package io.flutter.plugins.googlemobileads.mediation.gma_mediation_mytarget_example + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity : FlutterActivity() diff --git a/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 000000000..f74085f3f --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/drawable/launch_background.xml b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 000000000..304732f88 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..db77bb4b7 Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..17987b79b Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..09d439148 Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..d5f1c8d34 Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..4d6372eeb Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/values-night/styles.xml b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 000000000..06952be74 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/values/styles.xml b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..cb1ef8805 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/android/app/src/profile/AndroidManifest.xml b/packages/mediation/gma_mediation_mytarget/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 000000000..399f6981d --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/android/build.gradle.kts b/packages/mediation/gma_mediation_mytarget/example/android/build.gradle.kts new file mode 100644 index 000000000..97eed2dd6 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/android/build.gradle.kts @@ -0,0 +1,19 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() + +rootProject.layout.buildDirectory.value(newBuildDir) + +subprojects { + val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) + project.layout.buildDirectory.value(newSubprojectBuildDir) +} + +subprojects { project.evaluationDependsOn(":app") } + +tasks.register("clean") { delete(rootProject.layout.buildDirectory) } diff --git a/packages/mediation/gma_mediation_mytarget/example/android/gma_mediation_mytarget_example_android.iml b/packages/mediation/gma_mediation_mytarget/example/android/gma_mediation_mytarget_example_android.iml new file mode 100644 index 000000000..18999696a --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/android/gma_mediation_mytarget_example_android.iml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/android/gradle.properties b/packages/mediation/gma_mediation_mytarget/example/android/gradle.properties new file mode 100644 index 000000000..f018a6181 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true +android.enableJetifier=true diff --git a/packages/mediation/gma_mediation_mytarget/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/mediation/gma_mediation_mytarget/example/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..afa1e8eb0 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip diff --git a/packages/mediation/gma_mediation_mytarget/example/android/gradlew b/packages/mediation/gma_mediation_mytarget/example/android/gradlew new file mode 100755 index 000000000..9d82f7891 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/android/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/packages/mediation/gma_mediation_mytarget/example/android/gradlew.bat b/packages/mediation/gma_mediation_mytarget/example/android/gradlew.bat new file mode 100644 index 000000000..aec99730b --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/android/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/packages/mediation/gma_mediation_mytarget/example/android/settings.gradle.kts b/packages/mediation/gma_mediation_mytarget/example/android/settings.gradle.kts new file mode 100644 index 000000000..b58f94546 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/android/settings.gradle.kts @@ -0,0 +1,25 @@ +pluginManagement { + val flutterSdkPath = run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("dev.flutter.flutter-plugin-loader") version "1.0.0" + id("com.android.application") version "8.7.0" apply false + id("org.jetbrains.kotlin.android") version "1.8.22" apply false +} + +include(":app") diff --git a/packages/mediation/gma_mediation_mytarget/example/gma_mediation_mytarget_example.iml b/packages/mediation/gma_mediation_mytarget/example/gma_mediation_mytarget_example.iml new file mode 100644 index 000000000..f66303d53 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/gma_mediation_mytarget_example.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Flutter/AppFrameworkInfo.plist b/packages/mediation/gma_mediation_mytarget/example/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 000000000..7c5696400 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 12.0 + + diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Flutter/Debug.xcconfig b/packages/mediation/gma_mediation_mytarget/example/ios/Flutter/Debug.xcconfig new file mode 100644 index 000000000..592ceee85 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Flutter/Release.xcconfig b/packages/mediation/gma_mediation_mytarget/example/ios/Flutter/Release.xcconfig new file mode 100644 index 000000000..592ceee85 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcodeproj/project.pbxproj b/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..6ab4a521a --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,616 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMytargetExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMytargetExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMytargetExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMytargetExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMytargetExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.flutter.plugins.googlemobileads.mediation.gmaMediationMytargetExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..919434a62 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 000000000..15cada483 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..1d526a16e --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/AppDelegate.swift b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/AppDelegate.swift new file mode 100644 index 000000000..626664468 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Flutter +import UIKit + +@main +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..d36b1fab2 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 000000000..dc9ada472 Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 000000000..7353c41ec Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 000000000..797d452e4 Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 000000000..6ed2d933e Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 000000000..4cd7b0099 Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 000000000..fe730945a Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 000000000..321773cd8 Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 000000000..797d452e4 Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 000000000..502f463a9 Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 000000000..0ec303439 Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 000000000..0ec303439 Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 000000000..e9f5fea27 Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 000000000..84ac32ae7 Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 000000000..8953cba09 Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 000000000..0467bf12a Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 000000000..0bedcf2fd --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 000000000..9da19eaca Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 000000000..9da19eaca Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 000000000..9da19eaca Binary files /dev/null and b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 000000000..89c2725b7 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 000000000..f2e259c7c --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Base.lproj/Main.storyboard b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 000000000..f3c28516f --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Info.plist b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Info.plist new file mode 100644 index 000000000..decee1627 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Gma Mediation Mytarget + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + gma_mediation_mytarget_example + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Runner-Bridging-Header.h b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 000000000..308a2a560 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/packages/mediation/gma_mediation_mytarget/example/ios/RunnerTests/GmaMediationmytargetPluginTests.swift b/packages/mediation/gma_mediation_mytarget/example/ios/RunnerTests/GmaMediationmytargetPluginTests.swift new file mode 100644 index 000000000..f8d21dc1a --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/ios/RunnerTests/GmaMediationmytargetPluginTests.swift @@ -0,0 +1,20 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import UIKit +import XCTest + +@testable import gma_mediation_mytarget + +class GmaMediationmytargetPluginTests: XCTestCase {} diff --git a/packages/mediation/gma_mediation_mytarget/example/lib/main.dart b/packages/mediation/gma_mediation_mytarget/example/lib/main.dart new file mode 100644 index 000000000..ea02decb7 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/lib/main.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatefulWidget { + const MyApp({super.key}); + + @override + State createState() => _MyAppState(); +} + +class _MyAppState extends State { + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + appBar: AppBar(title: const Text('Plugin example app')), + body: const Center(child: Text('Test app')), + ), + ); + } +} diff --git a/packages/mediation/gma_mediation_mytarget/example/pubspec.lock b/packages/mediation/gma_mediation_mytarget/example/pubspec.lock new file mode 100644 index 000000000..7417a0b17 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/pubspec.lock @@ -0,0 +1,323 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 + url: "https://pub.dev" + source: hosted + version: "2.12.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + characters: + dependency: transitive + description: + name: characters + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" + source: hosted + version: "1.0.8" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" + url: "https://pub.dev" + source: hosted + version: "1.3.2" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_driver: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + fuchsia_remote_debug_protocol: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + gma_mediation_mytarget: + dependency: "direct main" + description: + path: ".." + relative: true + source: path + version: "1.0.0" + google_mobile_ads: + dependency: transitive + description: + name: google_mobile_ads + sha256: "0d4a3744b5e8ed1b8be6a1b452d309f811688855a497c6113fc4400f922db603" + url: "https://pub.dev" + source: hosted + version: "5.3.1" + integration_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec + url: "https://pub.dev" + source: hosted + version: "10.0.8" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + url: "https://pub.dev" + source: hosted + version: "3.0.9" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + lints: + dependency: transitive + description: + name: lints + sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + url: "https://pub.dev" + source: hosted + version: "5.1.1" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + url: "https://pub.dev" + source: hosted + version: "1.16.0" + path: + dependency: transitive + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + platform: + dependency: transitive + description: + name: platform + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" + url: "https://pub.dev" + source: hosted + version: "3.1.6" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + process: + dependency: transitive + description: + name: process + sha256: "107d8be718f120bbba9dcd1e95e3bd325b1b4a4f07db64154635ba03f2567a0d" + url: "https://pub.dev" + source: hosted + version: "5.0.3" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + url: "https://pub.dev" + source: hosted + version: "1.10.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + sync_http: + dependency: transitive + description: + name: sync_http + sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" + url: "https://pub.dev" + source: hosted + version: "0.3.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test_api: + dependency: transitive + description: + name: test_api + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + url: "https://pub.dev" + source: hosted + version: "0.7.4" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" + url: "https://pub.dev" + source: hosted + version: "14.3.1" + webdriver: + dependency: transitive + description: + name: webdriver + sha256: "3d773670966f02a646319410766d3b5e1037efb7f07cc68f844d5e06cd4d61c8" + url: "https://pub.dev" + source: hosted + version: "3.0.4" + webview_flutter: + dependency: transitive + description: + name: webview_flutter + sha256: "889a0a678e7c793c308c68739996227c9661590605e70b1f6cf6b9a6634f7aec" + url: "https://pub.dev" + source: hosted + version: "4.10.0" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: "512c26ccc5b8a571fd5d13ec994b7509f142ff6faf85835e243dde3538fdc713" + url: "https://pub.dev" + source: hosted + version: "4.3.2" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d + url: "https://pub.dev" + source: hosted + version: "2.10.0" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: d7403ef4f042714c9ee2b26eaac4cadae7394cb0d4e608b1dd850c3ff96bd893 + url: "https://pub.dev" + source: hosted + version: "3.18.2" +sdks: + dart: ">=3.7.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/packages/mediation/gma_mediation_mytarget/example/pubspec.yaml b/packages/mediation/gma_mediation_mytarget/example/pubspec.yaml new file mode 100644 index 000000000..ee37b0329 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/example/pubspec.yaml @@ -0,0 +1,86 @@ +name: gma_mediation_mytarget_example +description: "Demonstrates how to use the gma_mediation_mytarget plugin." +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +environment: + sdk: ^3.7.0 + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + + google_mobile_ads: ^6.0.0 + gma_mediation_mytarget: + # When depending on this package from a real application you should use: + # gma_mediation_mytarget: ^x.y.z + # See https://dart.dev/tools/pub/dependencies#version-constraints + # The example app is bundled with the plugin so we use a path dependency on + # the parent directory to use the current plugin's version. + path: ../ + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.8 + +dev_dependencies: + integration_test: + sdk: flutter + flutter_test: + sdk: flutter + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^5.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/to/resolution-aware-images + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/to/asset-from-package + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/to/font-from-package diff --git a/packages/mediation/gma_mediation_mytarget/gma_mediation_mytarget.iml b/packages/mediation/gma_mediation_mytarget/gma_mediation_mytarget.iml new file mode 100644 index 000000000..27686dd4b --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/gma_mediation_mytarget.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/mediation/gma_mediation_mytarget/ios/Classes/GmaMediationmytargetPlugin.swift b/packages/mediation/gma_mediation_mytarget/ios/Classes/GmaMediationmytargetPlugin.swift new file mode 100644 index 000000000..35b8bbb6c --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/ios/Classes/GmaMediationmytargetPlugin.swift @@ -0,0 +1,23 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import Flutter +import UIKit + +/// Required to link the iOS dependency of the mytarget Adapter. +public class GmaMediationmytargetPlugin: NSObject, FlutterPlugin { + public static func register(with registrar: FlutterPluginRegistrar) {} + + public func detachFromEngine(for registrar: FlutterPluginRegistrar) {} +} diff --git a/packages/mediation/gma_mediation_mytarget/ios/Classes/MytargetFlutterMediationExtras.swift b/packages/mediation/gma_mediation_mytarget/ios/Classes/MytargetFlutterMediationExtras.swift new file mode 100644 index 000000000..46459c4b4 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/ios/Classes/MytargetFlutterMediationExtras.swift @@ -0,0 +1,34 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import Foundation +import MyTargetAdapter + +@objc protocol FLTMediationExtras { + var extras: NSMutableDictionary { get } + func getMediationExtras() -> AdNetworkExtras +} + +@objc(MytargetFlutterMediationExtras) +class MytargetFlutterMediationExtras: NSObject, FLTMediationExtras { + var extras: NSMutableDictionary = [:] + + func getMediationExtras() -> AdNetworkExtras { + let mytargetExtras = GADMAdapterMyTargetExtras() + if let isIOSDebugMode = extras["isIOSDebugMode"] as? Bool { + mytargetExtras.isDebugMode = isIOSDebugMode + } + return mytargetExtras + } +} diff --git a/packages/mediation/gma_mediation_mytarget/ios/Resources/PrivacyInfo.xcprivacy b/packages/mediation/gma_mediation_mytarget/ios/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 000000000..a34b7e2e6 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/ios/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,14 @@ + + + + + NSPrivacyTrackingDomains + + NSPrivacyAccessedAPITypes + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/packages/mediation/gma_mediation_mytarget/ios/gma_mediation_mytarget.podspec b/packages/mediation/gma_mediation_mytarget/ios/gma_mediation_mytarget.podspec new file mode 100644 index 000000000..0998214b9 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/ios/gma_mediation_mytarget.podspec @@ -0,0 +1,21 @@ +Pod::Spec.new do |s| + s.name = 'gma_mediation_mytarget' + s.version = '1.2.0' + s.summary = 'Google Mobile Ads Mediation of mytarget.' + s.description = <<-DESC + Mediation Adapter for mytarget to use with Google Mobile Ads. + DESC + s.homepage = 'https://developers.google.com/admob/flutter/mediation/mytarget' + s.license = { :file => '../LICENSE' } + s.author = { 'Google LLC' => 'mediation-support@google.com' } + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + s.dependency 'Flutter' + s.dependency 'GoogleMobileAdsMediationMyTarget', '~>5.29.1.0' + s.platform = :ios, '12.4' + s.static_framework = true + + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } + s.swift_version = '5.0' + +end diff --git a/packages/mediation/gma_mediation_mytarget/lib/gma_mediation_mytarget.dart b/packages/mediation/gma_mediation_mytarget/lib/gma_mediation_mytarget.dart new file mode 100644 index 000000000..175cd45dc --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/lib/gma_mediation_mytarget.dart @@ -0,0 +1,16 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/// This empty class is needed to allow correct compatibility analysis with host platforms. +class GmaMediationmytarget {} diff --git a/packages/mediation/gma_mediation_mytarget/lib/mytarget_mediation_extras.dart b/packages/mediation/gma_mediation_mytarget/lib/mytarget_mediation_extras.dart new file mode 100644 index 000000000..3f0c7a44b --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/lib/mytarget_mediation_extras.dart @@ -0,0 +1,39 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import 'package:google_mobile_ads/google_mobile_ads.dart'; + +/// Extra information sent to the mytarget adapter through an [AdRequest] or an [AdManagerAdRequest]. +class MytargetMediationExtras implements MediationExtras { + /// Default constructor with required extras value. + const MytargetMediationExtras({required this.isIOSDebugMode}); + + /// Specifies whether to enable logging for iOS. + final bool isIOSDebugMode; + + @override + String getAndroidClassName() { + return 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_mytarget.MytargetFlutterMediationExtras'; + } + + @override + String getIOSClassName() { + return 'MytargetFlutterMediationExtras'; + } + + @override + Map getExtras() { + return {'isIOSDebugMode': isIOSDebugMode}; + } +} diff --git a/packages/mediation/gma_mediation_mytarget/pigeons/mytarget_sdk_api.dart b/packages/mediation/gma_mediation_mytarget/pigeons/mytarget_sdk_api.dart new file mode 100644 index 000000000..65823f3b8 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/pigeons/mytarget_sdk_api.dart @@ -0,0 +1,36 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import 'package:pigeon/pigeon.dart'; + +@ConfigurePigeon( + PigeonOptions( + dartOut: 'lib/mytarget_sdk_api.g.dart', + dartOptions: DartOptions(), + kotlinOut: + 'android/src/main/kotlin/io/flutter/plugins/googlemobileads/mediation/gma_mediation_mytarget/mytargetSDKApi.g.kt', + kotlinOptions: KotlinOptions( + package: + "io.flutter.plugins.googlemobileads.mediation.gma_mediation_mytarget", + ), + swiftOut: 'ios/Classes/mytargetSDKApi.g.swift', + swiftOptions: SwiftOptions(), + dartPackageName: 'gma_mediation_mytarget', + ), +) +@HostApi() +/// The generated classes set the channels to call the methods in the corresponding kotlin mytargetSDKApi interface and swift mytargetSDKApi protocol from the dart layer. +abstract class mytargetSDKApi { + // TODO: Add SDK methods here. +} diff --git a/packages/mediation/gma_mediation_mytarget/pubspec.lock b/packages/mediation/gma_mediation_mytarget/pubspec.lock new file mode 100644 index 000000000..32c7205b0 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/pubspec.lock @@ -0,0 +1,413 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: dc27559385e905ad30838356c5f5d574014ba39872d732111cd07ac0beff4c57 + url: "https://pub.dev" + source: hosted + version: "80.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: "192d1c5b944e7e53b24b5586db760db934b177d4147c42fbca8c8c5f1eb8d11e" + url: "https://pub.dev" + source: hosted + version: "7.3.0" + args: + dependency: transitive + description: + name: args + sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6 + url: "https://pub.dev" + source: hosted + version: "2.6.0" + async: + dependency: transitive + description: + name: async + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 + url: "https://pub.dev" + source: hosted + version: "2.12.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + built_collection: + dependency: transitive + description: + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: "28a712df2576b63c6c005c465989a348604960c0958d28be5303ba9baa841ac2" + url: "https://pub.dev" + source: hosted + version: "8.9.3" + characters: + dependency: transitive + description: + name: characters + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + code_builder: + dependency: transitive + description: + name: code_builder + sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e" + url: "https://pub.dev" + source: hosted + version: "4.10.1" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + convert: + dependency: transitive + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + crypto: + dependency: transitive + description: + name: crypto + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + url: "https://pub.dev" + source: hosted + version: "3.0.6" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: "27eb0ae77836989a3bc541ce55595e8ceee0992807f14511552a898ddd0d88ac" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" + url: "https://pub.dev" + source: hosted + version: "1.3.2" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be + url: "https://pub.dev" + source: hosted + version: "1.1.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + glob: + dependency: transitive + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" + google_mobile_ads: + dependency: "direct main" + description: + name: google_mobile_ads + sha256: "0d4a3744b5e8ed1b8be6a1b452d309f811688855a497c6113fc4400f922db603" + url: "https://pub.dev" + source: hosted + version: "5.3.1" + graphs: + dependency: transitive + description: + name: graphs + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec + url: "https://pub.dev" + source: hosted + version: "10.0.8" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + url: "https://pub.dev" + source: hosted + version: "3.0.9" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + lint: + dependency: "direct dev" + description: + name: lint + sha256: "68d71111816dc7c1de358281e506efe574bb5072eae4a19f8a57484bf96825f5" + url: "https://pub.dev" + source: hosted + version: "2.6.1" + lints: + dependency: transitive + description: + name: lints + sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + url: "https://pub.dev" + source: hosted + version: "5.1.1" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + url: "https://pub.dev" + source: hosted + version: "1.16.0" + package_config: + dependency: transitive + description: + name: package_config + sha256: "92d4488434b520a62570293fbd33bb556c7d49230791c1b4bbd973baf6d2dc67" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + path: + dependency: transitive + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + pigeon: + dependency: "direct dev" + description: + name: pigeon + sha256: "1bab69b62617e5f31cf84dcab82c62aa21b7883055f0ca7ff93e76651eef8575" + url: "https://pub.dev" + source: hosted + version: "24.2.1" + plugin_platform_interface: + dependency: "direct main" + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "7b3cfbf654f3edd0c6298ecd5be782ce997ddf0e00531b9464b55245185bbbbd" + url: "https://pub.dev" + source: hosted + version: "2.1.5" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + url: "https://pub.dev" + source: hosted + version: "1.10.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test_api: + dependency: transitive + description: + name: test_api + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + url: "https://pub.dev" + source: hosted + version: "0.7.4" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" + url: "https://pub.dev" + source: hosted + version: "14.3.1" + watcher: + dependency: transitive + description: + name: watcher + sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + webview_flutter: + dependency: transitive + description: + name: webview_flutter + sha256: "889a0a678e7c793c308c68739996227c9661590605e70b1f6cf6b9a6634f7aec" + url: "https://pub.dev" + source: hosted + version: "4.10.0" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: "512c26ccc5b8a571fd5d13ec994b7509f142ff6faf85835e243dde3538fdc713" + url: "https://pub.dev" + source: hosted + version: "4.3.2" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d + url: "https://pub.dev" + source: hosted + version: "2.10.0" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: d7403ef4f042714c9ee2b26eaac4cadae7394cb0d4e608b1dd850c3ff96bd893 + url: "https://pub.dev" + source: hosted + version: "3.18.2" + yaml: + dependency: transitive + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" +sdks: + dart: ">=3.7.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/packages/mediation/gma_mediation_mytarget/pubspec.yaml b/packages/mediation/gma_mediation_mytarget/pubspec.yaml new file mode 100644 index 000000000..3afc15704 --- /dev/null +++ b/packages/mediation/gma_mediation_mytarget/pubspec.yaml @@ -0,0 +1,27 @@ +name: gma_mediation_mytarget +description: 'Mediation Adapter that enables sending ad requests to the mytarget + ad network using the google_mobile_ads plugin.' +version: 1.2.0 +environment: + sdk: ^3.7.0 + flutter: '>=3.27.0' +dependencies: + flutter: + sdk: flutter + google_mobile_ads: ^6.0.0 + plugin_platform_interface: ^2.0.2 +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^5.0.0 + lint: ^2.6.1 + pigeon: ^24.2.1 +flutter: + plugin: + platforms: + android: + package: io.flutter.plugins.googlemobileads.mediation.gma_mediation_mytarget + pluginClass: GmaMediationmytargetPlugin + ios: + pluginClass: GmaMediationmytargetPlugin +repository: https://github.com/googleads/googleads-mobile-flutter/tree/main/packages/mediation/gma_mediation_mytarget diff --git a/packages/mediation/gma_mediation_pangle/CHANGELOG.md b/packages/mediation/gma_mediation_pangle/CHANGELOG.md index 95a816b64..4724a7408 100644 --- a/packages/mediation/gma_mediation_pangle/CHANGELOG.md +++ b/packages/mediation/gma_mediation_pangle/CHANGELOG.md @@ -1,20 +1,27 @@ ## Pangle Flutter Mediation Adapter Changelog -#### Next Version -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.2.0. +#### Version 2.2.0 +- Supports [Pangle Android adapter version 6.5.0.8.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/pangle/CHANGELOG.md#version-65080). +- Supports [Pangle iOS adapter version 6.5.0.9.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Pangle/CHANGELOG.md#version-65090). +- Built and tested with the Google Mobile Ads Flutter Plugin version 6.0.0. -#### 2.0.0 -* Verified compatibility with Pangle Android adapter version 6.1.0.9.0. -* Verified compatibility with Pangle iOS adapter version 6.2.0.5.0. -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. +#### Version 2.1.0 +- Supports [Pangle Android adapter version 6.5.0.4.1](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/pangle/CHANGELOG.md#version-65041). +- Supports [Pangle iOS adapter version 6.5.0.8.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Pangle/CHANGELOG.md#version-65080). +- Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. -#### 1.1.0 -* Verified compatibility with Pangle Android adapter version 5.9.0.4.0. -* Verified compatibility with Pangle iOS adapter version 5.9.0.7.0. -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. +#### Version 2.0.0 +- Supports [Pangle Android adapter version 6.4.0.6.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/pangle/CHANGELOG.md#version-64060). +- Supports [Pangle iOS adapter version 6.4.1.1.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Pangle/CHANGELOG.md#version-64110). +- Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.0. -#### 1.0.0 -* Initial release. -* Verified compatibility with Pangle Android adapter version 5.8.0.9.0 -* Verified compatibility with Pangle iOS adapter version 5.8.0.8.0 -* Built and tested with the Google Mobile Ads Flutter Plugin version 5.0.0. +#### Version 1.1.0 +- Supports [Pangle Android adapter version 5.9.0.4.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/pangle/CHANGELOG.md#version-59040). +- Supports [Pangle iOS adapter version 5.9.0.7.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Pangle/CHANGELOG.md#version-59070). +- Built and tested with the Google Mobile Ads Flutter Plugin version 5.1.0. + +#### Version 1.0.0 +- Initial release. +- Supports [Pangle Android adapter version 5.8.0.9.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/pangle/CHANGELOG.md#version-58090). +- Supports [Pangle iOS adapter version 5.8.0.8.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Pangle/CHANGELOG.md#version-58080). +- Built and tested with the Google Mobile Ads Flutter Plugin version 5.0.1. \ No newline at end of file diff --git a/packages/mediation/gma_mediation_pangle/android/build.gradle b/packages/mediation/gma_mediation_pangle/android/build.gradle index 5467aa94b..06e472726 100644 --- a/packages/mediation/gma_mediation_pangle/android/build.gradle +++ b/packages/mediation/gma_mediation_pangle/android/build.gradle @@ -1,5 +1,5 @@ group 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_pangle' -version '1.0-SNAPSHOT' +version = "2.2.0" buildscript { ext.kotlin_version = '2.0.21' @@ -27,6 +27,10 @@ allprojects { apply plugin: 'com.android.library' apply plugin: 'kotlin-android' +ext { + stringVersion = "6.5.0.8.0" +} + android { if (project.android.hasProperty("namespace")) { namespace 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_pangle' @@ -49,11 +53,11 @@ android { } defaultConfig { - minSdkVersion 21 + minSdkVersion 23 } dependencies { - implementation 'com.google.ads.mediation:pangle:6.1.0.9.0' + implementation "com.google.ads.mediation:pangle:$stringVersion" testImplementation 'org.jetbrains.kotlin:kotlin-test' testImplementation 'org.mockito:mockito-core:5.0.0' } diff --git a/packages/mediation/gma_mediation_pangle/example/android/app/build.gradle b/packages/mediation/gma_mediation_pangle/example/android/app/build.gradle index fa2bb9b38..3a7497caa 100644 --- a/packages/mediation/gma_mediation_pangle/example/android/app/build.gradle +++ b/packages/mediation/gma_mediation_pangle/example/android/app/build.gradle @@ -45,7 +45,7 @@ android { applicationId "io.flutter.plugins.googlemobileads.mediation.gma_mediation_pangle_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 21 + minSdkVersion 23 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/packages/mediation/gma_mediation_pangle/example/pubspec.yaml b/packages/mediation/gma_mediation_pangle/example/pubspec.yaml index 4667991f7..aa47ab8f8 100644 --- a/packages/mediation/gma_mediation_pangle/example/pubspec.yaml +++ b/packages/mediation/gma_mediation_pangle/example/pubspec.yaml @@ -5,7 +5,7 @@ description: "Demonstrates how to use the gma_mediation_pangle plugin." publish_to: 'none' # Remove this line if you wish to publish to pub.dev environment: - sdk: '>=3.2.5 <4.0.0' + sdk: '>=3.6.0 <4.0.0' # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -17,6 +17,7 @@ dependencies: flutter: sdk: flutter + google_mobile_ads: ^6.0.0 gma_mediation_pangle: # When depending on this package from a real application you should use: # gma_mediation_pangle: ^x.y.z diff --git a/packages/mediation/gma_mediation_pangle/ios/gma_mediation_pangle.podspec b/packages/mediation/gma_mediation_pangle/ios/gma_mediation_pangle.podspec index bb35c59b6..ad7622c30 100644 --- a/packages/mediation/gma_mediation_pangle/ios/gma_mediation_pangle.podspec +++ b/packages/mediation/gma_mediation_pangle/ios/gma_mediation_pangle.podspec @@ -4,7 +4,7 @@ # Pod::Spec.new do |s| s.name = 'gma_mediation_pangle' - s.version = '2.0.0' + s.version = '2.2.0' s.summary = 'Google Mobile Ads Mediation of Pangle.' s.description = <<-DESC Mediation Adapter for Pangle to use with Google Mobile Ads. @@ -16,7 +16,7 @@ Pod::Spec.new do |s| s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'GoogleMobileAdsMediationPangle', '~> 6.2.0.5.0' + s.dependency 'GoogleMobileAdsMediationPangle', '~> 6.5.0.9.0' s.platform = :ios, '12.0' s.static_framework = true diff --git a/packages/mediation/gma_mediation_pangle/pubspec.yaml b/packages/mediation/gma_mediation_pangle/pubspec.yaml index ffa7c66f3..81f8bf723 100644 --- a/packages/mediation/gma_mediation_pangle/pubspec.yaml +++ b/packages/mediation/gma_mediation_pangle/pubspec.yaml @@ -1,16 +1,16 @@ name: gma_mediation_pangle description: "Mediation Adapter that enables sending ad requests to the Pangle ad network using the google_mobile_ads plugin." -version: 2.0.0 +version: 2.2.0 repository: https://github.com/googleads/googleads-mobile-flutter/tree/main/packages/mediation/gma_mediation_pangle environment: - sdk: '>=3.2.5 <4.0.0' - flutter: '>=3.3.0' + sdk: '>=3.6.0 <4.0.0' + flutter: '>=3.27.0' dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 plugin_platform_interface: ^2.0.2 dev_dependencies: diff --git a/packages/mediation/gma_mediation_unity/CHANGELOG.md b/packages/mediation/gma_mediation_unity/CHANGELOG.md index dfd3d1194..06d5f4e4f 100644 --- a/packages/mediation/gma_mediation_unity/CHANGELOG.md +++ b/packages/mediation/gma_mediation_unity/CHANGELOG.md @@ -1,12 +1,27 @@ ## Unity Ads Flutter Mediation Adapter Changelog +#### Version 1.4.0 +- Supports [Unity Android adapter version 4.14.1.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/unity/CHANGELOG.md#version-41410). +- Supports [Unity iOS adapter version 4.14.1.1](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Unity/CHANGELOG.md#version-41411). +* Built and tested with the Google Mobile Ads Flutter Plugin version 6.0.0. + +#### Version 1.3.0 +- Supports [Unity Android adapter version 4.13.1.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/unity/CHANGELOG.md#version-41310). +- Supports [Unity iOS adapter version 4.13.1.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Unity/CHANGELOG.md#version-41310). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. + +#### Version 1.2.0 +- Supports [Unity Android adapter version 4.13.0.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/unity/CHANGELOG.md#version-41300). +- Supports [Unity iOS adapter version 4.12.5.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Unity/CHANGELOG.md#version-41250). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.3.1. + #### Version 1.1.0 -- Verified compatibility with Unity Android adapter version 4.12.3.0 -- Verified compatibility with Unity iOS adapter version 4.12.3.1 -- Built and tested with the Google Mobile Ads Flutter Plugin version 5.2.0. +- Supports [Unity Android adapter version 4.12.3.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/unity/CHANGELOG.md#version-41230). +- Supports [Unity iOS adapter version 4.12.3.1](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Unity/CHANGELOG.md#version-41231). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.2.0. #### Version 1.0.0 - Initial release. -- Verified compatibility with Unity Android adapter version 4.10.0.0 -- Verified compatibility with Unity iOS adapter version 4.10.0.0 -- Built and tested with the Google Mobile Ads Flutter Plugin version 5.0.0. +- Supports [Unity Android adapter version 4.10.0.0](https://github.com/googleads/googleads-mobile-android-mediation/blob/main/ThirdPartyAdapters/unity/CHANGELOG.md#version-41000). +- Supports [Unity iOS adapter version 4.10.0.0](https://github.com/googleads/googleads-mobile-ios-mediation/blob/main/adapters/Unity/CHANGELOG.md#version-41000). +* Built and tested with the Google Mobile Ads Flutter Plugin version 5.0.0. diff --git a/packages/mediation/gma_mediation_unity/android/build.gradle b/packages/mediation/gma_mediation_unity/android/build.gradle index f09e4d74a..db61dacc2 100644 --- a/packages/mediation/gma_mediation_unity/android/build.gradle +++ b/packages/mediation/gma_mediation_unity/android/build.gradle @@ -1,5 +1,5 @@ group 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_unity' -version '1.0-SNAPSHOT' +version = "1.4.1" buildscript { ext.kotlin_version = '2.0.21' @@ -24,6 +24,10 @@ allprojects { apply plugin: 'com.android.library' apply plugin: 'kotlin-android' +ext { + stringVersion = "4.14.2.0" +} + android { if (project.android.hasProperty("namespace")) { namespace 'io.flutter.plugins.googlemobileads.mediation.gma_mediation_unity' @@ -46,13 +50,13 @@ android { } defaultConfig { - minSdkVersion 21 + minSdkVersion 23 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } dependencies { - implementation 'com.unity3d.ads:unity-ads:4.12.3' - implementation 'com.google.ads.mediation:unity:4.12.3.0' + implementation 'com.unity3d.ads:unity-ads:4.13.0' + implementation "com.google.ads.mediation:unity:$stringVersion" testImplementation 'junit:junit:4.13.2' testImplementation 'androidx.test:core:1.5.0' testImplementation 'androidx.test:core-ktx:1.5.0' diff --git a/packages/mediation/gma_mediation_unity/example/android/app/build.gradle b/packages/mediation/gma_mediation_unity/example/android/app/build.gradle index d1e82dd7d..994f31fd9 100644 --- a/packages/mediation/gma_mediation_unity/example/android/app/build.gradle +++ b/packages/mediation/gma_mediation_unity/example/android/app/build.gradle @@ -45,7 +45,7 @@ android { applicationId "io.flutter.plugins.googlemobileads.mediation.gma_mediation_unity_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion flutter.minSdkVersion + minSdkVersion 23 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/packages/mediation/gma_mediation_unity/example/pubspec.yaml b/packages/mediation/gma_mediation_unity/example/pubspec.yaml index aa56cfbfc..a8028c220 100644 --- a/packages/mediation/gma_mediation_unity/example/pubspec.yaml +++ b/packages/mediation/gma_mediation_unity/example/pubspec.yaml @@ -5,12 +5,13 @@ description: "Demonstrates how to use the gma_mediation_unity plugin." publish_to: 'none' # Remove this line if you wish to publish to pub.dev environment: - sdk: '>=3.2.5 <4.0.0' + sdk: '>=3.6.0 <4.0.0' dependencies: flutter: sdk: flutter + google_mobile_ads: ^6.0.0 gma_mediation_unity: path: ../ diff --git a/packages/mediation/gma_mediation_unity/ios/gma_mediation_unity.podspec b/packages/mediation/gma_mediation_unity/ios/gma_mediation_unity.podspec index 83ac10c4e..5e278ac4b 100644 --- a/packages/mediation/gma_mediation_unity/ios/gma_mediation_unity.podspec +++ b/packages/mediation/gma_mediation_unity/ios/gma_mediation_unity.podspec @@ -4,7 +4,7 @@ # Pod::Spec.new do |s| s.name = 'gma_mediation_unity' - s.version = '1.1.0' + s.version = '1.4.1' s.summary = 'Google Mobile Ads Mediation of Unity Ads.' s.description = <<-DESC Mediation Adapter for Unity Ads to use with Google Mobile Ads. @@ -16,7 +16,7 @@ Mediation Adapter for Unity Ads to use with Google Mobile Ads. s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'GoogleMobileAdsMediationUnity', '~>4.12.3.1' + s.dependency 'GoogleMobileAdsMediationUnity', '~>4.14.2.0' s.platform = :ios, '12.0' s.static_framework = true diff --git a/packages/mediation/gma_mediation_unity/pubspec.yaml b/packages/mediation/gma_mediation_unity/pubspec.yaml index 70f844ef3..20f94c011 100644 --- a/packages/mediation/gma_mediation_unity/pubspec.yaml +++ b/packages/mediation/gma_mediation_unity/pubspec.yaml @@ -1,16 +1,16 @@ name: gma_mediation_unity description: "Mediation Adapter that enables sending ad requests to the Unity ad network using the google_mobile_ads plugin." -version: 1.1.0 +version: 1.4.1 repository: https://github.com/googleads/googleads-mobile-flutter/tree/main/packages/mediation/gma_mediation_unity environment: - sdk: '>=3.2.5 <4.0.0' - flutter: '>=3.3.0' + sdk: '>=3.6.0 <4.0.0' + flutter: '>=3.27.0' dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 plugin_platform_interface: ^2.0.2 dev_dependencies: diff --git a/samples/admob/app_open_example/.gitignore b/samples/admob/app_open_example/.gitignore index 29a3a5017..79c113f9b 100644 --- a/samples/admob/app_open_example/.gitignore +++ b/samples/admob/app_open_example/.gitignore @@ -5,9 +5,11 @@ *.swp .DS_Store .atom/ +.build/ .buildlog/ .history .svn/ +.swiftpm/ migrate_working_dir/ # IntelliJ related diff --git a/samples/admob/app_open_example/android/app/build.gradle b/samples/admob/app_open_example/android/app/build.gradle index e5114805e..0cd412804 100644 --- a/samples/admob/app_open_example/android/app/build.gradle +++ b/samples/admob/app_open_example/android/app/build.gradle @@ -25,7 +25,7 @@ if (flutterVersionName == null) { android { namespace "com.example.app_open_example" compileSdkVersion flutter.compileSdkVersion - ndkVersion = "26.1.10909125" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -45,7 +45,7 @@ android { applicationId "com.example.app_open_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 21 + minSdkVersion 23 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/samples/admob/app_open_example/android/build.gradle b/samples/admob/app_open_example/android/build.gradle index 2a2de2524..bc157bd1a 100644 --- a/samples/admob/app_open_example/android/build.gradle +++ b/samples/admob/app_open_example/android/build.gradle @@ -1,15 +1,3 @@ -buildscript { - ext.kotlin_version = '1.9.0' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { google() diff --git a/samples/admob/app_open_example/android/settings.gradle b/samples/admob/app_open_example/android/settings.gradle index 7cd712855..f4e0879bf 100644 --- a/samples/admob/app_open_example/android/settings.gradle +++ b/samples/admob/app_open_example/android/settings.gradle @@ -5,25 +5,21 @@ pluginManagement { def flutterSdkPath = properties.getProperty("flutter.sdk") assert flutterSdkPath != null, "flutter.sdk not set in local.properties" return flutterSdkPath - } - settings.ext.flutterSdkPath = flutterSdkPath() + }() - includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") repositories { google() mavenCentral() gradlePluginPortal() } - - plugins { - id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false - } } plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "7.3.0" apply false + id "com.android.application" version "8.6.0" apply false + id "org.jetbrains.kotlin.android" version "2.1.0" apply false } -include ":app" +include ":app" \ No newline at end of file diff --git a/samples/admob/app_open_example/lib/app_lifecycle_reactor.dart b/samples/admob/app_open_example/lib/app_lifecycle_reactor.dart index 08f4ecebc..b3ef98eee 100644 --- a/samples/admob/app_open_example/lib/app_lifecycle_reactor.dart +++ b/samples/admob/app_open_example/lib/app_lifecycle_reactor.dart @@ -25,8 +25,9 @@ class AppLifecycleReactor { void listenToAppStateChanges() { AppStateEventNotifier.startListening(); - AppStateEventNotifier.appStateStream - .forEach((state) => _onAppStateChanged(state)); + AppStateEventNotifier.appStateStream.forEach( + (state) => _onAppStateChanged(state), + ); } void _onAppStateChanged(AppState appState) { diff --git a/samples/admob/app_open_example/lib/consent_manager.dart b/samples/admob/app_open_example/lib/consent_manager.dart index f429d449b..10e097a39 100644 --- a/samples/admob/app_open_example/lib/consent_manager.dart +++ b/samples/admob/app_open_example/lib/consent_manager.dart @@ -20,35 +20,42 @@ class ConsentManager { /// Helper variable to determine if the privacy options form is required. Future isPrivacyOptionsRequired() async { return await ConsentInformation.instance - .getPrivacyOptionsRequirementStatus() == + .getPrivacyOptionsRequirementStatus() == PrivacyOptionsRequirementStatus.required; } /// Helper method to call the Mobile Ads SDK to request consent information /// and load/show a consent form if necessary. void gatherConsent( - OnConsentGatheringCompleteListener onConsentGatheringCompleteListener) { + OnConsentGatheringCompleteListener onConsentGatheringCompleteListener, + ) { // For testing purposes, you can force a DebugGeography of Eea or NotEea. ConsentDebugSettings debugSettings = ConsentDebugSettings( // debugGeography: DebugGeography.debugGeographyEea, ); - ConsentRequestParameters params = - ConsentRequestParameters(consentDebugSettings: debugSettings); + ConsentRequestParameters params = ConsentRequestParameters( + consentDebugSettings: debugSettings, + ); // Requesting an update to consent information should be called on every app launch. - ConsentInformation.instance.requestConsentInfoUpdate(params, () async { - ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) { - // Consent has been gathered. - onConsentGatheringCompleteListener(loadAndShowError); - }); - }, (FormError formError) { - onConsentGatheringCompleteListener(formError); - }); + ConsentInformation.instance.requestConsentInfoUpdate( + params, + () async { + ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) { + // Consent has been gathered. + onConsentGatheringCompleteListener(loadAndShowError); + }); + }, + (FormError formError) { + onConsentGatheringCompleteListener(formError); + }, + ); } /// Helper method to call the Mobile Ads SDK method to show the privacy options form. void showPrivacyOptionsForm( - OnConsentFormDismissedListener onConsentFormDismissedListener) { + OnConsentFormDismissedListener onConsentFormDismissedListener, + ) { ConsentForm.showPrivacyOptionsForm(onConsentFormDismissedListener); } -} \ No newline at end of file +} diff --git a/samples/admob/app_open_example/lib/main.dart b/samples/admob/app_open_example/lib/main.dart index 8112bcee2..6a463b7ae 100644 --- a/samples/admob/app_open_example/lib/main.dart +++ b/samples/admob/app_open_example/lib/main.dart @@ -33,9 +33,7 @@ class MainApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( - theme: ThemeData( - primarySwatch: Colors.blue, - ), + theme: ThemeData(primarySwatch: Colors.blue), home: const HomePage(), ); } @@ -59,15 +57,17 @@ class _HomePageState extends State { void initState() { super.initState(); - _appLifecycleReactor = - AppLifecycleReactor(appOpenAdManager: _appOpenAdManager); + _appLifecycleReactor = AppLifecycleReactor( + appOpenAdManager: _appOpenAdManager, + ); _appLifecycleReactor.listenToAppStateChanges(); ConsentManager.instance.gatherConsent((consentGatheringError) { if (consentGatheringError != null) { // Consent not obtained in current session. debugPrint( - "${consentGatheringError.errorCode}: ${consentGatheringError.message}"); + "${consentGatheringError.errorCode}: ${consentGatheringError.message}", + ); } // Check if a privacy options entry point is required. @@ -92,9 +92,7 @@ class _HomePageState extends State { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - Text( - 'Leave and switch back to the app to see the ad.', - ), + Text('Leave and switch back to the app to see the ad.'), ], ), ), @@ -110,28 +108,29 @@ class _HomePageState extends State { return [ PopupMenuButton( - itemBuilder: (context) => array - .map((item) => PopupMenuItem( - value: item, - child: Text( - item.label, - ), - )) - .toList(), - onSelected: (item) { - switch (item.value) { - case 0: - MobileAds.instance.openAdInspector((error) { - // Error will be non-null if ad inspector closed due to an error. - }); - case 1: - ConsentManager.instance.showPrivacyOptionsForm((formError) { - if (formError != null) { - debugPrint("${formError.errorCode}: ${formError.message}"); - } - }); - } - }) + itemBuilder: (context) => array + .map( + (item) => PopupMenuItem( + value: item, + child: Text(item.label), + ), + ) + .toList(), + onSelected: (item) { + switch (item.value) { + case 0: + MobileAds.instance.openAdInspector((error) { + // Error will be non-null if ad inspector closed due to an error. + }); + case 1: + ConsentManager.instance.showPrivacyOptionsForm((formError) { + if (formError != null) { + debugPrint("${formError.errorCode}: ${formError.message}"); + } + }); + } + }, + ), ]; } diff --git a/samples/admob/app_open_example/pubspec.yaml b/samples/admob/app_open_example/pubspec.yaml index 1408a0aa9..826f8251d 100644 --- a/samples/admob/app_open_example/pubspec.yaml +++ b/samples/admob/app_open_example/pubspec.yaml @@ -9,12 +9,12 @@ environment: dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^2.0.0 + flutter_lints: ^5.0.0 flutter: uses-material-design: true diff --git a/samples/admob/banner_example/.gitignore b/samples/admob/banner_example/.gitignore index 24476c5d1..6c319542b 100644 --- a/samples/admob/banner_example/.gitignore +++ b/samples/admob/banner_example/.gitignore @@ -5,9 +5,11 @@ *.swp .DS_Store .atom/ +.build/ .buildlog/ .history .svn/ +.swiftpm/ migrate_working_dir/ # IntelliJ related diff --git a/samples/admob/banner_example/android/app/build.gradle b/samples/admob/banner_example/android/app/build.gradle index 6007fea25..e62eed0f9 100644 --- a/samples/admob/banner_example/android/app/build.gradle +++ b/samples/admob/banner_example/android/app/build.gradle @@ -25,7 +25,7 @@ if (flutterVersionName == null) { android { namespace "com.example.banner_example" compileSdkVersion flutter.compileSdkVersion - ndkVersion = "26.1.10909125" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -45,7 +45,7 @@ android { applicationId "com.example.banner_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 21 + minSdkVersion 23 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/samples/admob/banner_example/android/build.gradle b/samples/admob/banner_example/android/build.gradle index 417ab3750..bc157bd1a 100644 --- a/samples/admob/banner_example/android/build.gradle +++ b/samples/admob/banner_example/android/build.gradle @@ -1,16 +1,3 @@ -buildscript { - ext.kotlin_version = '1.9.0' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:8.6.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { google() diff --git a/samples/admob/banner_example/android/settings.gradle b/samples/admob/banner_example/android/settings.gradle index 55c4ca8b1..c7b131ad9 100644 --- a/samples/admob/banner_example/android/settings.gradle +++ b/samples/admob/banner_example/android/settings.gradle @@ -5,16 +5,21 @@ pluginManagement { def flutterSdkPath = properties.getProperty("flutter.sdk") assert flutterSdkPath != null, "flutter.sdk not set in local.properties" return flutterSdkPath - } - settings.ext.flutterSdkPath = flutterSdkPath() + }() - includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") - plugins { - id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false + repositories { + google() + mavenCentral() + gradlePluginPortal() } } -include ":app" +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.6.0" apply false + id "org.jetbrains.kotlin.android" version "1.9.0" apply false +} -apply from: "${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle/app_plugin_loader.gradle" +include ":app" \ No newline at end of file diff --git a/samples/admob/banner_example/lib/consent_manager.dart b/samples/admob/banner_example/lib/consent_manager.dart index 36e8e1200..60db83b8c 100644 --- a/samples/admob/banner_example/lib/consent_manager.dart +++ b/samples/admob/banner_example/lib/consent_manager.dart @@ -1,4 +1,3 @@ - import 'dart:async'; import 'package:google_mobile_ads/google_mobile_ads.dart'; @@ -18,35 +17,42 @@ class ConsentManager { /// Helper variable to determine if the privacy options form is required. Future isPrivacyOptionsRequired() async { return await ConsentInformation.instance - .getPrivacyOptionsRequirementStatus() == + .getPrivacyOptionsRequirementStatus() == PrivacyOptionsRequirementStatus.required; } /// Helper method to call the Mobile Ads SDK to request consent information /// and load/show a consent form if necessary. void gatherConsent( - OnConsentGatheringCompleteListener onConsentGatheringCompleteListener) { + OnConsentGatheringCompleteListener onConsentGatheringCompleteListener, + ) { // For testing purposes, you can force a DebugGeography of Eea or NotEea. ConsentDebugSettings debugSettings = ConsentDebugSettings( // debugGeography: DebugGeography.debugGeographyEea, ); - ConsentRequestParameters params = - ConsentRequestParameters(consentDebugSettings: debugSettings); + ConsentRequestParameters params = ConsentRequestParameters( + consentDebugSettings: debugSettings, + ); // Requesting an update to consent information should be called on every app launch. - ConsentInformation.instance.requestConsentInfoUpdate(params, () async { - ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) { - // Consent has been gathered. - onConsentGatheringCompleteListener(loadAndShowError); - }); - }, (FormError formError) { - onConsentGatheringCompleteListener(formError); - }); + ConsentInformation.instance.requestConsentInfoUpdate( + params, + () async { + ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) { + // Consent has been gathered. + onConsentGatheringCompleteListener(loadAndShowError); + }); + }, + (FormError formError) { + onConsentGatheringCompleteListener(formError); + }, + ); } /// Helper method to call the Mobile Ads SDK method to show the privacy options form. void showPrivacyOptionsForm( - OnConsentFormDismissedListener onConsentFormDismissedListener) { + OnConsentFormDismissedListener onConsentFormDismissedListener, + ) { ConsentForm.showPrivacyOptionsForm(onConsentFormDismissedListener); } } diff --git a/samples/admob/banner_example/lib/main.dart b/samples/admob/banner_example/lib/main.dart index 845f0c3cc..87b5b161d 100644 --- a/samples/admob/banner_example/lib/main.dart +++ b/samples/admob/banner_example/lib/main.dart @@ -8,9 +8,7 @@ import 'consent_manager.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); - runApp(const MaterialApp( - home: BannerExample(), - )); + runApp(const MaterialApp(home: BannerExample())); } /// An example app that loads a banner ad. @@ -41,7 +39,8 @@ class BannerExampleState extends State { if (consentGatheringError != null) { // Consent not obtained in current session. debugPrint( - "${consentGatheringError.errorCode}: ${consentGatheringError.message}"); + "${consentGatheringError.errorCode}: ${consentGatheringError.message}", + ); } // Check if a privacy options entry point is required. @@ -58,34 +57,40 @@ class BannerExampleState extends State { @override Widget build(BuildContext context) { return MaterialApp( - title: 'Banner Example', - home: Scaffold( - appBar: AppBar( - title: const Text('Banner Example'), actions: _appBarActions()), - body: OrientationBuilder( - builder: (context, orientation) { - if (_currentOrientation != orientation) { - _isLoaded = false; - _loadAd(); - _currentOrientation = orientation; - } - return Stack( - children: [ - if (_bannerAd != null && _isLoaded) - Align( - alignment: Alignment.bottomCenter, - child: SafeArea( - child: SizedBox( - width: _bannerAd!.size.width.toDouble(), - height: _bannerAd!.size.height.toDouble(), - child: AdWidget(ad: _bannerAd!), - ), - ), - ) - ], - ); - }, - ))); + title: 'Banner Example', + home: Scaffold( + appBar: AppBar( + title: const Text('Banner Example'), + actions: _appBarActions(), + ), + body: OrientationBuilder( + builder: (context, orientation) { + if (_currentOrientation != orientation) { + if (_currentOrientation != null) { + _isLoaded = false; + _loadAd(); + } + _currentOrientation = orientation; + } + return Stack( + children: [ + if (_bannerAd != null && _isLoaded) + Align( + alignment: Alignment.bottomCenter, + child: SafeArea( + child: SizedBox( + width: _bannerAd!.size.width.toDouble(), + height: _bannerAd!.size.height.toDouble(), + child: AdWidget(ad: _bannerAd!), + ), + ), + ), + ], + ); + }, + ), + ), + ); } List _appBarActions() { @@ -97,28 +102,29 @@ class BannerExampleState extends State { return [ PopupMenuButton( - itemBuilder: (context) => array - .map((item) => PopupMenuItem( - value: item, - child: Text( - item.label, - ), - )) - .toList(), - onSelected: (item) { - switch (item.value) { - case 0: - MobileAds.instance.openAdInspector((error) { - // Error will be non-null if ad inspector closed due to an error. - }); - case 1: - _consentManager.showPrivacyOptionsForm((formError) { - if (formError != null) { - debugPrint("${formError.errorCode}: ${formError.message}"); - } - }); - } - }) + itemBuilder: (context) => array + .map( + (item) => PopupMenuItem( + value: item, + child: Text(item.label), + ), + ) + .toList(), + onSelected: (item) { + switch (item.value) { + case 0: + MobileAds.instance.openAdInspector((error) { + // Error will be non-null if ad inspector closed due to an error. + }); + case 1: + _consentManager.showPrivacyOptionsForm((formError) { + if (formError != null) { + debugPrint("${formError.errorCode}: ${formError.message}"); + } + }); + } + }, + ), ]; } @@ -139,7 +145,8 @@ class BannerExampleState extends State { // Get an AnchoredAdaptiveBannerAdSize before loading the ad. final size = await AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize( - MediaQuery.sizeOf(context).width.truncate()); + MediaQuery.sizeOf(context).width.truncate(), + ); if (size == null) { // Unable to get width of anchored banner. diff --git a/samples/admob/banner_example/pubspec.yaml b/samples/admob/banner_example/pubspec.yaml index dae4fbcfe..969e1ecf3 100644 --- a/samples/admob/banner_example/pubspec.yaml +++ b/samples/admob/banner_example/pubspec.yaml @@ -4,17 +4,17 @@ publish_to: "none" version: 1.0.0+1 environment: - sdk: ">=3.1.5 <4.0.0" + sdk: '>=3.2.0 <4.0.0' dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^2.0.0 + flutter_lints: ^5.0.0 flutter: uses-material-design: true diff --git a/samples/admob/interstitial_example/.gitignore b/samples/admob/interstitial_example/.gitignore index 24476c5d1..6c319542b 100644 --- a/samples/admob/interstitial_example/.gitignore +++ b/samples/admob/interstitial_example/.gitignore @@ -5,9 +5,11 @@ *.swp .DS_Store .atom/ +.build/ .buildlog/ .history .svn/ +.swiftpm/ migrate_working_dir/ # IntelliJ related diff --git a/samples/admob/interstitial_example/android/app/build.gradle b/samples/admob/interstitial_example/android/app/build.gradle index 14eac3f3e..296a06d99 100644 --- a/samples/admob/interstitial_example/android/app/build.gradle +++ b/samples/admob/interstitial_example/android/app/build.gradle @@ -25,7 +25,7 @@ if (flutterVersionName == null) { android { namespace "com.example.interstitial_example" compileSdkVersion flutter.compileSdkVersion - ndkVersion = "26.1.10909125" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -45,7 +45,7 @@ android { applicationId "com.example.interstitial_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 21 + minSdkVersion 23 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/samples/admob/interstitial_example/android/build.gradle b/samples/admob/interstitial_example/android/build.gradle index 417ab3750..bc157bd1a 100644 --- a/samples/admob/interstitial_example/android/build.gradle +++ b/samples/admob/interstitial_example/android/build.gradle @@ -1,16 +1,3 @@ -buildscript { - ext.kotlin_version = '1.9.0' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:8.6.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { google() diff --git a/samples/admob/interstitial_example/android/settings.gradle b/samples/admob/interstitial_example/android/settings.gradle index 55c4ca8b1..f4e0879bf 100644 --- a/samples/admob/interstitial_example/android/settings.gradle +++ b/samples/admob/interstitial_example/android/settings.gradle @@ -5,16 +5,21 @@ pluginManagement { def flutterSdkPath = properties.getProperty("flutter.sdk") assert flutterSdkPath != null, "flutter.sdk not set in local.properties" return flutterSdkPath - } - settings.ext.flutterSdkPath = flutterSdkPath() + }() - includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") - plugins { - id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false + repositories { + google() + mavenCentral() + gradlePluginPortal() } } -include ":app" +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.6.0" apply false + id "org.jetbrains.kotlin.android" version "2.1.0" apply false +} -apply from: "${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle/app_plugin_loader.gradle" +include ":app" \ No newline at end of file diff --git a/samples/admob/interstitial_example/lib/consent_manager.dart b/samples/admob/interstitial_example/lib/consent_manager.dart index c64afd1be..60db83b8c 100644 --- a/samples/admob/interstitial_example/lib/consent_manager.dart +++ b/samples/admob/interstitial_example/lib/consent_manager.dart @@ -24,28 +24,35 @@ class ConsentManager { /// Helper method to call the Mobile Ads SDK to request consent information /// and load/show a consent form if necessary. void gatherConsent( - OnConsentGatheringCompleteListener onConsentGatheringCompleteListener) { + OnConsentGatheringCompleteListener onConsentGatheringCompleteListener, + ) { // For testing purposes, you can force a DebugGeography of Eea or NotEea. ConsentDebugSettings debugSettings = ConsentDebugSettings( // debugGeography: DebugGeography.debugGeographyEea, ); - ConsentRequestParameters params = - ConsentRequestParameters(consentDebugSettings: debugSettings); + ConsentRequestParameters params = ConsentRequestParameters( + consentDebugSettings: debugSettings, + ); // Requesting an update to consent information should be called on every app launch. - ConsentInformation.instance.requestConsentInfoUpdate(params, () async { - ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) { - // Consent has been gathered. - onConsentGatheringCompleteListener(loadAndShowError); - }); - }, (FormError formError) { - onConsentGatheringCompleteListener(formError); - }); + ConsentInformation.instance.requestConsentInfoUpdate( + params, + () async { + ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) { + // Consent has been gathered. + onConsentGatheringCompleteListener(loadAndShowError); + }); + }, + (FormError formError) { + onConsentGatheringCompleteListener(formError); + }, + ); } /// Helper method to call the Mobile Ads SDK method to show the privacy options form. void showPrivacyOptionsForm( - OnConsentFormDismissedListener onConsentFormDismissedListener) { + OnConsentFormDismissedListener onConsentFormDismissedListener, + ) { ConsentForm.showPrivacyOptionsForm(onConsentFormDismissedListener); } } diff --git a/samples/admob/interstitial_example/lib/main.dart b/samples/admob/interstitial_example/lib/main.dart index 23c6b927a..a3deb81ea 100644 --- a/samples/admob/interstitial_example/lib/main.dart +++ b/samples/admob/interstitial_example/lib/main.dart @@ -9,9 +9,7 @@ import 'consent_manager.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); - runApp(const MaterialApp( - home: InterstitialExample(), - )); + runApp(const MaterialApp(home: InterstitialExample())); } /// An example app that loads an interstitial ad. @@ -45,7 +43,8 @@ class InterstitialExampleState extends State { if (consentGatheringError != null) { // Consent not obtained in current session. debugPrint( - "${consentGatheringError.errorCode}: ${consentGatheringError.message}"); + "${consentGatheringError.errorCode}: ${consentGatheringError.message}", + ); } // Kick off the first play of the "game". @@ -91,42 +90,44 @@ class InterstitialExampleState extends State { return MaterialApp( title: 'Interstitial Example', home: Scaffold( - appBar: AppBar( - title: const Text('Interstitial Example'), - actions: _appBarActions(), - ), - body: Stack( - children: [ - const Align( - alignment: Alignment.topCenter, - child: Padding( - padding: EdgeInsets.all(15), - child: Text( - 'The Impossible Game', - style: - TextStyle(fontSize: 25, fontWeight: FontWeight.bold), + appBar: AppBar( + title: const Text('Interstitial Example'), + actions: _appBarActions(), + ), + body: Stack( + children: [ + const Align( + alignment: Alignment.topCenter, + child: Padding( + padding: EdgeInsets.all(15), + child: Text( + 'The Impossible Game', + style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold), + ), + ), + ), + Align( + alignment: Alignment.center, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text('${_counter.toString()} seconds left!'), + Visibility( + visible: _counter == 0, + child: TextButton( + onPressed: () { + _startNewGame(); + _loadAd(); + }, + child: const Text('Play Again'), ), - )), - Align( - alignment: Alignment.center, - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text('${_counter.toString()} seconds left!'), - Visibility( - visible: _counter == 0, - child: TextButton( - onPressed: () { - _startNewGame(); - _loadAd(); - }, - child: const Text('Play Again'), - ), - ) - ], - )), - ], - )), + ), + ], + ), + ), + ], + ), + ), ); } @@ -139,31 +140,32 @@ class InterstitialExampleState extends State { return [ PopupMenuButton( - itemBuilder: (context) => array - .map((item) => PopupMenuItem( - value: item, - child: Text( - item.label, - ), - )) - .toList(), - onSelected: (item) { - _pauseGame(); - switch (item.value) { - case 0: - MobileAds.instance.openAdInspector((error) { - // Error will be non-null if ad inspector closed due to an error. - _resumeGame(); - }); - case 1: - _consentManager.showPrivacyOptionsForm((formError) { - if (formError != null) { - debugPrint("${formError.errorCode}: ${formError.message}"); - } - _resumeGame(); - }); - } - }) + itemBuilder: (context) => array + .map( + (item) => PopupMenuItem( + value: item, + child: Text(item.label), + ), + ) + .toList(), + onSelected: (item) { + _pauseGame(); + switch (item.value) { + case 0: + MobileAds.instance.openAdInspector((error) { + // Error will be non-null if ad inspector closed due to an error. + _resumeGame(); + }); + case 1: + _consentManager.showPrivacyOptionsForm((formError) { + if (formError != null) { + debugPrint("${formError.errorCode}: ${formError.message}"); + } + _resumeGame(); + }); + } + }, + ), ]; } @@ -177,54 +179,57 @@ class InterstitialExampleState extends State { } InterstitialAd.load( - adUnitId: _adUnitId, - request: const AdRequest(), - adLoadCallback: InterstitialAdLoadCallback( - // Called when an ad is successfully received. - onAdLoaded: (InterstitialAd ad) { - ad.fullScreenContentCallback = FullScreenContentCallback( - // Called when the ad showed the full screen content. - onAdShowedFullScreenContent: (ad) {}, - // Called when an impression occurs on the ad. - onAdImpression: (ad) {}, - // Called when the ad failed to show full screen content. - onAdFailedToShowFullScreenContent: (ad, err) { - ad.dispose(); - }, - // Called when the ad dismissed full screen content. - onAdDismissedFullScreenContent: (ad) { - ad.dispose(); - }, - // Called when a click is recorded for an ad. - onAdClicked: (ad) {}); - - // Keep a reference to the ad so you can show it later. - _interstitialAd = ad; - }, - // Called when an ad request failed. - onAdFailedToLoad: (LoadAdError error) { - // ignore: avoid_print - print('InterstitialAd failed to load: $error'); - }, - )); + adUnitId: _adUnitId, + request: const AdRequest(), + adLoadCallback: InterstitialAdLoadCallback( + // Called when an ad is successfully received. + onAdLoaded: (InterstitialAd ad) { + ad.fullScreenContentCallback = FullScreenContentCallback( + // Called when the ad showed the full screen content. + onAdShowedFullScreenContent: (ad) {}, + // Called when an impression occurs on the ad. + onAdImpression: (ad) {}, + // Called when the ad failed to show full screen content. + onAdFailedToShowFullScreenContent: (ad, err) { + ad.dispose(); + }, + // Called when the ad dismissed full screen content. + onAdDismissedFullScreenContent: (ad) { + ad.dispose(); + }, + // Called when a click is recorded for an ad. + onAdClicked: (ad) {}, + ); + + // Keep a reference to the ad so you can show it later. + _interstitialAd = ad; + }, + // Called when an ad request failed. + onAdFailedToLoad: (LoadAdError error) { + // ignore: avoid_print + print('InterstitialAd failed to load: $error'); + }, + ), + ); } void _showAlert(BuildContext context) { showDialog( - context: context, - builder: (context) => AlertDialog( - title: const Text('Game Over'), - content: Text('You lasted $_gameLength seconds'), - actions: [ - TextButton( - onPressed: () { - Navigator.pop(context); - _interstitialAd?.show(); - }, - child: const Text('OK'), - ) - ], - )); + context: context, + builder: (context) => AlertDialog( + title: const Text('Game Over'), + content: Text('You lasted $_gameLength seconds'), + actions: [ + TextButton( + onPressed: () { + Navigator.pop(context); + _interstitialAd?.show(); + }, + child: const Text('OK'), + ), + ], + ), + ); } void _startTimer() { diff --git a/samples/admob/interstitial_example/pubspec.yaml b/samples/admob/interstitial_example/pubspec.yaml index c9ef23b4b..f8f11bff6 100644 --- a/samples/admob/interstitial_example/pubspec.yaml +++ b/samples/admob/interstitial_example/pubspec.yaml @@ -4,17 +4,17 @@ publish_to: 'none' version: 1.0.0+1 environment: - sdk: '>=3.1.5 <4.0.0' + sdk: '>=3.2.0 <4.0.0' dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^2.0.0 + flutter_lints: ^5.0.0 flutter: uses-material-design: true diff --git a/samples/admob/mediation_example/android/app/build.gradle b/samples/admob/mediation_example/android/app/build.gradle index e0ee2265e..ca75ac68a 100644 --- a/samples/admob/mediation_example/android/app/build.gradle +++ b/samples/admob/mediation_example/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' @@ -21,17 +22,28 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - android { + namespace "com.example.mediationexample" compileSdkVersion flutter.compileSdkVersion - ndkVersion = "26.1.10909125" + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.example.mediationexample" - minSdkVersion 21 + minSdkVersion 23 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/samples/admob/mediation_example/android/build.gradle b/samples/admob/mediation_example/android/build.gradle index 31ae933da..8f31e8caf 100644 --- a/samples/admob/mediation_example/android/build.gradle +++ b/samples/admob/mediation_example/android/build.gradle @@ -1,15 +1,3 @@ -buildscript { - ext.kotlin_version = '1.9.0' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:8.6.0' - } -} - allprojects { repositories { google() @@ -20,9 +8,11 @@ allprojects { rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir -} +} \ No newline at end of file diff --git a/samples/admob/mediation_example/android/settings.gradle b/samples/admob/mediation_example/android/settings.gradle index 44e62bcf0..f4e0879bf 100644 --- a/samples/admob/mediation_example/android/settings.gradle +++ b/samples/admob/mediation_example/android/settings.gradle @@ -1,11 +1,25 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.6.0" apply false + id "org.jetbrains.kotlin.android" version "2.1.0" apply false +} + +include ":app" \ No newline at end of file diff --git a/samples/admob/mediation_example/ios/Podfile b/samples/admob/mediation_example/ios/Podfile index 2ff9e1af1..3065706be 100644 --- a/samples/admob/mediation_example/ios/Podfile +++ b/samples/admob/mediation_example/ios/Podfile @@ -37,4 +37,4 @@ post_install do |installer| end end -pod 'GoogleMobileAdsMediationAppLovin', '< 13.0.0.0' +pod 'GoogleMobileAdsMediationAppLovin' diff --git a/samples/admob/mediation_example/ios/Runner/AppDelegate.m b/samples/admob/mediation_example/ios/Runner/AppDelegate.m index adffffb20..6a764ee0b 100644 --- a/samples/admob/mediation_example/ios/Runner/AppDelegate.m +++ b/samples/admob/mediation_example/ios/Runner/AppDelegate.m @@ -43,13 +43,12 @@ - (BOOL)application:(UIApplication *)application binaryMessenger:controller.binaryMessenger]; [methodChannel setMethodCallHandler:^(FlutterMethodCall *call, FlutterResult result) { - if ([call.method isEqualToString:@"setIsAgeRestrictedUser"]) { - [ALPrivacySettings - setIsAgeRestrictedUser:call.arguments[@"isAgeRestricted"]]; - result(nil); - } else if ([call.method isEqualToString:@"setHasUserConsent"]) { + if ([call.method isEqualToString:@"setHasUserConsent"]) { [ALPrivacySettings setHasUserConsent:call.arguments[@"hasUserConsent"]]; result(nil); + } else if ([call.method isEqualToString:@"setDoNotSell"]) { + [ALPrivacySettings setDoNotSell:call.arguments[@"isDoNotSell"]]; + result(nil); } else { result(FlutterMethodNotImplemented); } diff --git a/samples/admob/mediation_example/lib/app_bar_item.dart b/samples/admob/mediation_example/lib/app_bar_item.dart index 0c986a74d..512724300 100644 --- a/samples/admob/mediation_example/lib/app_bar_item.dart +++ b/samples/admob/mediation_example/lib/app_bar_item.dart @@ -5,6 +5,7 @@ class AppBarItem { /// Button text. final String label; + /// Button value. final int value; diff --git a/samples/admob/mediation_example/lib/main.dart b/samples/admob/mediation_example/lib/main.dart index 6be0780a5..af12b9850 100644 --- a/samples/admob/mediation_example/lib/main.dart +++ b/samples/admob/mediation_example/lib/main.dart @@ -39,9 +39,7 @@ class MyApp extends StatelessWidget { Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Mediation Example', - theme: ThemeData( - primarySwatch: Colors.blue, - ), + theme: ThemeData(primarySwatch: Colors.blue), home: MyHomePage(title: 'Flutter Demo Home Page'), ); } @@ -84,7 +82,8 @@ class _MyHomePageState extends State { listener: BannerAdListener( onAdLoaded: (ad) { debugPrint( - '$ad loaded: ${ad.responseInfo?.mediationAdapterClassName}'); + '$ad loaded: ${ad.responseInfo?.mediationAdapterClassName}', + ); setState(() { _bannerIsLoaded = true; }); @@ -101,34 +100,30 @@ class _MyHomePageState extends State { return [ PopupMenuButton( - itemBuilder: (BuildContext context) => >[ - PopupMenuItem( - value: adInspectorMenuItem, - child: Text(adInspectorMenuItem.label), - ), - ], - onSelected: (item) { - MobileAds.instance.openAdInspector((error) { - // Error will be non-null if ad inspector closed due to an error. - }); - }) + itemBuilder: (BuildContext context) => >[ + PopupMenuItem( + value: adInspectorMenuItem, + child: Text(adInspectorMenuItem.label), + ), + ], + onSelected: (item) { + MobileAds.instance.openAdInspector((error) { + // Error will be non-null if ad inspector closed due to an error. + }); + }, + ), ]; } @override Widget build(BuildContext context) { return Scaffold( - appBar: AppBar( - title: Text(widget.title), - actions: _appBarActions(), - ), + appBar: AppBar(title: Text(widget.title), actions: _appBarActions()), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - Text( - 'You have pushed the button this many times:', - ), + Text('You have pushed the button this many times:'), Text( '$_counter', style: Theme.of(context).textTheme.headlineMedium, diff --git a/samples/admob/mediation_example/lib/my_method_channel.dart b/samples/admob/mediation_example/lib/my_method_channel.dart index 373b84897..30e1399f6 100644 --- a/samples/admob/mediation_example/lib/my_method_channel.dart +++ b/samples/admob/mediation_example/lib/my_method_channel.dart @@ -18,26 +18,21 @@ import 'package:flutter/services.dart'; /// /// You may need a method channel to call APIs in 3P SDKs used for mediation. class MyMethodChannel { - final MethodChannel _methodChannel = - MethodChannel('com.example.mediationexample/mediation-channel'); + final MethodChannel _methodChannel = MethodChannel( + 'com.example.mediationexample/mediation-channel', + ); /// Sets whether the user is age restricted in AppLovin. Future setAppLovinIsAgeRestrictedUser(bool isAgeRestricted) async { - return _methodChannel.invokeMethod( - 'setIsAgeRestrictedUser', - { - 'isAgeRestricted': isAgeRestricted, - }, - ); + return _methodChannel.invokeMethod('setIsAgeRestrictedUser', { + 'isAgeRestricted': isAgeRestricted, + }); } /// Sets whether we have user consent for the user in AppLovin. Future setHasUserConsent(bool hasUserConsent) async { - return _methodChannel.invokeMethod( - 'setHasUserConsent', - { - 'hasUserConsent': hasUserConsent, - }, - ); + return _methodChannel.invokeMethod('setHasUserConsent', { + 'hasUserConsent': hasUserConsent, + }); } } diff --git a/samples/admob/mediation_example/pubspec.yaml b/samples/admob/mediation_example/pubspec.yaml index e61c177c8..b31514111 100644 --- a/samples/admob/mediation_example/pubspec.yaml +++ b/samples/admob/mediation_example/pubspec.yaml @@ -23,7 +23,7 @@ environment: dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 # The following adds the Cupertino Icons font to your application. @@ -31,6 +31,7 @@ dependencies: cupertino_icons: ^1.0.2 dev_dependencies: + flutter_lints: ^5.0.0 flutter_test: sdk: flutter diff --git a/samples/admob/native_platform_example/.gitignore b/samples/admob/native_platform_example/.gitignore index 24476c5d1..6c319542b 100644 --- a/samples/admob/native_platform_example/.gitignore +++ b/samples/admob/native_platform_example/.gitignore @@ -5,9 +5,11 @@ *.swp .DS_Store .atom/ +.build/ .buildlog/ .history .svn/ +.swiftpm/ migrate_working_dir/ # IntelliJ related diff --git a/samples/admob/native_platform_example/android/app/build.gradle b/samples/admob/native_platform_example/android/app/build.gradle index 8d4aba91a..32822e4ec 100644 --- a/samples/admob/native_platform_example/android/app/build.gradle +++ b/samples/admob/native_platform_example/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' @@ -21,13 +22,10 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - android { + namespace = "com.example.native_platform_example" compileSdkVersion flutter.compileSdkVersion - ndkVersion = "26.1.10909125" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -47,7 +45,7 @@ android { applicationId "com.example.native_platform_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 21 + minSdkVersion 23 multiDexEnabled true targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() @@ -66,7 +64,3 @@ android { flutter { source '../..' } - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} diff --git a/samples/admob/native_platform_example/android/build.gradle b/samples/admob/native_platform_example/android/build.gradle index 417ab3750..8f31e8caf 100644 --- a/samples/admob/native_platform_example/android/build.gradle +++ b/samples/admob/native_platform_example/android/build.gradle @@ -1,16 +1,3 @@ -buildscript { - ext.kotlin_version = '1.9.0' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:8.6.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { google() @@ -28,4 +15,4 @@ subprojects { tasks.register("clean", Delete) { delete rootProject.buildDir -} +} \ No newline at end of file diff --git a/samples/admob/native_platform_example/android/settings.gradle b/samples/admob/native_platform_example/android/settings.gradle index e90c8429e..f4e0879bf 100644 --- a/samples/admob/native_platform_example/android/settings.gradle +++ b/samples/admob/native_platform_example/android/settings.gradle @@ -1,24 +1,25 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() -def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() -def plugins = new Properties() -def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') -if (pluginsFile.exists()) { - pluginsFile.withInputStream { stream -> plugins.load(stream) } -} + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") -plugins.each { name, path -> - def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() - include ":$name" - project(":$name").projectDir = pluginDirectory + repositories { + google() + mavenCentral() + gradlePluginPortal() + } } -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() - -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.6.0" apply false + id "org.jetbrains.kotlin.android" version "2.1.0" apply false +} -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" +include ":app" \ No newline at end of file diff --git a/samples/admob/native_platform_example/ios/Runner/AppDelegate.swift b/samples/admob/native_platform_example/ios/Runner/AppDelegate.swift index 81ad9744c..d72317d57 100644 --- a/samples/admob/native_platform_example/ios/Runner/AppDelegate.swift +++ b/samples/admob/native_platform_example/ios/Runner/AppDelegate.swift @@ -2,13 +2,13 @@ import UIKit import Flutter @objc class NativeAdFactoryExample: NSObject, FLTNativeAdFactory { - func createNativeAd(_ nativeAd: GADNativeAd, customOptions: [AnyHashable : Any]? = nil) -> GADNativeAdView? { + func createNativeAd(_ nativeAd: NativeAd, customOptions: [AnyHashable : Any]? = nil) -> NativeAdView? { // Create and place ad in view hierarchy. let nativeAdView = Bundle.main.loadNibNamed( "NativeAdView", owner: nil, - options: nil)?.first as! GADNativeAdView + options: nil)?.first as! NativeAdView // Associate the native ad view with the native ad object. This is // required to make the ad clickable. diff --git a/samples/admob/native_platform_example/lib/consent_manager.dart b/samples/admob/native_platform_example/lib/consent_manager.dart index f8d8c7912..60db83b8c 100644 --- a/samples/admob/native_platform_example/lib/consent_manager.dart +++ b/samples/admob/native_platform_example/lib/consent_manager.dart @@ -17,35 +17,42 @@ class ConsentManager { /// Helper variable to determine if the privacy options form is required. Future isPrivacyOptionsRequired() async { return await ConsentInformation.instance - .getPrivacyOptionsRequirementStatus() == + .getPrivacyOptionsRequirementStatus() == PrivacyOptionsRequirementStatus.required; } /// Helper method to call the Mobile Ads SDK to request consent information /// and load/show a consent form if necessary. void gatherConsent( - OnConsentGatheringCompleteListener onConsentGatheringCompleteListener) { + OnConsentGatheringCompleteListener onConsentGatheringCompleteListener, + ) { // For testing purposes, you can force a DebugGeography of Eea or NotEea. ConsentDebugSettings debugSettings = ConsentDebugSettings( // debugGeography: DebugGeography.debugGeographyEea, ); - ConsentRequestParameters params = - ConsentRequestParameters(consentDebugSettings: debugSettings); + ConsentRequestParameters params = ConsentRequestParameters( + consentDebugSettings: debugSettings, + ); // Requesting an update to consent information should be called on every app launch. - ConsentInformation.instance.requestConsentInfoUpdate(params, () async { - ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) { - // Consent has been gathered. - onConsentGatheringCompleteListener(loadAndShowError); - }); - }, (FormError formError) { - onConsentGatheringCompleteListener(formError); - }); + ConsentInformation.instance.requestConsentInfoUpdate( + params, + () async { + ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) { + // Consent has been gathered. + onConsentGatheringCompleteListener(loadAndShowError); + }); + }, + (FormError formError) { + onConsentGatheringCompleteListener(formError); + }, + ); } /// Helper method to call the Mobile Ads SDK method to show the privacy options form. void showPrivacyOptionsForm( - OnConsentFormDismissedListener onConsentFormDismissedListener) { + OnConsentFormDismissedListener onConsentFormDismissedListener, + ) { ConsentForm.showPrivacyOptionsForm(onConsentFormDismissedListener); } } diff --git a/samples/admob/native_platform_example/lib/main.dart b/samples/admob/native_platform_example/lib/main.dart index 8a4bafc55..f7577aa6e 100644 --- a/samples/admob/native_platform_example/lib/main.dart +++ b/samples/admob/native_platform_example/lib/main.dart @@ -8,9 +8,7 @@ import 'consent_manager.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); - runApp(const MaterialApp( - home: NativeExample(), - )); + runApp(const MaterialApp(home: NativeExample())); } /// An example app that loads a native ad. @@ -41,7 +39,8 @@ class NativeExampleState extends State { if (consentGatheringError != null) { // Consent not obtained in current session. debugPrint( - "${consentGatheringError.errorCode}: ${consentGatheringError.message}"); + "${consentGatheringError.errorCode}: ${consentGatheringError.message}", + ); } // Check if a privacy options entry point is required. @@ -58,34 +57,42 @@ class NativeExampleState extends State { @override Widget build(BuildContext context) { return MaterialApp( - title: 'Native Example', - home: Scaffold( - appBar: AppBar( - title: const Text('Native Example'), actions: _appBarActions()), - body: Center( - child: Column( + title: 'Native Example', + home: Scaffold( + appBar: AppBar( + title: const Text('Native Example'), + actions: _appBarActions(), + ), + body: Center( + child: Column( + children: [ + Stack( children: [ - Stack(children: [ + SizedBox( + height: _nativeAdHeight, + width: MediaQuery.of(context).size.width, + ), + if (_nativeAdIsLoaded && _nativeAd != null) SizedBox( - height: _nativeAdHeight, - width: MediaQuery.of(context).size.width), - if (_nativeAdIsLoaded && _nativeAd != null) - SizedBox( - height: _nativeAdHeight, - width: MediaQuery.of(context).size.width, - child: AdWidget(ad: _nativeAd!)) - ]), - TextButton( - onPressed: _loadAd, child: const Text("Refresh Ad")), - FutureBuilder( - future: MobileAds.instance.getVersionString(), - builder: (context, snapshot) { - var versionString = snapshot.data ?? ""; - return Text(versionString); - }) + height: _nativeAdHeight, + width: MediaQuery.of(context).size.width, + child: AdWidget(ad: _nativeAd!), + ), ], ), - ))); + TextButton(onPressed: _loadAd, child: const Text("Refresh Ad")), + FutureBuilder( + future: MobileAds.instance.getVersionString(), + builder: (context, snapshot) { + var versionString = snapshot.data ?? ""; + return Text(versionString); + }, + ), + ], + ), + ), + ), + ); } List _appBarActions() { @@ -97,28 +104,29 @@ class NativeExampleState extends State { return [ PopupMenuButton( - itemBuilder: (context) => array - .map((item) => PopupMenuItem( - value: item, - child: Text( - item.label, - ), - )) - .toList(), - onSelected: (item) { - switch (item.value) { - case 0: - MobileAds.instance.openAdInspector((error) { - // Error will be non-null if ad inspector closed due to an error. - }); - case 1: - _consentManager.showPrivacyOptionsForm((formError) { - if (formError != null) { - debugPrint("${formError.errorCode}: ${formError.message}"); - } - }); - } - }) + itemBuilder: (context) => array + .map( + (item) => PopupMenuItem( + value: item, + child: Text(item.label), + ), + ) + .toList(), + onSelected: (item) { + switch (item.value) { + case 0: + MobileAds.instance.openAdInspector((error) { + // Error will be non-null if ad inspector closed due to an error. + }); + case 1: + _consentManager.showPrivacyOptionsForm((formError) { + if (formError != null) { + debugPrint("${formError.errorCode}: ${formError.message}"); + } + }); + } + }, + ), ]; } diff --git a/samples/admob/native_platform_example/pubspec.yaml b/samples/admob/native_platform_example/pubspec.yaml index 5d2569840..c22a41d7b 100644 --- a/samples/admob/native_platform_example/pubspec.yaml +++ b/samples/admob/native_platform_example/pubspec.yaml @@ -30,23 +30,17 @@ environment: dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 dev_dependencies: + flutter_lints: ^5.0.0 flutter_test: sdk: flutter - # The "flutter_lints" package below contains a set of recommended lints to - # encourage good coding practices. The lint set provided by the package is - # activated in the `analysis_options.yaml` file located at the root of your - # package. See that file for information about deactivating specific lint - # rules and activating additional ones. - flutter_lints: ^2.0.0 - # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/samples/admob/native_template_example/.gitignore b/samples/admob/native_template_example/.gitignore index 24476c5d1..6c319542b 100644 --- a/samples/admob/native_template_example/.gitignore +++ b/samples/admob/native_template_example/.gitignore @@ -5,9 +5,11 @@ *.swp .DS_Store .atom/ +.build/ .buildlog/ .history .svn/ +.swiftpm/ migrate_working_dir/ # IntelliJ related diff --git a/samples/admob/native_template_example/android/app/build.gradle b/samples/admob/native_template_example/android/app/build.gradle index 20372d9ef..dea893a00 100644 --- a/samples/admob/native_template_example/android/app/build.gradle +++ b/samples/admob/native_template_example/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' @@ -21,13 +22,10 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - android { + namespace = "com.example.native_template_example" compileSdkVersion flutter.compileSdkVersion - ndkVersion = "26.1.10909125" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -47,7 +45,7 @@ android { applicationId "com.example.native_template_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 21 + minSdkVersion 23 multiDexEnabled true targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() @@ -66,7 +64,3 @@ android { flutter { source '../..' } - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} diff --git a/samples/admob/native_template_example/android/build.gradle b/samples/admob/native_template_example/android/build.gradle index 417ab3750..bc157bd1a 100644 --- a/samples/admob/native_template_example/android/build.gradle +++ b/samples/admob/native_template_example/android/build.gradle @@ -1,16 +1,3 @@ -buildscript { - ext.kotlin_version = '1.9.0' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:8.6.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { google() diff --git a/samples/admob/native_template_example/android/settings.gradle b/samples/admob/native_template_example/android/settings.gradle index 44e62bcf0..f4e0879bf 100644 --- a/samples/admob/native_template_example/android/settings.gradle +++ b/samples/admob/native_template_example/android/settings.gradle @@ -1,11 +1,25 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.6.0" apply false + id "org.jetbrains.kotlin.android" version "2.1.0" apply false +} + +include ":app" \ No newline at end of file diff --git a/samples/admob/native_template_example/lib/consent_manager.dart b/samples/admob/native_template_example/lib/consent_manager.dart index f8d8c7912..60db83b8c 100644 --- a/samples/admob/native_template_example/lib/consent_manager.dart +++ b/samples/admob/native_template_example/lib/consent_manager.dart @@ -17,35 +17,42 @@ class ConsentManager { /// Helper variable to determine if the privacy options form is required. Future isPrivacyOptionsRequired() async { return await ConsentInformation.instance - .getPrivacyOptionsRequirementStatus() == + .getPrivacyOptionsRequirementStatus() == PrivacyOptionsRequirementStatus.required; } /// Helper method to call the Mobile Ads SDK to request consent information /// and load/show a consent form if necessary. void gatherConsent( - OnConsentGatheringCompleteListener onConsentGatheringCompleteListener) { + OnConsentGatheringCompleteListener onConsentGatheringCompleteListener, + ) { // For testing purposes, you can force a DebugGeography of Eea or NotEea. ConsentDebugSettings debugSettings = ConsentDebugSettings( // debugGeography: DebugGeography.debugGeographyEea, ); - ConsentRequestParameters params = - ConsentRequestParameters(consentDebugSettings: debugSettings); + ConsentRequestParameters params = ConsentRequestParameters( + consentDebugSettings: debugSettings, + ); // Requesting an update to consent information should be called on every app launch. - ConsentInformation.instance.requestConsentInfoUpdate(params, () async { - ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) { - // Consent has been gathered. - onConsentGatheringCompleteListener(loadAndShowError); - }); - }, (FormError formError) { - onConsentGatheringCompleteListener(formError); - }); + ConsentInformation.instance.requestConsentInfoUpdate( + params, + () async { + ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) { + // Consent has been gathered. + onConsentGatheringCompleteListener(loadAndShowError); + }); + }, + (FormError formError) { + onConsentGatheringCompleteListener(formError); + }, + ); } /// Helper method to call the Mobile Ads SDK method to show the privacy options form. void showPrivacyOptionsForm( - OnConsentFormDismissedListener onConsentFormDismissedListener) { + OnConsentFormDismissedListener onConsentFormDismissedListener, + ) { ConsentForm.showPrivacyOptionsForm(onConsentFormDismissedListener); } } diff --git a/samples/admob/native_template_example/lib/main.dart b/samples/admob/native_template_example/lib/main.dart index 06764c077..a30accd3b 100644 --- a/samples/admob/native_template_example/lib/main.dart +++ b/samples/admob/native_template_example/lib/main.dart @@ -8,9 +8,7 @@ import 'consent_manager.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); - runApp(const MaterialApp( - home: NativeExample(), - )); + runApp(const MaterialApp(home: NativeExample())); } /// An example app that loads a native ad. @@ -43,7 +41,8 @@ class NativeExampleState extends State { if (consentGatheringError != null) { // Consent not obtained in current session. debugPrint( - "${consentGatheringError.errorCode}: ${consentGatheringError.message}"); + "${consentGatheringError.errorCode}: ${consentGatheringError.message}", + ); } // Check if a privacy options entry point is required. @@ -60,40 +59,48 @@ class NativeExampleState extends State { @override Widget build(BuildContext context) { return MaterialApp( - title: 'Native Example', - home: Scaffold( - appBar: AppBar( - title: const Text('Native Example'), actions: _appBarActions()), - body: SizedBox( - height: MediaQuery.of(context).size.height, - width: MediaQuery.of(context).size.width, - child: Column( + title: 'Native Example', + home: Scaffold( + appBar: AppBar( + title: const Text('Native Example'), + actions: _appBarActions(), + ), + body: SizedBox( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + child: Column( + children: [ + Stack( children: [ - Stack( - children: [ - SizedBox( - height: MediaQuery.of(context).size.width * - _adAspectRatioMedium, - width: MediaQuery.of(context).size.width), - if (_nativeAdIsLoaded && _nativeAd != null) - SizedBox( - height: MediaQuery.of(context).size.width * - _adAspectRatioMedium, - width: MediaQuery.of(context).size.width, - child: AdWidget(ad: _nativeAd!)), - ], + SizedBox( + height: + MediaQuery.of(context).size.width * + _adAspectRatioMedium, + width: MediaQuery.of(context).size.width, ), - TextButton( - onPressed: _loadAd, child: const Text("Refresh Ad")), - FutureBuilder( - future: MobileAds.instance.getVersionString(), - builder: (context, snapshot) { - var versionString = snapshot.data ?? ""; - return Text(versionString); - }) + if (_nativeAdIsLoaded && _nativeAd != null) + SizedBox( + height: + MediaQuery.of(context).size.width * + _adAspectRatioMedium, + width: MediaQuery.of(context).size.width, + child: AdWidget(ad: _nativeAd!), + ), ], ), - ))); + TextButton(onPressed: _loadAd, child: const Text("Refresh Ad")), + FutureBuilder( + future: MobileAds.instance.getVersionString(), + builder: (context, snapshot) { + var versionString = snapshot.data ?? ""; + return Text(versionString); + }, + ), + ], + ), + ), + ), + ); } List _appBarActions() { @@ -105,28 +112,29 @@ class NativeExampleState extends State { return [ PopupMenuButton( - itemBuilder: (context) => array - .map((item) => PopupMenuItem( - value: item, - child: Text( - item.label, - ), - )) - .toList(), - onSelected: (item) { - switch (item.value) { - case 0: - MobileAds.instance.openAdInspector((error) { - // Error will be non-null if ad inspector closed due to an error. - }); - case 1: - _consentManager.showPrivacyOptionsForm((formError) { - if (formError != null) { - debugPrint("${formError.errorCode}: ${formError.message}"); - } - }); - } - }) + itemBuilder: (context) => array + .map( + (item) => PopupMenuItem( + value: item, + child: Text(item.label), + ), + ) + .toList(), + onSelected: (item) { + switch (item.value) { + case 0: + MobileAds.instance.openAdInspector((error) { + // Error will be non-null if ad inspector closed due to an error. + }); + case 1: + _consentManager.showPrivacyOptionsForm((formError) { + if (formError != null) { + debugPrint("${formError.errorCode}: ${formError.message}"); + } + }); + } + }, + ), ]; } @@ -144,48 +152,53 @@ class NativeExampleState extends State { }); _nativeAd = NativeAd( - adUnitId: _adUnitId, - listener: NativeAdListener( - onAdLoaded: (ad) { - // ignore: avoid_print - print('$NativeAd loaded.'); - setState(() { - _nativeAdIsLoaded = true; - }); - }, - onAdFailedToLoad: (ad, error) { - // ignore: avoid_print - print('$NativeAd failedToLoad: $error'); - ad.dispose(); - }, - onAdClicked: (ad) {}, - onAdImpression: (ad) {}, - onAdClosed: (ad) {}, - onAdOpened: (ad) {}, - onAdWillDismissScreen: (ad) {}, - onPaidEvent: (ad, valueMicros, precision, currencyCode) {}, + adUnitId: _adUnitId, + listener: NativeAdListener( + onAdLoaded: (ad) { + // ignore: avoid_print + print('$NativeAd loaded.'); + setState(() { + _nativeAdIsLoaded = true; + }); + }, + onAdFailedToLoad: (ad, error) { + // ignore: avoid_print + print('$NativeAd failedToLoad: $error'); + ad.dispose(); + }, + onAdClicked: (ad) {}, + onAdImpression: (ad) {}, + onAdClosed: (ad) {}, + onAdOpened: (ad) {}, + onAdWillDismissScreen: (ad) {}, + onPaidEvent: (ad, valueMicros, precision, currencyCode) {}, + ), + request: const AdRequest(), + nativeTemplateStyle: NativeTemplateStyle( + templateType: TemplateType.medium, + mainBackgroundColor: const Color(0xfffffbed), + callToActionTextStyle: NativeTemplateTextStyle( + textColor: Colors.white, + style: NativeTemplateFontStyle.monospace, + size: 16.0, + ), + primaryTextStyle: NativeTemplateTextStyle( + textColor: Colors.black, + style: NativeTemplateFontStyle.bold, + size: 16.0, + ), + secondaryTextStyle: NativeTemplateTextStyle( + textColor: Colors.black, + style: NativeTemplateFontStyle.italic, + size: 16.0, + ), + tertiaryTextStyle: NativeTemplateTextStyle( + textColor: Colors.black, + style: NativeTemplateFontStyle.normal, + size: 16.0, ), - request: const AdRequest(), - nativeTemplateStyle: NativeTemplateStyle( - templateType: TemplateType.medium, - mainBackgroundColor: const Color(0xfffffbed), - callToActionTextStyle: NativeTemplateTextStyle( - textColor: Colors.white, - style: NativeTemplateFontStyle.monospace, - size: 16.0), - primaryTextStyle: NativeTemplateTextStyle( - textColor: Colors.black, - style: NativeTemplateFontStyle.bold, - size: 16.0), - secondaryTextStyle: NativeTemplateTextStyle( - textColor: Colors.black, - style: NativeTemplateFontStyle.italic, - size: 16.0), - tertiaryTextStyle: NativeTemplateTextStyle( - textColor: Colors.black, - style: NativeTemplateFontStyle.normal, - size: 16.0))) - ..load(); + ), + )..load(); } /// Redraw the app bar actions if a privacy options entry point is required. diff --git a/samples/admob/native_template_example/pubspec.yaml b/samples/admob/native_template_example/pubspec.yaml index 7c913abc8..659884bd5 100644 --- a/samples/admob/native_template_example/pubspec.yaml +++ b/samples/admob/native_template_example/pubspec.yaml @@ -30,23 +30,17 @@ environment: dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 dev_dependencies: + flutter_lints: ^5.0.0 flutter_test: sdk: flutter - # The "flutter_lints" package below contains a set of recommended lints to - # encourage good coding practices. The lint set provided by the package is - # activated in the `analysis_options.yaml` file located at the root of your - # package. See that file for information about deactivating specific lint - # rules and activating additional ones. - flutter_lints: ^2.0.0 - # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/samples/admob/rewarded_example/.gitignore b/samples/admob/rewarded_example/.gitignore index 29a3a5017..79c113f9b 100644 --- a/samples/admob/rewarded_example/.gitignore +++ b/samples/admob/rewarded_example/.gitignore @@ -5,9 +5,11 @@ *.swp .DS_Store .atom/ +.build/ .buildlog/ .history .svn/ +.swiftpm/ migrate_working_dir/ # IntelliJ related diff --git a/samples/admob/rewarded_example/android/app/build.gradle b/samples/admob/rewarded_example/android/app/build.gradle index 0c60e66c5..f9b5a4f56 100644 --- a/samples/admob/rewarded_example/android/app/build.gradle +++ b/samples/admob/rewarded_example/android/app/build.gradle @@ -25,7 +25,7 @@ if (flutterVersionName == null) { android { namespace "com.example.rewarded_example" compileSdkVersion flutter.compileSdkVersion - ndkVersion = "26.1.10909125" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -45,7 +45,7 @@ android { applicationId "com.example.rewarded_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 21 + minSdkVersion 23 multiDexEnabled true targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() diff --git a/samples/admob/rewarded_example/android/build.gradle b/samples/admob/rewarded_example/android/build.gradle index 2a2de2524..bc157bd1a 100644 --- a/samples/admob/rewarded_example/android/build.gradle +++ b/samples/admob/rewarded_example/android/build.gradle @@ -1,15 +1,3 @@ -buildscript { - ext.kotlin_version = '1.9.0' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { google() diff --git a/samples/admob/rewarded_example/android/settings.gradle b/samples/admob/rewarded_example/android/settings.gradle index 4dedb24d9..f4e0879bf 100644 --- a/samples/admob/rewarded_example/android/settings.gradle +++ b/samples/admob/rewarded_example/android/settings.gradle @@ -5,25 +5,21 @@ pluginManagement { def flutterSdkPath = properties.getProperty("flutter.sdk") assert flutterSdkPath != null, "flutter.sdk not set in local.properties" return flutterSdkPath - } - settings.ext.flutterSdkPath = flutterSdkPath() + }() - includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") repositories { google() mavenCentral() gradlePluginPortal() } - - plugins { - id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false - } } plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" id "com.android.application" version "8.6.0" apply false + id "org.jetbrains.kotlin.android" version "2.1.0" apply false } -include ":app" +include ":app" \ No newline at end of file diff --git a/samples/admob/rewarded_example/lib/consent_manager.dart b/samples/admob/rewarded_example/lib/consent_manager.dart index 59c23ec76..e80f19e86 100644 --- a/samples/admob/rewarded_example/lib/consent_manager.dart +++ b/samples/admob/rewarded_example/lib/consent_manager.dart @@ -17,35 +17,42 @@ class ConsentManager { /// Helper variable to determine if the privacy options form is required. Future isPrivacyOptionsRequired() async { return await ConsentInformation.instance - .getPrivacyOptionsRequirementStatus() == + .getPrivacyOptionsRequirementStatus() == PrivacyOptionsRequirementStatus.required; } /// Helper method to call the Mobile Ads SDK to request consent information /// and load/show a consent form if necessary. void gatherConsent( - OnConsentGatheringCompleteListener onConsentGatheringCompleteListener) { + OnConsentGatheringCompleteListener onConsentGatheringCompleteListener, + ) { // For testing purposes, you can force a DebugGeography of Eea or NotEea. ConsentDebugSettings debugSettings = ConsentDebugSettings( debugGeography: DebugGeography.debugGeographyEea, ); - ConsentRequestParameters params = - ConsentRequestParameters(consentDebugSettings: debugSettings); + ConsentRequestParameters params = ConsentRequestParameters( + consentDebugSettings: debugSettings, + ); // Requesting an update to consent information should be called on every app launch. - ConsentInformation.instance.requestConsentInfoUpdate(params, () async { - ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) { - // Consent has been gathered. - onConsentGatheringCompleteListener(loadAndShowError); - }); - }, (FormError formError) { - onConsentGatheringCompleteListener(formError); - }); + ConsentInformation.instance.requestConsentInfoUpdate( + params, + () async { + ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) { + // Consent has been gathered. + onConsentGatheringCompleteListener(loadAndShowError); + }); + }, + (FormError formError) { + onConsentGatheringCompleteListener(formError); + }, + ); } /// Helper method to call the Mobile Ads SDK method to show the privacy options form. void showPrivacyOptionsForm( - OnConsentFormDismissedListener onConsentFormDismissedListener) { + OnConsentFormDismissedListener onConsentFormDismissedListener, + ) { ConsentForm.showPrivacyOptionsForm(onConsentFormDismissedListener); } } diff --git a/samples/admob/rewarded_example/lib/countdown_timer.dart b/samples/admob/rewarded_example/lib/countdown_timer.dart index 6d378b7c3..ad5c5e3a6 100644 --- a/samples/admob/rewarded_example/lib/countdown_timer.dart +++ b/samples/admob/rewarded_example/lib/countdown_timer.dart @@ -1,12 +1,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; -enum CountdownState { - notStarted, - active, - paused, - ended, -} +enum CountdownState { notStarted, active, paused, ended } /// A simple class that keeps track of a decrementing timer. class CountdownTimer extends ChangeNotifier { diff --git a/samples/admob/rewarded_example/lib/main.dart b/samples/admob/rewarded_example/lib/main.dart index 01c667d9a..747f916c7 100644 --- a/samples/admob/rewarded_example/lib/main.dart +++ b/samples/admob/rewarded_example/lib/main.dart @@ -9,9 +9,7 @@ import 'countdown_timer.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); - runApp(const MaterialApp( - home: RewardedExample(), - )); + runApp(const MaterialApp(home: RewardedExample())); } /// An example app that loads a rewarded ad. @@ -45,7 +43,8 @@ class RewardedExampleState extends State { if (consentGatheringError != null) { // Consent not obtained in current session. debugPrint( - "${consentGatheringError.errorCode}: ${consentGatheringError.message}"); + "${consentGatheringError.errorCode}: ${consentGatheringError.message}", + ); } // Kick off the first play of the "game". @@ -62,15 +61,17 @@ class RewardedExampleState extends State { _initializeMobileAdsSDK(); // Show the "Watch video" button when the timer reaches zero. - _countdownTimer.addListener(() => setState(() { - if (_countdownTimer.isComplete) { - _gameOver = true; - _showWatchVideoButton = true; - _coins += 1; - } else { - _showWatchVideoButton = false; - } - })); + _countdownTimer.addListener( + () => setState(() { + if (_countdownTimer.isComplete) { + _gameOver = true; + _showWatchVideoButton = true; + _coins += 1; + } else { + _showWatchVideoButton = false; + } + }), + ); } void _startNewGame() { @@ -100,65 +101,75 @@ class RewardedExampleState extends State { return MaterialApp( title: 'Rewarded Example', home: Scaffold( - appBar: AppBar( - title: const Text('Rewarded Example'), actions: _appBarActions()), - body: Stack( - children: [ - const Align( - alignment: Alignment.topCenter, - child: Padding( - padding: EdgeInsets.all(15), - child: Text( - 'The Impossible Game', - style: - TextStyle(fontSize: 25, fontWeight: FontWeight.bold), + appBar: AppBar( + title: const Text('Rewarded Example'), + actions: _appBarActions(), + ), + body: Stack( + children: [ + const Align( + alignment: Alignment.topCenter, + child: Padding( + padding: EdgeInsets.all(15), + child: Text( + 'The Impossible Game', + style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold), + ), + ), + ), + Align( + alignment: Alignment.center, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + _countdownTimer.isComplete + ? 'Game over!' + : '${_countdownTimer.timeLeft} seconds left!', + ), + Visibility( + visible: _countdownTimer.isComplete, + child: TextButton( + onPressed: () { + _startNewGame(); + _loadAd(); + }, + child: const Text('Play Again'), ), - )), - Align( - alignment: Alignment.center, - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text(_countdownTimer.isComplete - ? 'Game over!' - : '${_countdownTimer.timeLeft} seconds left!'), - Visibility( - visible: _countdownTimer.isComplete, - child: TextButton( - onPressed: () { - _startNewGame(); - _loadAd(); - }, - child: const Text('Play Again'), - ), - ), - Visibility( - visible: _showWatchVideoButton, - child: TextButton( - onPressed: () { - setState(() => _showWatchVideoButton = false); + ), + Visibility( + visible: _showWatchVideoButton, + child: TextButton( + onPressed: () { + setState(() => _showWatchVideoButton = false); - _rewardedAd?.show(onUserEarnedReward: - (AdWithoutView ad, RewardItem rewardItem) { + _rewardedAd?.show( + onUserEarnedReward: + (AdWithoutView ad, RewardItem rewardItem) { // ignore: avoid_print print('Reward amount: ${rewardItem.amount}'); setState( - () => _coins += rewardItem.amount.toInt()); - }); - }, - child: const Text( - 'Watch video for additional 10 coins'), - )) - ], - )), - Align( - alignment: Alignment.bottomLeft, - child: Padding( - padding: const EdgeInsets.all(15), - child: Text('Coins: $_coins')), + () => _coins += rewardItem.amount.toInt(), + ); + }, + ); + }, + child: const Text('Watch video for additional 10 coins'), + ), + ), + ], + ), + ), + Align( + alignment: Alignment.bottomLeft, + child: Padding( + padding: const EdgeInsets.all(15), + child: Text('Coins: $_coins'), ), - ], - )), + ), + ], + ), + ), ); } @@ -171,31 +182,32 @@ class RewardedExampleState extends State { return [ PopupMenuButton( - itemBuilder: (context) => array - .map((item) => PopupMenuItem( - value: item, - child: Text( - item.label, - ), - )) - .toList(), - onSelected: (item) { - _pauseGame(); - switch (item.value) { - case 0: - MobileAds.instance.openAdInspector((error) { - // Error will be non-null if ad inspector closed due to an error. - _resumeGame(); - }); - case 1: - _consentManager.showPrivacyOptionsForm((formError) { - if (formError != null) { - debugPrint("${formError.errorCode}: ${formError.message}"); - } - _resumeGame(); - }); - } - }) + itemBuilder: (context) => array + .map( + (item) => PopupMenuItem( + value: item, + child: Text(item.label), + ), + ) + .toList(), + onSelected: (item) { + _pauseGame(); + switch (item.value) { + case 0: + MobileAds.instance.openAdInspector((error) { + // Error will be non-null if ad inspector closed due to an error. + _resumeGame(); + }); + case 1: + _consentManager.showPrivacyOptionsForm((formError) { + if (formError != null) { + debugPrint("${formError.errorCode}: ${formError.message}"); + } + _resumeGame(); + }); + } + }, + ), ]; } @@ -209,31 +221,36 @@ class RewardedExampleState extends State { } RewardedAd.load( - adUnitId: _adUnitId, - request: const AdRequest(), - rewardedAdLoadCallback: RewardedAdLoadCallback(onAdLoaded: (ad) { + adUnitId: _adUnitId, + request: const AdRequest(), + rewardedAdLoadCallback: RewardedAdLoadCallback( + onAdLoaded: (ad) { ad.fullScreenContentCallback = FullScreenContentCallback( - // Called when the ad showed the full screen content. - onAdShowedFullScreenContent: (ad) {}, - // Called when an impression occurs on the ad. - onAdImpression: (ad) {}, - // Called when the ad failed to show full screen content. - onAdFailedToShowFullScreenContent: (ad, err) { - ad.dispose(); - }, - // Called when the ad dismissed full screen content. - onAdDismissedFullScreenContent: (ad) { - ad.dispose(); - }, - // Called when a click is recorded for an ad. - onAdClicked: (ad) {}); + // Called when the ad showed the full screen content. + onAdShowedFullScreenContent: (ad) {}, + // Called when an impression occurs on the ad. + onAdImpression: (ad) {}, + // Called when the ad failed to show full screen content. + onAdFailedToShowFullScreenContent: (ad, err) { + ad.dispose(); + }, + // Called when the ad dismissed full screen content. + onAdDismissedFullScreenContent: (ad) { + ad.dispose(); + }, + // Called when a click is recorded for an ad. + onAdClicked: (ad) {}, + ); // Keep a reference to the ad so you can show it later. _rewardedAd = ad; - }, onAdFailedToLoad: (LoadAdError error) { + }, + onAdFailedToLoad: (LoadAdError error) { // ignore: avoid_print print('RewardedAd failed to load: $error'); - })); + }, + ), + ); } /// Redraw the app bar actions if a privacy options entry point is required. diff --git a/samples/admob/rewarded_example/pubspec.yaml b/samples/admob/rewarded_example/pubspec.yaml index 841f224ee..dcf785aa7 100644 --- a/samples/admob/rewarded_example/pubspec.yaml +++ b/samples/admob/rewarded_example/pubspec.yaml @@ -9,12 +9,12 @@ environment: dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^2.0.0 + flutter_lints: ^5.0.0 flutter: uses-material-design: true diff --git a/samples/admob/rewarded_interstitial_example/.gitignore b/samples/admob/rewarded_interstitial_example/.gitignore index 29a3a5017..79c113f9b 100644 --- a/samples/admob/rewarded_interstitial_example/.gitignore +++ b/samples/admob/rewarded_interstitial_example/.gitignore @@ -5,9 +5,11 @@ *.swp .DS_Store .atom/ +.build/ .buildlog/ .history .svn/ +.swiftpm/ migrate_working_dir/ # IntelliJ related diff --git a/samples/admob/rewarded_interstitial_example/android/app/build.gradle b/samples/admob/rewarded_interstitial_example/android/app/build.gradle index fd140ab5a..1a369ff8a 100644 --- a/samples/admob/rewarded_interstitial_example/android/app/build.gradle +++ b/samples/admob/rewarded_interstitial_example/android/app/build.gradle @@ -25,7 +25,7 @@ if (flutterVersionName == null) { android { namespace "com.example.rewarded_interstitial_example" compileSdkVersion flutter.compileSdkVersion - ndkVersion = "26.1.10909125" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -45,7 +45,7 @@ android { applicationId "com.example.rewarded_interstitial_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 21 + minSdkVersion 23 multiDexEnabled true targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() diff --git a/samples/admob/rewarded_interstitial_example/android/build.gradle b/samples/admob/rewarded_interstitial_example/android/build.gradle index 2a2de2524..bc157bd1a 100644 --- a/samples/admob/rewarded_interstitial_example/android/build.gradle +++ b/samples/admob/rewarded_interstitial_example/android/build.gradle @@ -1,15 +1,3 @@ -buildscript { - ext.kotlin_version = '1.9.0' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { google() diff --git a/samples/admob/rewarded_interstitial_example/android/settings.gradle b/samples/admob/rewarded_interstitial_example/android/settings.gradle index 4dedb24d9..f4e0879bf 100644 --- a/samples/admob/rewarded_interstitial_example/android/settings.gradle +++ b/samples/admob/rewarded_interstitial_example/android/settings.gradle @@ -5,25 +5,21 @@ pluginManagement { def flutterSdkPath = properties.getProperty("flutter.sdk") assert flutterSdkPath != null, "flutter.sdk not set in local.properties" return flutterSdkPath - } - settings.ext.flutterSdkPath = flutterSdkPath() + }() - includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") repositories { google() mavenCentral() gradlePluginPortal() } - - plugins { - id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false - } } plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" id "com.android.application" version "8.6.0" apply false + id "org.jetbrains.kotlin.android" version "2.1.0" apply false } -include ":app" +include ":app" \ No newline at end of file diff --git a/samples/admob/rewarded_interstitial_example/lib/ad_dialog.dart b/samples/admob/rewarded_interstitial_example/lib/ad_dialog.dart index 340c4a351..f1d8f67b6 100644 --- a/samples/admob/rewarded_interstitial_example/lib/ad_dialog.dart +++ b/samples/admob/rewarded_interstitial_example/lib/ad_dialog.dart @@ -5,10 +5,7 @@ import 'package:flutter/material.dart'; class AdDialog extends StatefulWidget { final VoidCallback showAd; - const AdDialog({ - Key? key, - required this.showAd, - }) : super(key: key); + const AdDialog({super.key, required this.showAd}); @override AdDialogState createState() => AdDialogState(); @@ -19,12 +16,14 @@ class AdDialogState extends State { @override void initState() { - _countdownTimer.addListener(() => setState(() { - if (_countdownTimer.isComplete) { - Navigator.pop(context); - widget.showAd(); - } - })); + _countdownTimer.addListener( + () => setState(() { + if (_countdownTimer.isComplete) { + Navigator.pop(context); + widget.showAd(); + } + }), + ); _countdownTimer.start(); super.initState(); @@ -34,17 +33,17 @@ class AdDialogState extends State { Widget build(BuildContext context) { return AlertDialog( title: const Text('Watch an ad for 10 more coins'), - content: Text('Video starting in ${_countdownTimer.timeLeft} seconds...', - style: const TextStyle(color: Colors.grey)), + content: Text( + 'Video starting in ${_countdownTimer.timeLeft} seconds...', + style: const TextStyle(color: Colors.grey), + ), actions: [ TextButton( - onPressed: () { - Navigator.pop(context); - }, - child: const Text( - 'No thanks', - style: TextStyle(color: Colors.red), - )) + onPressed: () { + Navigator.pop(context); + }, + child: const Text('No thanks', style: TextStyle(color: Colors.red)), + ), ], ); } diff --git a/samples/admob/rewarded_interstitial_example/lib/consent_manager.dart b/samples/admob/rewarded_interstitial_example/lib/consent_manager.dart index f8d8c7912..60db83b8c 100644 --- a/samples/admob/rewarded_interstitial_example/lib/consent_manager.dart +++ b/samples/admob/rewarded_interstitial_example/lib/consent_manager.dart @@ -17,35 +17,42 @@ class ConsentManager { /// Helper variable to determine if the privacy options form is required. Future isPrivacyOptionsRequired() async { return await ConsentInformation.instance - .getPrivacyOptionsRequirementStatus() == + .getPrivacyOptionsRequirementStatus() == PrivacyOptionsRequirementStatus.required; } /// Helper method to call the Mobile Ads SDK to request consent information /// and load/show a consent form if necessary. void gatherConsent( - OnConsentGatheringCompleteListener onConsentGatheringCompleteListener) { + OnConsentGatheringCompleteListener onConsentGatheringCompleteListener, + ) { // For testing purposes, you can force a DebugGeography of Eea or NotEea. ConsentDebugSettings debugSettings = ConsentDebugSettings( // debugGeography: DebugGeography.debugGeographyEea, ); - ConsentRequestParameters params = - ConsentRequestParameters(consentDebugSettings: debugSettings); + ConsentRequestParameters params = ConsentRequestParameters( + consentDebugSettings: debugSettings, + ); // Requesting an update to consent information should be called on every app launch. - ConsentInformation.instance.requestConsentInfoUpdate(params, () async { - ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) { - // Consent has been gathered. - onConsentGatheringCompleteListener(loadAndShowError); - }); - }, (FormError formError) { - onConsentGatheringCompleteListener(formError); - }); + ConsentInformation.instance.requestConsentInfoUpdate( + params, + () async { + ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) { + // Consent has been gathered. + onConsentGatheringCompleteListener(loadAndShowError); + }); + }, + (FormError formError) { + onConsentGatheringCompleteListener(formError); + }, + ); } /// Helper method to call the Mobile Ads SDK method to show the privacy options form. void showPrivacyOptionsForm( - OnConsentFormDismissedListener onConsentFormDismissedListener) { + OnConsentFormDismissedListener onConsentFormDismissedListener, + ) { ConsentForm.showPrivacyOptionsForm(onConsentFormDismissedListener); } } diff --git a/samples/admob/rewarded_interstitial_example/lib/countdown_timer.dart b/samples/admob/rewarded_interstitial_example/lib/countdown_timer.dart index a50d1f7a9..c1ab3c57a 100644 --- a/samples/admob/rewarded_interstitial_example/lib/countdown_timer.dart +++ b/samples/admob/rewarded_interstitial_example/lib/countdown_timer.dart @@ -1,12 +1,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; -enum CountdownState { - notStarted, - active, - paused, - ended, -} +enum CountdownState { notStarted, active, paused, ended } /// A simple class that keeps track of a decrementing timer. class CountdownTimer extends ChangeNotifier { diff --git a/samples/admob/rewarded_interstitial_example/lib/main.dart b/samples/admob/rewarded_interstitial_example/lib/main.dart index 3386b2651..d0f89bf2d 100644 --- a/samples/admob/rewarded_interstitial_example/lib/main.dart +++ b/samples/admob/rewarded_interstitial_example/lib/main.dart @@ -10,9 +10,7 @@ import 'consent_manager.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); - runApp(const MaterialApp( - home: RewardedInterstitialExample(), - )); + runApp(const MaterialApp(home: RewardedInterstitialExample())); } /// An example app that loads a rewarded interstitial ad. @@ -47,8 +45,8 @@ class RewardedInterstitialExampleState if (consentGatheringError != null) { // Consent not obtained in current session. debugPrint( - "${consentGatheringError.errorCode}: ${consentGatheringError - .message}"); + "${consentGatheringError.errorCode}: ${consentGatheringError.message}", + ); } // Kick off the first play of the "game". @@ -65,19 +63,22 @@ class RewardedInterstitialExampleState _initializeMobileAdsSDK(); // Show an alert dialog when the timer reaches zero. - _countdownTimer.addListener(() => - setState(() { - if (_countdownTimer.isComplete) { - showDialog( - context: context, - builder: (context) => - AdDialog(showAd: () { - _gameOver = true; - _showAdCallback(); - })); - _coins += 1; - } - })); + _countdownTimer.addListener( + () => setState(() { + if (_countdownTimer.isComplete) { + showDialog( + context: context, + builder: (context) => AdDialog( + showAd: () { + _gameOver = true; + _showAdCallback(); + }, + ), + ); + _coins += 1; + } + }), + ); } void _startNewGame() { @@ -104,11 +105,12 @@ class RewardedInterstitialExampleState void _showAdCallback() { _rewardedInterstitialAd?.show( - onUserEarnedReward: (AdWithoutView view, RewardItem rewardItem) { - // ignore: avoid_print - print('Reward amount: ${rewardItem.amount}'); - setState(() => _coins += rewardItem.amount.toInt()); - }); + onUserEarnedReward: (AdWithoutView view, RewardItem rewardItem) { + // ignore: avoid_print + print('Reward amount: ${rewardItem.amount}'); + setState(() => _coins += rewardItem.amount.toInt()); + }, + ); } @override @@ -116,49 +118,55 @@ class RewardedInterstitialExampleState return MaterialApp( title: 'Rewarded Interstitial Example', home: Scaffold( - appBar: AppBar( - title: const Text('Rewarded Interstitial Example'), - actions: _appBarActions()), - body: Stack( - children: [ - const Align( - alignment: Alignment.topCenter, - child: Padding( - padding: EdgeInsets.all(15), - child: Text( - 'The Impossible Game', - style: - TextStyle(fontSize: 25, fontWeight: FontWeight.bold), + appBar: AppBar( + title: const Text('Rewarded Interstitial Example'), + actions: _appBarActions(), + ), + body: Stack( + children: [ + const Align( + alignment: Alignment.topCenter, + child: Padding( + padding: EdgeInsets.all(15), + child: Text( + 'The Impossible Game', + style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold), + ), + ), + ), + Align( + alignment: Alignment.center, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + _countdownTimer.isComplete + ? 'Game over!' + : '${_countdownTimer.timeLeft} seconds left!', + ), + Visibility( + visible: _countdownTimer.isComplete, + child: TextButton( + onPressed: () { + _startNewGame(); + _loadAd(); + }, + child: const Text('Play Again'), ), - )), - Align( - alignment: Alignment.center, - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text(_countdownTimer.isComplete - ? 'Game over!' - : '${_countdownTimer.timeLeft} seconds left!'), - Visibility( - visible: _countdownTimer.isComplete, - child: TextButton( - onPressed: () { - _startNewGame(); - _loadAd(); - }, - child: const Text('Play Again'), - ), - ) - ], - )), - Align( - alignment: Alignment.bottomLeft, - child: Padding( - padding: const EdgeInsets.all(15), - child: Text('Coins: $_coins')), + ), + ], + ), + ), + Align( + alignment: Alignment.bottomLeft, + child: Padding( + padding: const EdgeInsets.all(15), + child: Text('Coins: $_coins'), ), - ], - )), + ), + ], + ), + ), ); } @@ -171,33 +179,32 @@ class RewardedInterstitialExampleState return [ PopupMenuButton( - itemBuilder: (context) => - array - .map((item) => - PopupMenuItem( - value: item, - child: Text( - item.label, - ), - )) - .toList(), - onSelected: (item) { - _pauseGame(); - switch (item.value) { - case 0: - MobileAds.instance.openAdInspector((error) { - // Error will be non-null if ad inspector closed due to an error. - _resumeGame(); - }); - case 1: - _consentManager.showPrivacyOptionsForm((formError) { - if (formError != null) { - debugPrint("${formError.errorCode}: ${formError.message}"); - } - _resumeGame(); - }); - } - }) + itemBuilder: (context) => array + .map( + (item) => PopupMenuItem( + value: item, + child: Text(item.label), + ), + ) + .toList(), + onSelected: (item) { + _pauseGame(); + switch (item.value) { + case 0: + MobileAds.instance.openAdInspector((error) { + // Error will be non-null if ad inspector closed due to an error. + _resumeGame(); + }); + case 1: + _consentManager.showPrivacyOptionsForm((formError) { + if (formError != null) { + debugPrint("${formError.errorCode}: ${formError.message}"); + } + _resumeGame(); + }); + } + }, + ), ]; } @@ -211,32 +218,36 @@ class RewardedInterstitialExampleState } RewardedInterstitialAd.load( - adUnitId: _adUnitId, - request: const AdRequest(), - rewardedInterstitialAdLoadCallback: - RewardedInterstitialAdLoadCallback(onAdLoaded: (ad) { + adUnitId: _adUnitId, + request: const AdRequest(), + rewardedInterstitialAdLoadCallback: RewardedInterstitialAdLoadCallback( + onAdLoaded: (ad) { ad.fullScreenContentCallback = FullScreenContentCallback( // Called when the ad showed the full screen content. - onAdShowedFullScreenContent: (ad) {}, - // Called when an impression occurs on the ad. - onAdImpression: (ad) {}, - // Called when the ad failed to show full screen content. - onAdFailedToShowFullScreenContent: (ad, err) { - ad.dispose(); - }, - // Called when the ad dismissed full screen content. - onAdDismissedFullScreenContent: (ad) { - ad.dispose(); - }, - // Called when a click is recorded for an ad. - onAdClicked: (ad) {}); + onAdShowedFullScreenContent: (ad) {}, + // Called when an impression occurs on the ad. + onAdImpression: (ad) {}, + // Called when the ad failed to show full screen content. + onAdFailedToShowFullScreenContent: (ad, err) { + ad.dispose(); + }, + // Called when the ad dismissed full screen content. + onAdDismissedFullScreenContent: (ad) { + ad.dispose(); + }, + // Called when a click is recorded for an ad. + onAdClicked: (ad) {}, + ); // Keep a reference to the ad so you can show it later. _rewardedInterstitialAd = ad; - }, onAdFailedToLoad: (LoadAdError error) { + }, + onAdFailedToLoad: (LoadAdError error) { // ignore: avoid_print print('RewardedInterstitialAd failed to load: $error'); - })); + }, + ), + ); } /// Redraw the app bar actions if a privacy options entry point is required. diff --git a/samples/admob/rewarded_interstitial_example/pubspec.yaml b/samples/admob/rewarded_interstitial_example/pubspec.yaml index 7980a8743..38048e124 100644 --- a/samples/admob/rewarded_interstitial_example/pubspec.yaml +++ b/samples/admob/rewarded_interstitial_example/pubspec.yaml @@ -9,12 +9,12 @@ environment: dependencies: flutter: sdk: flutter - google_mobile_ads: ^5.2.0 + google_mobile_ads: ^6.0.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^2.0.0 + flutter_lints: ^5.0.0 flutter: uses-material-design: true