tapsellorg / TapsellPlusSDK-FlutterPlugin

Other
6 stars 2 forks source link

🐛  باگ: java.lang.IllegalStateException: Reply already submitted (native ads) #27

Closed develowper closed 3 months ago

develowper commented 4 months ago
**شرح باگ در پلاگین**: i see this bug was fixed for standard ads. but app crashes for native ads **متن کامل خطا یا لاگ مرتبط به طور کامل**: java.lang.IllegalStateException: Reply already submitted at h2.c$g.a(SourceFile:36) at p2.l$a$a.success(SourceFile:15) at ir.tapsell.plus.flutter.TapsellMethodCallHandler.notifyRequestResponse(SourceFile:12) at ir.tapsell.plus.flutter.TapsellMethodCallHandler.access$600(SourceFile:1) at ir.tapsell.plus.flutter.TapsellMethodCallHandler$5.response(Unknown Source:21) at g3.p.b0(SourceFile:25) at g3.p.c(SourceFile:1) at g3.j.run(SourceFile:5) at android.os.Handler.handleCallback(Handler.java:958) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:224) at android.os.Looper.loop(Looper.java:318) at android.app.ActivityThread.main(ActivityThread.java:8727) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:561) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013) **نحوه‌ی تولید مجدد آن توسط تیم توسعه**: just open a page that has native ads **پکیج نیم برنامه‌**: `` tapsell_plus: ^2.2.4 **اطلاعات اضافی که به حل مشکل کمک می‌کنند**:
MortezaNedaei commented 4 months ago

لطفا اطلاعات بیشتری در خصوص این مشکل بفرستید که بتونیم مشکل رو سمت خودمون reproduce کنیم. در حالت خاصی این اتفاق میوفته؟ مثلا بدون اینترنت یا حالت خاص دیگه ای داره؟

develowper commented 4 months ago

خیر حالت خاصی نیست .ساده ترین حالت ممکن. مانند مثال های داخل راهنما. از کتابخانه google_mobile_ads هم همزمان استفاده میکنم . (شاید باهم تداخل داشته باشند مثلا اگر از فایر بیس استفاده شده باشه البته دقیق نمیدونم در حد سرچ هایی که زدم شاید کمک کنه)

MortezaNedaei commented 4 months ago

لطفا یک پروژه نمونه یا apk بفرستید که این مشکل داخلش وجود داشته باشه که بتونیم تست کنیم. داخل تست هایی که روی سمپل تپسل قرار دادیم، این اتفاق نمیوفته

develowper commented 4 months ago

https://play.google.com/store/apps/details?id=com.varta.magnetgram&hl=fa

این اپ هستش الان روی تپسل گذاشتم میتونید تست کنید. همون صفحه اول بعد لاگین ردیف دوم باید نشون بده که چون لود نمیشه یه عکس رندوم گذاشتم.

develowper commented 4 months ago

سلام . مشکل من تفاوت بین onOpened و onLoaded در تابع TapsellPlus.instance.showNativeAd بود. ظاهرن onOpened مربوط به تبلیغات تپسل و onLoaded مربوط به ادموب هستش. من onOpened رو پر نکرده بودم.

TapsellPlus.instance.showNativeAd(
          responseId,
          admobFactoryId: 'adFactoryExample',
          onOpened: (nativeAd) {
            print("****tapsellonOpened********${nativeAd.runtimeType}");

            if (nativeAd is GeneralNativeAdPayload) {
              setState(() {
                nativeAdWidgetTapsell = TapsellNativeAdWidget(
                    responseId: nativeAd.ad.responseId ?? '',
                    title: nativeAd.ad.title ?? '',
                    description: nativeAd.ad.description ?? '',
                    callToAction: nativeAd.ad.callToActionText ?? '',
                    iconUrl: nativeAd.ad.iconUrl ?? '',
                    portraitImageUrl: nativeAd.ad.portraitImageUrl ?? '',
                    landScapeImageUrl: nativeAd.ad.landscapeImageUrl ?? '',
                    onClick: () => Get.back());
              });
            }
          },
          onLoaded: (nativeAd) {
            print("******tapsell loaded   ${nativeAd.toString()}");

            setState(() {
              if (nativeAd is GeneralNativeAdPayload) {
                nativeAdWidgetTapsell = TapsellNativeAdWidget(
                    responseId: nativeAd.ad.responseId ?? '',
                    title: nativeAd.ad.title ?? '',
                    description: nativeAd.ad.description ?? '',
                    callToAction: nativeAd.ad.callToActionText ?? '',
                    iconUrl: nativeAd.ad.iconUrl ?? '',
                    portraitImageUrl: nativeAd.ad.portraitImageUrl ?? '',
                    landScapeImageUrl: nativeAd.ad.landscapeImageUrl ?? '',
                    onClick: () => Get.back());
              } else if (nativeAd is AdMobNativeAdPayload) {
              } else if (nativeAd is AdMobNativeAdViewPayload) {
                nativeAdWidgetTapsell = AdWidget(ad: nativeAd.nativeAdView!);
              }
            });
          },
          onError: (map) {
            print('******tapsell Ad error - Error: $map');
          },
        )

اگه میشه تفاوت onOpened و onLoaded رو داخل داکیومنت ها هم بزارید و یک توضیحی بدید ممنون میشم. تیکت رو با اجازتون میبندم

develowper commented 4 months ago

TapsellPlus.instance .requestNativeAd()

این تابع اگر دوبار پشت سر هم اجرا بشه مثلن اگه دوتا تبلیغ همسان داخل صفحه باشه این ارور رو میده java.lang.IllegalStateException: Reply already submitted

MortezaNedaei commented 4 months ago

در حالتیکه دو تا ریکوئست همزمان با یک zoneId بزنید، ممکنه این اتفاق بیوفته. شما با دو تا zoneId مختلف درخواست بزنید و ببینید همین اتفاق میوفته؟

develowper commented 4 months ago

تعداد ریکوئست ها داینامیکه یا ممکنه کاربر صفحه رو چند بار ببنده و باز کنه و همون zoneid چند بار درخواست داده بشه. اگه توی این شرایط باشه داخل پنل تپسل چند تا zoneid بسازم هم ممکنه کرش کنه

مشکل اصلی اینه که بعد کرش اپلیکیشن رو میبنده وگرنه اگه همین پیام تو قسمت ارور بیاد میشه هندلش کرد

MortezaNedaei commented 4 months ago

در نسخه بعدی، یک کالبک جداگانه مشابه بنر استاندارد داده میشه که این مشکل کرش رو حل میکنه. فقط در نظر داشته باشید که خود کتابخانه، ریکوئست های همزمان با یک zoneId رو محدود میکنه

MortezaNedaei commented 3 months ago

مشکل کرش در نسخه 2.2.7 حل شد. latest