【问题标题】:MAUI Blazor Hybrid AdmobMAUI Blazor 混合 Admob
【发布时间】:2023-01-09 02:57:03
【问题描述】:

我有一个 MAUI Blazor Hybrid 移动应用程序,我想添加 Admob 广告。 我在 XAML 中找到了这样做的方法:https://www.mauiexpert.it/admob-for-maui-made-easy/

我想将此类功能包装到 Blazor 组件中所以它很容易在我的 Blazor 页面上重复使用。

是的,理论上我可以使用 Google AdSense,但根据我的阅读,AdMob 提供比 AdSense 更好的 PPC。

有没有办法实现这一目标?

【问题讨论】:

标签: c# admob maui blazor-hybrid


【解决方案1】:

经过一番研究,我得出了这个结论。

Google 允许仅针对一个特定用例在 WebView 中显示广告,当您有一个包含 Adsense 广告的网站并且您只想在 WebView 控件中的应用程序中显示该网站时。

来源:https://developers.google.com/ad-manager/mobile-ads-sdk/android/webview

对于该特定情况,您将注册您的 webview。 安装 Nuget 包: Xamarin.GooglePlayServices.Ads.LiteMainPage.xaml.cs 里面放:

#if ANDROID
using Android.Gms.Ads;
#endif

using Microsoft.AspNetCore.Components.WebView;
using Microsoft.AspNetCore.Components.WebView.Maui;

namespace SatisFIT.Client.App;

public partial class MainPage : ContentPage {
    public MainPage() {
        InitializeComponent();

        blazorWebView.BlazorWebViewInitialized += BlazorWebViewOnBlazorWebViewInitialized;
    }

    private void BlazorWebViewOnBlazorWebViewInitialized(object? sender, BlazorWebViewInitializedEventArgs e) {
#if ANDROID
        MobileAds.RegisterWebView(e.WebView);
#endif
    }

之后你把谷歌文档中提到的meta-data标签放到AndroidManifest.xml<application>标签,比如:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true">
    <!-- Bypass APPLICATION_ID check for WebView API for Ads -->
    <meta-data
        android:name="com.google.android.gms.ads.INTEGRATION_MANAGER"
        android:value="webview"/>
</application>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

</manifest>

但正如我已经提到的,我们不能仅将它用于嵌入 adsense 广告的 HTML 并将其包装到简单的组件中。

有潜在的解决方法。但如果谷歌发现,他们可能会禁用您的广告帐户。解决方法是创建您的自定义 WebView 控件,然后在方法 BlazorWebViewOnBlazorWebViewInitialized 中使用 e.WebView.SetWebViewClient(new CustomWebViewClient()); 注册该控件并在那里实现请求拦截。因此,当 adsense JS 想要调用 https://googleads.g.doubleclick.net 时,您会拦截此请求,然后在其内部获取参数,您将本地 url: 0.0.0.0 替换为您网站的 url,您在哪里允许 adsense 并且理论上您会收到响应广告。

可能没有其他方法可以在 Blazor Hybrid 中将广告包装到 Blazor 组件中,因为您无法将 XAML 嵌入到 Blazor 中,这就是为什么在 MAUI Blazor 应用程序中显示谷歌广告的唯一方法是使用 admob 库:Plugin.MauiMTAdmob

有了这个,我们可以创建 XAML 广告,我们可以将它放在我们的 BlazorWebView 组件上,这样它就会与它的一部分重叠。

【讨论】:

    猜你喜欢
    • 2023-01-30
    • 2022-06-17
    • 2022-06-16
    • 2022-11-08
    • 2022-06-20
    • 2022-10-02
    • 2022-11-13
    • 2022-09-27
    • 2022-12-23
    相关资源
    最近更新 更多