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

مشكلة مع اعلانات ادموب listeners not called

Flutter Dev

السؤال

السلام عليكم ورحمة الله وبركاته 

تحيه طيبه للجميع

قمت بعمل كلاس منفصل ووضعت فيه اعلانات ادموب من نوع RewardedVideoAd وهو كالتالي:

import 'package:firebase_admob/firebase_admob.dart';

import 'helper.dart';





class AdsReward {
  static bool _loaded = false;
  static int  _coins=0;

  static RewardedVideoAd videoAd = RewardedVideoAd.instance;

  static void initialize() {
    FirebaseAdMob.instance.initialize(appId: AdManager.appId);
  }

  static MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
    keywords: <String>['flutterio', 'beautiful apps'],
    testDevices: <String>[], // Android emulators are considered test devices
  );

  static RewardedVideoAd createRewardedVideoAd() {

     videoAd.load(adUnitId: AdManager.rewardedAdUnitId, targetingInfo: targetingInfo);
    // videoAd.load(adUnitId:RewardedVideoAd.testAdUnitId, targetingInfo: targetingInfo);
     RewardedVideoAd.instance.listener = (RewardedVideoAdEvent event, {String rewardType, int rewardAmount}) {
       if(event == RewardedVideoAdEvent.rewarded) {
         _coins+=rewardAmount;
         print('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx$_coins');

       }
     };

  }

  static void showRewardedVideoAd() {
    if (videoAd == null) videoAd = createRewardedVideoAd();

    videoAd .show().catchError((e) =>
        print("error in showing ad: ${e.toString()}"));

  }


}

اقوم بستدعاء الكلاس من صفحه مختلفه من خلال 

      AdsReward.showRewardedVideoAd();

الاعلان شغال ولكن المتفرض بعد انتهاء الاعلان احصل على قيمة _coins او بالاصح هيا تحصل على قيمة

ولكن الان لا يحدث هذا الامر قمت بمحاولة قراءة ذلك من خلال امر الطباعة ولكن لا يحدث شي ابد

هل يعلم احد ما هو الخطاء في الكود الذي عملته ؟

لماذا لا يحدث حدث listeners not called

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

Recommended Posts

  • 0

هناك عدة طرق مستخدمة.

  • ممكن تحفظ القيمة عن طريق SharedPrefrence وتجلب قيمة المفتاح. 
  • يمكن عن طريق LocalStorage و أيضا يمكن جلب القيمة من المفتاح المخزن.
  • أو عن طريق تنفيذ Setter , Getter ويمكن عن طريق الكود التالي. 

يمكن تعريف getter 

int get coinsValue {
	return coins;
}

أو بشكل مختصر 

int get coinsValue => coins;

ويمكن أن يكون الكود الخاص بك هكذا 

import 'package:firebase_admob/firebase_admob.dart';

import 'helper.dart';



//const String testDevice = 'YOUR_DEVICE_ID';

class AdsRewardedVideoAd {
  static bool _loaded = false;
  static int coins = 0;
  int get coinsValue => coins;


  static RewardedVideoAd videoAd = RewardedVideoAd.instance;

  static void initialize() {
    FirebaseAdMob.instance.initialize(appId: AdManager.appId);
  }

  static MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
    keywords: <String>['flutterio', 'beautiful apps'],
    testDevices: <String>[], // Android emulators are considered test devices
  );

  static RewardedVideoAd createRewardedVideoAd() {

     videoAd.load(adUnitId: AdManager.rewardedAdUnitId, targetingInfo: targetingInfo);

     RewardedVideoAd.instance.listener = (RewardedVideoAdEvent event, {String rewardType, int rewardAmount}) {
       if(event == RewardedVideoAdEvent.rewarded) {

           coins+=rewardAmount;
           
           print('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx $coins');

       }
     };

  }

  static void showRewardedVideoAd() {
    if (videoAd == null) videoAd = createRewardedVideoAd();

    videoAd .show().catchError((e) =>
        print("error in showing ad: ${e.toString()}"));

  }


}

ويمكن جلبها عن طريق الكلاس

AdsRewardedVideoAd.coinsValue

بحيث getter  => coinsValue يأخذ قيمة coins عندما تتحدث في أي وقت.

لقد أجبتك امس هنا, هل قمت بتجربتها.

ارجوا إضافة ملفات المشروع هنا كاملاً للمساعدة في حل المشكلة.

 

 

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

  • 0
بتاريخ 7 ساعات قال بلال زيادة:

هناك عدة طرق مستخدمة.

  • ممكن تحفظ القيمة عن طريق SharedPrefrence وتجلب قيمة المفتاح. 
  • يمكن عن طريق LocalStorage و أيضا يمكن جلب القيمة من المفتاح المخزن.
  • أو عن طريق تنفيذ Setter , Getter ويمكن عن طريق الكود التالي. 

يمكن تعريف getter 


int get coinsValue {
	return coins;
}

أو بشكل مختصر 


int get coinsValue => coins;

ويمكن أن يكون الكود الخاص بك هكذا 


import 'package:firebase_admob/firebase_admob.dart';

import 'helper.dart';



//const String testDevice = 'YOUR_DEVICE_ID';

class AdsRewardedVideoAd {
  static bool _loaded = false;
  static int coins = 0;
  int get coinsValue => coins;


  static RewardedVideoAd videoAd = RewardedVideoAd.instance;

  static void initialize() {
    FirebaseAdMob.instance.initialize(appId: AdManager.appId);
  }

  static MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
    keywords: <String>['flutterio', 'beautiful apps'],
    testDevices: <String>[], // Android emulators are considered test devices
  );

  static RewardedVideoAd createRewardedVideoAd() {

     videoAd.load(adUnitId: AdManager.rewardedAdUnitId, targetingInfo: targetingInfo);

     RewardedVideoAd.instance.listener = (RewardedVideoAdEvent event, {String rewardType, int rewardAmount}) {
       if(event == RewardedVideoAdEvent.rewarded) {

           coins+=rewardAmount;
           
           print('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx $coins');

       }
     };

  }

  static void showRewardedVideoAd() {
    if (videoAd == null) videoAd = createRewardedVideoAd();

    videoAd .show().catchError((e) =>
        print("error in showing ad: ${e.toString()}"));

  }


}

ويمكن جلبها عن طريق الكلاس


AdsRewardedVideoAd.coinsValue

بحيث getter  => coinsValue يأخذ قيمة coins عندما تتحدث في أي وقت.

لقد أجبتك امس هنا, هل قمت بتجربتها.

ارجوا إضافة ملفات المشروع هنا كاملاً للمساعدة في حل المشكلة.

 

 

مرحبا اخي الكريم 

المشكله الان ان الكود لا يصل الى ميثود RewardedVideoAdEvent

لا يوجد لديها اي قيمة لنها لا تعمل هذا نوع المشكلة في الكود اعلاه 

حتى لو قمت بتجربة سوف تشاهد ان العمل لا يصال الى RewardedVideoAdEvent حتى نحصل على حدث

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

  • 0
بتاريخ 19 ساعات قال مروان مروان3:

مرحبا اخي الكريم 

المشكله الان ان الكود لا يصل الى ميثود RewardedVideoAdEvent

لا يوجد لديها اي قيمة لنها لا تعمل هذا نوع المشكلة في الكود اعلاه 

حتى لو قمت بتجربة سوف تشاهد ان العمل لا يصال الى RewardedVideoAdEvent حتى نحصل على حدث

مرحبا هل ممكن ترفق ملفات المشروع, أريد فحص المشروع لحل المشكلة.

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

  • 0
بتاريخ 5 ساعات قال بلال زيادة:

مرحبا هل ممكن ترفق ملفات المشروع, أريد فحص المشروع لحل المشكلة.

خلاص اخي الله يطول بعمرك انا فصلت هذه الصفحه ووضعت الاعلان كامل او كود الاعلان كامل في الصفحه المستهدفة كل الشكر لك الغالي

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...