I am facing this error on flutter native ads (android):

PlatformException(NativeAdError, Can't find NativeAdFactory with id: homeScreen, null, null)

google_mobile_ads: ^0.13.0 

this is my HomeScreenNativeAd.kt file

class HomeScreenNativeAd(val context: Context) : GoogleMobileAdsPlugin.NativeAdFactory{     override fun createNativeAd(             nativeAd: NativeAd,             customOptions: MutableMap<String, Any>?     ): NativeAdView {         val homeScreenNativeView = LayoutInflater.from(context)                 .inflate(R.layout.home_screen_native_ad, null) as NativeAdView         with(homeScreenNativeView) {             val attributionViewSmall =                     findViewById<TextView>(R.id.tv_home_item_native_ad_attribution_small)             val icon = findViewById<ImageView>(R.id.home_item_bg_image)             val image = nativeAd.icon             if (image != null) {                 attributionViewSmall.visibility = View.VISIBLE                 icon.setImageDrawable(image.drawable)             } else {                 attributionViewSmall.visibility = View.INVISIBLE             }             this.iconView = iconView             val adV =   findViewById<TextView>(R.id.adviser)             adV.text = nativeAd.advertiser             this.advertiserView =adV             val ctaButton =   findViewById<TextView>(R.id.home_screen_cta_button)             ctaButton.text = nativeAd.callToAction             this.callToActionView = ctaButton             val adDesc =   findViewById<TextView>(R.id.home_item_ad_desc)             adDesc.text = nativeAd.body             this.bodyView = ctaButton             val headlineView = findViewById<TextView>(R.id.home_item_ad_title)             headlineView.text = nativeAd.headline             this.headlineView = headlineView             setNativeAd(nativeAd)         }         return homeScreenNativeView     } } 

home_screen_native_ad.xml file

`

<com.google.android.gms.ads.nativead.NativeAdView     xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent">     <FrameLayout         android:layout_width="match_parent"         android:layout_height="match_parent">         <RelativeLayout             android:orientation="vertical"             android:layout_width="wrap_content"             android:layout_height="160dp">             <FrameLayout                 android:layout_width="match_parent"                 android:background="#00ffffff"                 android:layout_height="140dp"/>             <RelativeLayout                 android:layout_width="match_parent"                 android:layout_height="190dp"                 android:layout_marginTop="16dp"                 android:layout_marginEnd="16dp"                 android:layout_marginBottom="16dp"                 android:gravity="start"                 android:orientation="horizontal">                 <ImageView                     android:id="@+id/home_item_bg_image"                     android:layout_width="60dp"                     android:layout_height="60dp"                     android:scaleType="centerCrop"                     android:layout_marginLeft="16dp"                     />                 <TextView                     android:id="@+id/home_item_ad_title"                     android:layout_width="220dp"                     android:layout_height="wrap_content"                     android:layout_marginLeft="10dp"                     android:layout_toRightOf="@+id/home_item_bg_image"                     android:ellipsize="end"                     android:lines="1"                     android:maxLines="1"                     android:textColor="#FFFFFFFF"                     android:textSize="20sp"                     tools:text="Headline" />                 <TextView                     android:id="@+id/adviser"                     android:layout_width="229dp"                     android:layout_height="wrap_content"                     android:layout_marginLeft="10dp"                     android:layout_marginTop="32dp"                     android:layout_toRightOf="@+id/home_item_bg_image"                     android:ellipsize="end"                     android:lines="1"                     android:maxLines="1"                     android:textColor="#FFFFFFFF"                     android:textSize="14sp"                     tools:text="Advertiser" />                 <TextView                     android:id="@+id/tv_home_item_native_ad_attribution_small"                     android:layout_width="35dp"                     android:layout_height="20dp"                     android:layout_marginLeft="10dp"                     android:layout_toRightOf="@+id/home_item_ad_title"                     android:background="@color/softOrange"                     android:gravity="center"                     android:lines="1"                     android:maxLines="1"                     android:text="Ad"                     android:textColor="#FFFF"                     android:textSize="12sp" />             </RelativeLayout>             <TextView                 android:id="@+id/home_item_ad_desc"                 android:layout_width="270dp"                 android:layout_height="40dp"                 android:layout_marginTop="85dp"                 android:ellipsize="end"                 android:lines="2"                 android:gravity="center_vertical"                 android:maxLines="2"                 android:textColor="#FFFFFFFF"                 android:textSize="14sp"                 android:layout_marginLeft="16dp"                 tools:text="Headline" />             <TextView                 android:id="@+id/home_screen_cta_button"                 android:layout_width="wrap_content"                 android:layout_marginLeft="10dp"                 android:layout_height="30dp"                 android:layout_toRightOf="@+id/home_item_ad_desc"                 android:layout_marginTop="100dp"                 android:text="INSTALL"                 android:gravity="center"                 android:ellipsize="end"                 android:lines="1"                 android:textColor="#FFF"                 android:maxLines="1"                 android:textSize="18sp"                 />         </RelativeLayout>     </FrameLayout> </com.google.android.gms.ads.nativead.NativeAdView>` 

MainActivity.kt

`class MainActivity : FlutterActivity(){     private val CHANNEL = "verified.cv/channel" //The channel name you set in your main.dart file     override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {         super.configureFlutterEngine(flutterEngine)         MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler {             // Note: this method is invoked on the main thread.             call, result ->             if (call.method == "createNotificationChannel") {                 val argData = call.arguments as java.util.HashMap<String, String>                 val completed = createNotificationChannel(argData)                 if (completed == true) {                     result.success(completed)                 } else {                     result.error("Error Code", "Error Message", null)                 }             } else {                 result.notImplemented()             }         }         GoogleMobileAdsPlugin.registerNativeAdFactory(                 flutterEngine, "listTile", ListTileNativeAdFactory(context))         GoogleMobileAdsPlugin.registerNativeAdFactory(                 flutterEngine, "skillCard", SkillCardNativeFactory(context))         GoogleMobileAdsPlugin.registerNativeAdFactory(                 flutterEngine, "homeScreen", HomeScreenNativeAd(context))         GoogleMobileAdsPlugin.registerNativeAdFactory(                 flutterEngine, "feedItem", FeedItemNativeFactory(context))     }     override fun cleanUpFlutterEngine(flutterEngine: FlutterEngine) {         super.cleanUpFlutterEngine(flutterEngine)         // TODO: Unregister the ListTileNativeAdFactory         GoogleMobileAdsPlugin.unregisterNativeAdFactory(flutterEngine, "listTile")         GoogleMobileAdsPlugin.unregisterNativeAdFactory(flutterEngine, "skillCard")         GoogleMobileAdsPlugin.unregisterNativeAdFactory(flutterEngine, "homeScreen")         GoogleMobileAdsPlugin.unregisterNativeAdFactory(flutterEngine, "feedItem")     }     private fun createNotificationChannel(mapData: HashMap<String, String>): Boolean {         val completed: Boolean         if (VERSION.SDK_INT >= VERSION_CODES.O) {             // Create the NotificationChannel             val id = mapData["id"]             val name = mapData["name"]             val descriptionText = mapData["description"]             // val sound = "your_sweet_sound"             val importance = NotificationManager.IMPORTANCE_HIGH             val mChannel = NotificationChannel(id, name, importance)             mChannel.description = descriptionText             // val soundUri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getApplicationContext().getPackageName() + "/raw/your_sweet_sound");             // val att = AudioAttributes.Builder()             //         .setUsage(AudioAttributes.USAGE_NOTIFICATION)             //         .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)             //         .build();             //mChannel.setSound(soundUri, att)             // Register the channel with the system; you can't change the importance             // or other notification behaviors after this             val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager             notificationManager.createNotificationChannel(mChannel)             completed = true         } else {             completed = false         }         return completed     } } ` 
 I/flutter ( 1409): ----------------FIREBASE CRASHLYTICS---------------- I/flutter ( 1409): PlatformException(NativeAdError, Can't find NativeAdFactory with id: homeScreen, null, null) I/flutter ( 1409): #0      StandardMethodCodec.decodeEnvelope package:flutter/…/services/message_codecs.dart:607 I/flutter ( 1409): #1      MethodChannel._invokeMethod package:flutter/…/services/platform_channel.dart:177 I/flutter ( 1409): <asynchronous suspension> I/flutter ( 1409): #2      NativeAd.load package:google_mobile_ads/src/ad_containers.dart:1033 I/flutter ( 1409): <asynchronous suspension> I/flutter ( 1409): ---------------------------------------------------- D/ACodec  ( 1409): dataspace changed to 0x10c40000 (R:2(Limited), P:4(BT601_6_525), M:3(BT601_6), T:3(SMPTE170M)) (

Tag:google-ads-api, android, flutter

Add a new comment.