Проблемы с идентификатором приложения с firebase_admob 0.6.1 для флаттера - PullRequest
0 голосов
/ 12 сентября 2018

Я создал новое приложение для Android в admob, у меня есть идентификатор, и я попытался использовать его в примере на странице firebase_admob.

Я добавил последнюю версию в проект флаттера по умолчанию, скопировал и вставил код на страницу. Я только изменил идентификатор, я пробовал одинарные кавычки, я пробовал двойные кавычки, но безрезультатно, у меня та же ошибка в консоли.

Что я делаю не так? Я действительно не понимаю, я провел весь день, пытаясь выяснить это. Пожалуйста, помогите мне.

getGoogleAppId завершился ошибкой с исключением: java.lang.IllegalStateException: инициализация должна быть вызвана до getGoogleAppId .: com.google.android.gms.measurement.AppMeasurement.getGmpAppId (неизвестный источник: 0)

Я также получаю ошибку

Не удалось инициализировать GoogleService, статус: 10, Отсутствует значение идентификатора приложения Google из строковых ресурсов с именем google_app_id.

и

Отсутствует google_app_id. Аналитика Firebase отключена. Смотри ...

Это код:

import 'package:flutter/material.dart';
import 'package:firebase_admob/firebase_admob.dart';

// You can also test with your own ad unit IDs by registering your device as     a
// test device. Check the logs for your device's ID value.
const String testDevice = 'YOUR_DEVICE_ID';

class MyApp extends StatefulWidget {
@override
_MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<MyApp> {

static final MobileAdTargetingInfo targetingInfo = new MobileAdTargetingInfo(
testDevices: testDevice != null ? <String>[testDevice] : null,
keywords: <String>['foo', 'bar'],
contentUrl: 'http://foo.com/bar.html',
birthday: new DateTime.now(),
childDirected: true,
gender: MobileAdGender.male,
nonPersonalizedAds: true,
);

BannerAd _bannerAd;
InterstitialAd _interstitialAd;

int _coins = 0;

BannerAd createBannerAd() {
return new BannerAd(
adUnitId: BannerAd.testAdUnitId,
size: AdSize.banner,
targetingInfo: targetingInfo,
listener: (MobileAdEvent event) {
print("BannerAd event $event");
},
);
}

InterstitialAd createInterstitialAd() {
return new InterstitialAd(
  adUnitId: InterstitialAd.testAdUnitId,
  targetingInfo: targetingInfo,
  listener: (MobileAdEvent event) {
    print("InterstitialAd event $event");
  },
);
}

@override
void initState() {
super.initState();
FirebaseAdMob.instance
    .initialize(appId: 'ca-app-pub-0463943530925483~4865006927');
_bannerAd = createBannerAd()..load();
RewardedVideoAd.instance.listener =
    (RewardedVideoAdEvent event, {String rewardType, int rewardAmount}) {
  print("RewardedVideoAd event $event");
  if (event == RewardedVideoAdEvent.rewarded) {
    setState(() {
      _coins += rewardAmount;
    });
  }
};
}

@override
void dispose() {
_bannerAd?.dispose();
_interstitialAd?.dispose();
super.dispose();
}


@override
Widget build(BuildContext context) {
return new MaterialApp(
  home: new Scaffold(
    appBar: new AppBar(
      title: const Text('AdMob Plugin example app'),
    ),
    body: new SingleChildScrollView(
      child: new Center(
        child: new Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            new RaisedButton(
                child: const Text('SHOW BANNER'),
                onPressed: () {
                  _bannerAd ??= createBannerAd();
                  _bannerAd
                    ..load()
                    ..show();
                }),
            new RaisedButton(
                child: const Text('REMOVE BANNER'),
                onPressed: () {
                  _bannerAd?.dispose();
                  _bannerAd = null;
                }),
            new RaisedButton(
              child: const Text('LOAD INTERSTITIAL'),
              onPressed: () {
                _interstitialAd?.dispose();
                _interstitialAd = createInterstitialAd()..load();
              },
            ),
            new RaisedButton(
              child: const Text('SHOW INTERSTITIAL'),
              onPressed: () {
                _interstitialAd?.show();
              },
            ),
            new RaisedButton(
              child: const Text('LOAD REWARDED VIDEO'),
              onPressed: () {
                RewardedVideoAd.instance.load(
                    adUnitId: RewardedVideoAd.testAdUnitId,
                    targetingInfo: targetingInfo);
              },
            ),
            new RaisedButton(
              child: const Text('SHOW REWARDED VIDEO'),
              onPressed: () {
                RewardedVideoAd.instance.show();
              },
            ),
            new Text("You have $_coins coins."),
          ].map((Widget button) {
            return new Padding(
              padding: const EdgeInsets.symmetric(vertical: 16.0),
              child: button,
            );
          }).toList(),
        ),
      ),
    ),
  ),
);
}
}

void main() {
runApp(new MyApp());
}

1 Ответ

0 голосов
/ 31 октября 2018

Существует проблема с последним плагином

Мне удалось открыть приложение, изменив: firebase_admob: ^0.5.5

и:

dependencies {
    api 'com.google.firebase:firebase-ads:15.0.1'
}

Идобавление в AndroidManifest.xml с помощью моих ключей AdMob:

 </activity>
        <meta-data
            android:name="com.google.android.gms.ads.APP_ID_HERE"
            android:value="ca-app-pub-XXXXXXXXXXXXXXXX"/>
    </application>

Также

FirebaseAdMob.instance.initialize(appId: "appid");

GitHub Issue

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...