googleads-mobile-flutter: Ios Pod Error GoogleAppMeasurement Firebase 10

[!] CocoaPods could not find compatible versions for pod "GoogleAppMeasurement":
  In Podfile:
    firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) was resolved to 10.0.1, which depends on
      Firebase/Analytics (= 10.0.0) was resolved to 10.0.0, which depends on
        Firebase/Core (= 10.0.0) was resolved to 10.0.0, which depends on
          FirebaseAnalytics (~> 10.0.0) was resolved to 10.0.0, which depends on
            FirebaseAnalytics/AdIdSupport (= 10.0.0) was resolved to 10.0.0, which depends on
              GoogleAppMeasurement (= 10.0.0)

    google_mobile_ads (from `.symlinks/plugins/google_mobile_ads/ios`) was resolved to 0.0.1, which depends on
      Google-Mobile-Ads-SDK (= 9.10.0) was resolved to 9.10.0, which depends on
        GoogleAppMeasurement (< 10.0, >= 7.0)

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 23
  • Comments: 20

Most upvoted comments

using @jslattery26 fork will solve the problems temporarily

  google_mobile_ads: 
    git: 
      url: https://github.com/jslattery26/googleads-mobile-flutter
      path: packages/google_mobile_ads

Hi everyone facing this issue, This issue seems to have been fixed on version 2.0.0 of the plugin onward as mentioned at https://github.com/googleads/googleads-mobile-flutter/issues/594#issuecomment-1196970456. So, please try use the latest version and check if the issue still reproduces.

Just had this issue today while using

google_mobile_ads: ^3.0.0. firebase_core: ^2.15.0 firebase_analytics: ^10.4.4

Couldn’t get it to work at all until I changed to google_mobile_ads: ^2.4.0 in my subspec.yaml file. Then I ran

flutter pub get pod repo update pod install flutter build iOS flutter run

Now all is good. Mac M2 chip. Hope this helps someone.

Yay, this is fixed in google_mobile_ads: ^2.2.0

I also can reproduce this issue with firebase_analytics: ^10.0.2 and google_mobile_ads: ^2.1.0.

Logs
[!] CocoaPods could not find compatible versions for pod "GoogleAppMeasurement":
  In snapshot (Podfile.lock):
    GoogleAppMeasurement (< 10.0, = 9.6.0, >= 7.0)

  In Podfile:
    firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) was resolved to 10.0.2, which depends on
      Firebase/Analytics (= 10.0.0) was resolved to 10.0.0, which depends on
        Firebase/Core (= 10.0.0) was resolved to 10.0.0, which depends on
          FirebaseAnalytics (~> 10.0.0) was resolved to 10.0.0, which depends on
            FirebaseAnalytics/AdIdSupport (= 10.0.0) was resolved to 10.0.0, which depends on
              GoogleAppMeasurement (= 10.0.0)

    google_mobile_ads (from `.symlinks/plugins/google_mobile_ads/ios`) was resolved to 0.0.1, which depends on
      Google-Mobile-Ads-SDK (= 9.10.0) was resolved to 9.10.0, which depends on
        GoogleAppMeasurement (< 10.0, >= 7.0)

/cc: @jjliu15

Same error for RewardedAd.load too, even if I use @jslattery26 fork:

======== Exception caught by services library ======================================================
The following _TypeError was thrown during a platform message callback:
type 'Null' is not a subtype of type 'String'

When the exception was thrown, this was the stack: 
#0      AdMessageCodec.readValueOfType (package:google_mobile_ads/src/ad_instance_manager.dart:1007:31)
#1      AdMessageCodec.readValueOfType (package:google_mobile_ads/src/ad_instance_manager.dart:1003:38)
#2      AdMessageCodec.readValueOfType (package:google_mobile_ads/src/ad_instance_manager.dart:1022:11)
#3      StandardMessageCodec.readValue (package:flutter/src/services/message_codecs.dart:479:12)
#4      StandardMessageCodec.readValueOfType (package:flutter/src/services/message_codecs.dart:531:39)
#5      AdMessageCodec.readValueOfType (package:google_mobile_ads/src/ad_instance_manager.dart:1108:22)
#6      StandardMessageCodec.readValue (package:flutter/src/services/message_codecs.dart:479:12)
#7      StandardMethodCodec.decodeMethodCall (package:flutter/src/services/message_codecs.dart:612:44)
#8      MethodChannel._handleAsMethodCall (package:flutter/src/services/platform_channel.dart:534:35)
#9      MethodChannel.setMethodCallHandler.<anonymous closure> (package:flutter/src/services/platform_channel.dart:529:34)
#10     _DefaultBinaryMessenger.setMessageHandler.<anonymous closure> (package:flutter/src/services/binding.dart:387:35)
#11     _invoke2.<anonymous closure> (dart:ui/hooks.dart:189:15)
#15     _invoke2 (dart:ui/hooks.dart:188:10)
#16     _ChannelCallbackRecord.invoke (dart:ui/channel_buffers.dart:42:5)
#17     _Channel.push (dart:ui/channel_buffers.dart:132:31)
#18     ChannelBuffers.push (dart:ui/channel_buffers.dart:329:17)
#19     PlatformDispatcher._dispatchPlatformMessage (dart:ui/platform_dispatcher.dart:599:22)
#20     _dispatchPlatformMessage (dart:ui/hooks.dart:89:31)
(elided 3 frames from dart:async)
====================================================================================================

Ref code for loading Reward ad:

    RewardedAd.load(
        adUnitId: AdHelper.rewardedAdUnitId,
        request: const AdRequest(),
        rewardedAdLoadCallback: RewardedAdLoadCallback(
          onAdLoaded: (RewardedAd ad) {
            print('$ad loaded.');
            // Keep a reference to the ad so you can show it later.
            reward = ad;
            reward!.fullScreenContentCallback = FullScreenContentCallback(
              onAdShowedFullScreenContent: (RewardedAd ad) =>
                  print('$ad onAdShowedFullScreenContent.'),
              onAdDismissedFullScreenContent: (RewardedAd ad) {
                print('$ad onAdDismissedFullScreenContent.');
                ad.dispose();
                reward = null;
              },
              onAdFailedToShowFullScreenContent:
                  (RewardedAd ad, AdError error) {
                print('$ad onAdFailedToShowFullScreenContent: $error');
                ad.dispose();
                reward = null;
              },
              onAdImpression: (RewardedAd ad) => impressionTrigger = true,
            );

            //Fire away
            reward!.show(
                onUserEarnedReward: (AdWithoutView ad, RewardItem rewardItem) {
              // Reward the user for watching an ad.
              print("You got your reward, yey!");
            });
          },
          onAdFailedToLoad: (LoadAdError error) {
            print('RewardedAd failed to load: $error');
            reward = null;
          },
        ));