跳到主要内容

广告

在您的应用中展示广告。仅适用于移动(Android 和 iOS)平台。

打包

要构建使用广告控件的 Flet 应用,在 flet build 命令中添加 --include-packages flet_ads,例如:

flet build apk --include-packages flet_ads

示例

import flet as ft
import flet.ads as ads


def main(page: ft.Page):
page.horizontal_alignment = ft.CrossAxisAlignment.CENTER

id_interstitial = (
"ca-app-pub-3940256099942544/1033173712"
if page.platform == ft.PagePlatform.ANDROID
else "ca-app-pub-3940256099942544/4411468910"
)

id_banner = (
"ca-app-pub-3940256099942544/6300978111"
if page.platform == ft.PagePlatform.ANDROID
else "ca-app-pub-3940256099942544/2934735716"
)

def handle_interstitial_close(e):
nonlocal iad
print(" interstitial 广告已关闭")
page.overlay.remove(e.control)
page.overlay.append(iad := get_new_interstitial_ad())
page.update()

def get_new_interstitial_ad():
return ads.InterstitialAd(
unit_id=id_interstitial,
on_load=lambda e: print(" interstitial 广告已加载"),
on_error=lambda e: print(" interstitial 广告错误", e.data),
on_open=lambda e: print(" interstitial 广告已打开"),
on_close=handle_interstitial_close,
on_impression=lambda e: print(" interstitial 广告产生印象"),
on_click=lambda e: print(" interstitial 广告被点击"),
)

def display_new_banner_ad():
page.add(
ft.Container(
content=ads.BannerAd(
unit_id=id_banner,
on_click=lambda e: print("横幅广告被点击"),
on_load=lambda e: print("横幅广告已加载"),
on_error=lambda e: print("横幅广告错误", e.data),
on_open=lambda e: print("横幅广告已打开"),
on_close=lambda e: print("横幅广告已关闭"),
on_impression=lambda e: print("横幅广告产生印象"),
on_will_dismiss=lambda e: print("横幅广告将关闭"),
),
width=320,
height=50,
bgcolor=ft.Colors.TRANSPARENT,
)
)

page.overlay.append(iad := get_new_interstitial_ad())
page.appbar = ft.AppBar(
adaptive=True,
title=ft.Text("移动广告测试场"),
bgcolor=ft.Colors.LIGHT_BLUE_300,
)
page.add(
ft.OutlinedButton("展示 interstitial 广告", on_click=lambda e: iad.show()),
ft.OutlinedButton("展示横幅广告", on_click=lambda e: display_new_banner_ad()),
)


ft.app(main)

类型

以下类型可用:

测试值

AdMob 提供 应用和广告单元 ID 用于测试目的。

  • AdMob 应用 ID:"ca-app-pub-3940256099942544~3347511713"
  • BannerAd.unit_id 在 Android 上:"ca-app-pub-3940256099942544/9214589741"
  • BannerAd.unit_id 在 iOS 上:"ca-app-pub-3940256099942544/2435281174"
  • InterstitialAd.unit_id 在 Android 上:"ca-app-pub-3940256099942544/1033173712"
  • InterstitialAd.unit_id 在 iOS 上:"ca-app-pub-3940256099942544/4411468910"

准备好打包应用时,请将这些值替换为您自己的值。

打包

在打包使用上述广告控件之一的应用时,需要执行以下操作。

包含广告包

flet build 命令中添加 --include-packages flet_ads,例如:

flet build apk --include-packages flet_ads

指定 AdMob 应用 ID

指定您的AdMob 应用 ID,否则您的应用可能在启动时崩溃。

您可以通过两种方式指定应用 ID:

  • 在您的 pyproject.toml 文件中:
# 对于 Android
[tool.flet.android.meta_data]
"com.google.android.gms.ads.APPLICATION_ID" = "ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"

# 对于 iOS
[tool.flet.ios.info]
GADApplicationIdentifier = "ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"
  • 在终端的构建命令中:
# 对于 Android
flet build apk... --android-meta-data com.google.android.gms.ads.APPLICATION_ID=ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy

# 对于 iOS
flet build ipa... --info-plist GADApplicationIdentifier=ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy