在 Flutter 中实现 Firebase 原生广告
Implementing Firebase Native Ads in Flutter
我想使用 firebase_admob
和 Native 广告通过我的 Flutter 应用获利。在 firebase_admob
的 pub.dev 页面中,他们只显示了 Java 的步骤,但我的 MainActivity 页面是在 Kotlin 中。我对科特林一无所知。如何实现从 MainActivity.java 到 MainActivity.kt 的相同内容?
Java代码:
package my.app.path;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.firebaseadmob.FirebaseAdMobPlugin;
public class MainActivity extends FlutterActivity {
@Override
public void configureFlutterEngine(FlutterEngine flutterEngine) {
flutterEngine.getPlugins().add(new FirebaseAdMobPlugin());
FirebaseAdMobPlugin.registerNativeAdFactory(flutterEngine, "adFactoryExample", NativeAdFactoryExample());
}
@Override
public void cleanUpFlutterEngine(FlutterEngine flutterEngine) {
FirebaseAdMobPlugin.unregisterNativeAdFactory(flutterEngine, "adFactoryExample");
}
}
给你伙计
注意:java-kotlin 转换器转换得很好,但你必须在 中再添加一件事"customOptions", "?" 标志以防止在我已经添加的原生广告加载到屏幕上时出现恐慌攻击,因此您可以复制粘贴。
MainActivity.kt
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin
import io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin.NativeAdFactory
class MainActivity : FlutterActivity() {
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
val factory: NativeAdFactory = NativeAdFactoryExample(layoutInflater)
GoogleMobileAdsPlugin.registerNativeAdFactory(flutterEngine, "adFactoryExample", factory)
}
override fun cleanUpFlutterEngine(flutterEngine: FlutterEngine) {
GoogleMobileAdsPlugin.unregisterNativeAdFactory(flutterEngine, "adFactoryExample")
}
}
NativeAdFactoryExample.kt
import android.graphics.Color
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.widget.TextView
import com.google.android.gms.ads.formats.UnifiedNativeAd
import com.google.android.gms.ads.formats.UnifiedNativeAdView
import io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin.NativeAdFactory
internal class NativeAdFactoryExample(private val layoutInflater: LayoutInflater) : NativeAdFactory {
override fun createNativeAd(
nativeAd: UnifiedNativeAd, customOptions: Map<String, Any>?): UnifiedNativeAdView {
val adView = layoutInflater.inflate(R.layout.my_native_ad, null) as UnifiedNativeAdView
val headlineView = adView.findViewById<TextView>(R.id.ad_headline)
val bodyView = adView.findViewById<TextView>(R.id.ad_body)
headlineView.text = nativeAd.headline
bodyView.text = nativeAd.body
adView.setBackgroundColor(Color.YELLOW)
adView.setNativeAd(nativeAd)
adView.bodyView = bodyView
adView.headlineView = headlineView
return adView
}
}
我想使用 firebase_admob
和 Native 广告通过我的 Flutter 应用获利。在 firebase_admob
的 pub.dev 页面中,他们只显示了 Java 的步骤,但我的 MainActivity 页面是在 Kotlin 中。我对科特林一无所知。如何实现从 MainActivity.java 到 MainActivity.kt 的相同内容?
Java代码:
package my.app.path;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.firebaseadmob.FirebaseAdMobPlugin;
public class MainActivity extends FlutterActivity {
@Override
public void configureFlutterEngine(FlutterEngine flutterEngine) {
flutterEngine.getPlugins().add(new FirebaseAdMobPlugin());
FirebaseAdMobPlugin.registerNativeAdFactory(flutterEngine, "adFactoryExample", NativeAdFactoryExample());
}
@Override
public void cleanUpFlutterEngine(FlutterEngine flutterEngine) {
FirebaseAdMobPlugin.unregisterNativeAdFactory(flutterEngine, "adFactoryExample");
}
}
给你伙计
注意:java-kotlin 转换器转换得很好,但你必须在 中再添加一件事"customOptions", "?" 标志以防止在我已经添加的原生广告加载到屏幕上时出现恐慌攻击,因此您可以复制粘贴。
MainActivity.kt
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin
import io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin.NativeAdFactory
class MainActivity : FlutterActivity() {
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
val factory: NativeAdFactory = NativeAdFactoryExample(layoutInflater)
GoogleMobileAdsPlugin.registerNativeAdFactory(flutterEngine, "adFactoryExample", factory)
}
override fun cleanUpFlutterEngine(flutterEngine: FlutterEngine) {
GoogleMobileAdsPlugin.unregisterNativeAdFactory(flutterEngine, "adFactoryExample")
}
}
NativeAdFactoryExample.kt
import android.graphics.Color
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.widget.TextView
import com.google.android.gms.ads.formats.UnifiedNativeAd
import com.google.android.gms.ads.formats.UnifiedNativeAdView
import io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin.NativeAdFactory
internal class NativeAdFactoryExample(private val layoutInflater: LayoutInflater) : NativeAdFactory {
override fun createNativeAd(
nativeAd: UnifiedNativeAd, customOptions: Map<String, Any>?): UnifiedNativeAdView {
val adView = layoutInflater.inflate(R.layout.my_native_ad, null) as UnifiedNativeAdView
val headlineView = adView.findViewById<TextView>(R.id.ad_headline)
val bodyView = adView.findViewById<TextView>(R.id.ad_body)
headlineView.text = nativeAd.headline
bodyView.text = nativeAd.body
adView.setBackgroundColor(Color.YELLOW)
adView.setNativeAd(nativeAd)
adView.bodyView = bodyView
adView.headlineView = headlineView
return adView
}
}