问题
In flutter, we want to use AdMob.
We set as follows. Because there may be relationships, we also write Firebase Analytics.
[pubspec.yaml]
dependencies:
flutter:
sdk: flutter
firebase_admob: ^0.5.7
firebase_analytics: ^1.0.3
[main.dart]
void main() {
// [Analytics]
FirebaseAnalytics().logAppOpen();
// [Initialize:AdMob]
FirebaseAdMob.instance.initialize(
appId: Platform.isAndroid
? 'ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx'
: 'ca-app-pub-yyyyyyyyyyyyyyyy~yyyyyyyyyy',
);
// [Create Banner Ad:AdMob]
createBannerAd()
..load()
..show(
anchorType: AnchorType.top,
);
runApp(MyApp());
}
final MobileAdTargetingInfo targetingInfo = new MobileAdTargetingInfo(
testDevices: Const.testDevices,
keywords: <String>[
'foo',
'bar',
],
birthday: new DateTime.now(),
childDirected: true,
gender: MobileAdGender.female,
);
// [Create Banner Ad:AdMob]
BannerAd createBannerAd() {
return new BannerAd(
adUnitId: Platform.isAndroid
? 'ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX'
: 'ca-app-pub-YYYYYYYYYYYYYYYY~YYYYYYYYYY',
size: AdSize.banner,
targetingInfo: targetingInfo,
listener: (MobileAdEvent event) {
print("BannerAd event $event");
},
);
}
We download the Firebase configuration file and place it in the following. In Xcode's Target Membership, we have confirmed that it is set correctly.
/android/app/google-services.json
/ios/Runner/GoogleService-Info.plist
It is displayed normally on Android device. However, it is not displayed on the iOS device. The following log was output.
2018-08-29 11:21:58.147849+0900 Runner[459:115739] FirebaseAdMobPlugin <warning> [FIRApp configure]
2018-08-29 11:21:58.157062+0900 Runner[459:115880] 5.5.0 - [Firebase/Core][I-COR000003] The default Firebase app has not yet been configured. Add `[FIRApp configure];` (`FirebaseApp.configure()` in Swift) to your application initialization. Read more:
[abridgement]
2018-08-29 11:21:59.755279+0900 Runner[459:115739] FirebaseAdMobPlugin <warning> adView:didFailToReceiveAdWithError: Request Error: No ad to show. (MobileAd <FLTBannerAd: 0x113ef81b0> PENDING mobileAdId:ZZZZZZZZZ for: <GADBannerView: 0x113efa7b0; frame = (0 0; 320 50); clipsToBounds = YES; layer = <CALayer: 0x113efac40>>)
2018-08-29 11:21:59.757247+0900 Runner[459:115885] flutter: BannerAd event MobileAdEvent.failedToLoad
How should we implement [FIRApp configure];
in the flutter?
Is it unnecessary? We could not find it in the sample code.
Is our setting correct? If we wait for a few more days, will mobileAdId not be pending?
$ flutter doctor -v
[✓] Flutter (Channel dev, v0.7.2, on Mac OS X 10.13.6 17G65, locale ja)
• Flutter version 0.7.2 at /Applications/flutter
• Framework revision f8a2fc7c28 (4 days ago), 2018-08-27 20:58:30 +0200
• Engine revision af42b6dc95
• Dart version 2.1.0-dev.1.0.flutter-ccb16f7282
[✓] Android toolchain - develop for Android devices (Android SDK 27.0.3)
• Android SDK at /Users/xxxxx/src/android-sdks
• Android NDK at /Users/xxxxx/src/android-sdks/ndk-bundle
• Platform android-27, build-tools 27.0.3
• ANDROID_HOME = /Users/xxxxx/src/android-sdks
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)
• All Android licenses accepted.
[✓] iOS toolchain - develop for iOS devices (Xcode 9.4.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 9.4.1, Build version 9F2000
• ios-deploy 1.9.2
• CocoaPods version 1.5.3
[✓] Android Studio (version 3.1)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 27.1.1
• Dart plugin version 173.4700
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)
[✓] VS Code (version 1.25.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 2.17.1
[✓] Connected devices (1 available)
• iPhone 6 Plus • XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX • ios • iOS 11.4.1
• No issues found!
In parallel with this question, we also contact AdMob. Ads will not be shown using the following app ID and ad unit ID.
ca-app-pub-3940256099942544~1458002511
ca-app-pub-3940256099942544/2934735716
回答1:
We tried several terminals.
- [OK] ASUS Z017DA (Android)
- [OK] iPad mini
- [OK] iPhone 4s
- [NG] iPhone 6 Plus
- [NG] iPhone SE
We tried various changes but they were ineffective. However, today "No ad to show" suddenly ceased to occur. But the ad was not displayed yet.
We thought that ads might be displayed outside the screen. When we made the following settings, the ad was displayed in the place we expected.
_bannerAd
..load()
..show(
anchorType: AnchorType.top,
anchorOffset: 50.0,
);
However, in the terminal normally displayed before the change, the ad was displayed shifted downward. We could not adopt this method because we can not try all the terminals.
Next, we placed the ad under the screen.
_bannerAd
..load()
..show(
anchorType: AnchorType.bottom,
);
In this case, we were able to confirm that ad is displayed normally on all terminals. We wanted to place the ad on top but we gave it up.
AnchorType.top may be incorrect in some cases.
回答2:
-> Privacy then
-> Adverting then
-> Limit Ad Tracking Admob is now displayed when repeating on and off.
Perhaps it is bad that DeviceID is in the same state?
来源:https://stackoverflow.com/questions/52136942/ads-are-not-showing-on-ios-devices