اذهب إلى المحتوى
  • 0

testDevice في اعلانات admob

Flutter Dev

السؤال

في الكود المنشور في منشور حزمة firebase_admob

يوجد السطر البرمجي التالي:

const String testDevice = 'YOUR_DEVICE_ID';

لما اعمل تشغيل للكود او المثال المنشور في الاضافة 

احصل على السطر البرمجي التالي:

 Use RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("****************") to get test ads on this device.

طبعا هو يعطيني رقم جهازي بدل النجوم وفي حالة قمت بوضعه في السطر المكتوب بـ testDevice بين الاقواس 

كود الاعلانات شغال لدي 100%100

ولكن لو لم اضعه احصل على الخطاء البرمجي التالي:

I/Ads     (29451): Use RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("*************") to get test ads on this device.
W/flutter (29451): onAdFailedToLoad: 3
I/Ads     (29451): Ad failed to load : 3
I/flutter (29451): BannerAd event MobileAdEvent.failedToLoad

وهذا الكود البرمجي كامل:

// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// ignore_for_file: public_member_api_docs

import 'dart:io';

import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.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';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}

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

class _MyAppState extends State<MyApp> {
  static const MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
    testDevices: testDevice != null ? <String>[testDevice] : null,
    keywords: <String>['foo', 'bar'],
    contentUrl: 'http://foo.com/bar.html',
    childDirected: true,
    nonPersonalizedAds: true,
  );

  BannerAd _bannerAd;
  NativeAd _nativeAd;
  InterstitialAd _interstitialAd;
  int _coins = 0;

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

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

  NativeAd createNativeAd() {
    return NativeAd(
      adUnitId: NativeAd.testAdUnitId,
      factoryId: 'adFactoryExample',
      targetingInfo: targetingInfo,
      listener: (MobileAdEvent event) {
        print("$NativeAd event $event");
      },
    );
  }

  @override
  void initState() {
    super.initState();
    FirebaseAdMob.instance.initialize(appId: FirebaseAdMob.testAppId);
    _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();
    _nativeAd?.dispose();
    _interstitialAd?.dispose();
    super.dispose();
  }

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

كيف ممكن حل هذا المشكلة لو تكرمتو؟

مع العلم اني اختبر المشروع ب جهازي الحقيقي وليس محاكي الاندرويد

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

ممكن ترفق ملفات المشروع كاملاً؟ 

وتأكد من 

<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="[ADMOB_APP_ID]"/>

داخل ملف AndroidManifest.xml بحيث أنه 

[ADMOB_APP_ID]

هو معرف التطبيق على أدموب.

لتجريب المشروع والتأكد من أنك قمت بالخطوات كاملاً يرجى إرفاق ملفات المشروع للمساعدة في حل المشكلة.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 2/24/2021 at 17:13 قال بلال زيادة:

ممكن ترفق ملفات المشروع كاملاً؟ 

وتأكد من 


<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="[ADMOB_APP_ID]"/>

داخل ملف AndroidManifest.xml بحيث أنه 


[ADMOB_APP_ID]

هو معرف التطبيق على أدموب.

لتجريب المشروع والتأكد من أنك قمت بالخطوات كاملاً يرجى إرفاق ملفات المشروع للمساعدة في حل المشكلة.

حاولت جعل حجمه صغير حتى استطيع ارفاقه لا اعلم لماذا يتم توليد ملفات كبيره apk  في وقت العمل ولكن ملفات المشروع 100%100 في مكانها الصحيح 

ياليت تطلع عليه وتفيدني لو تكرمت

flutter_appt.rar

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...