Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin Xamain表单网格中的AdMob SmartBanner未显示自动高度_Xamarin_Xamarin.forms_Xamarin.android_Admob - Fatal编程技术网

Xamarin Xamain表单网格中的AdMob SmartBanner未显示自动高度

Xamarin Xamain表单网格中的AdMob SmartBanner未显示自动高度,xamarin,xamarin.forms,xamarin.android,admob,Xamarin,Xamarin.forms,Xamarin.android,Admob,我创建了一个Hello World Xamarin表单应用程序,并在教程之后添加了添加AdMob智能横幅广告的代码。在我收到AdMob的一封邮件说“限制广告服务”之前,这一切都很正常。所以我拿出我的旧代码,在模拟器中运行了一下,广告根本没有出现,甚至没有显示空白(尽管我仍然可以在应用商店版本中看到空白) 所以我按照同样的教程创建了一个空白的“Hello World”应用程序。广告根本没有出现。我核实了一切 XAML- <Grid> <Grid.RowDefinition

我创建了一个Hello World Xamarin表单应用程序,并在教程之后添加了添加AdMob智能横幅广告的代码。在我收到AdMob的一封邮件说“限制广告服务”之前,这一切都很正常。所以我拿出我的旧代码,在模拟器中运行了一下,广告根本没有出现,甚至没有显示空白(尽管我仍然可以在应用商店版本中看到空白)

所以我按照同样的教程创建了一个空白的“Hello World”应用程序。广告根本没有出现。我核实了一切

XAML-

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <!-- Place new controls here -->
    <Label Text="Welcome to Xamarin.Forms!" 
       HorizontalOptions="Center"
       VerticalOptions="CenterAndExpand" />
    <ctrl:GoogleAdView Grid.Row="1"/>
</Grid>

然后出于好奇,我给广告行指定了一些随机高度,瞧,广告出现了

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="50"/>
    </Grid.RowDefinitions>
    <!-- Place new controls here -->
    <Label Text="Welcome to Xamarin.Forms!" 
       HorizontalOptions="Center"
       VerticalOptions="CenterAndExpand" />
    <ctrl:GoogleAdView Grid.Row="1"/>
</Grid>

以下是我的项目(Android)的详细信息-


我们在Xamarin表单中使用AdMob的方式是否有所改变?

我一直必须在smart banner控件上设置高度。我的布局有点不同,因为我的广告控件位于
ViewCell
中,但是对于
RowDefinition.height
,高度逻辑应该类似。尝试以下方法(我使用Xamarin.Essentials插件访问
DeviceDisplay.MainDisplayInfo
,但还有其他方法可以获取这些值)

public static int GetSmartBannerHeight(){
DisplayInfo metrics=DeviceDisplay.MainDisplayInfo;
双倍高度dp=公制高度/公制密度;

如果HealdDP

所接受的答案是非常好的。当没有Internet连接时,问题就出现了。您需要留下一个空白。要解决这个问题,请考虑使用称为“强> XAM.Puxin”的插件。t以帮助您在没有互联网连接时将高度设置为零,或者在设备已连接时将高度设置为适当的高度。还请注意,您需要启用以下两个android权限:访问网络状态访问WIFI状态。您可以在以下位置启用它们:右键单击android项目>属性>android Manifest>所需权限。示例:

public MyPage()
{
    InitializeComponent();

    if(CrossConnectivity.Current.IsConnected)
    {
        AdContainer.HeightRequest = //Set appropriate height;
    }
    CrossConnectivity.Current.ConnectivityChanged += ConnectionHasChanged;
}


private void ConnectionHasChanged(object sender, ConnectivityChangedEventArgs e)
{
    if (e.IsConnected)
    {
        AdContainer.HeightRequest = //Set appropriate height;
    }
    else
    {
        AdContainer.HeightRequest = 0;
    }
}



我同意你的方法。但是,我仍然不相信我们需要指定横幅的高度。因为internet上的每个示例都为SmartBanner设置了
Auto
。我会再等一段时间,如果没有效果,我会将此标记为答案。@GauravMathur是的,我希望有人有更好的解决方案。最后,我摆脱了
Auto
,似乎是唯一的解决方案。谢谢。在该教程中,作者还说您可能需要设置HeightRequest=“90”让它显示出来。我发现了几个类似的问题,然后引发了一个问题。麻烦的是,它对我所有高度
Auto
的应用程序都正常工作。但是,现在我一在本地运行它,它就停止显示。那些应用程序使用与本地应用程序版本相同的软件包吗?是的,在我在app Store上发布它们之后修改了代码。最近我再次打开了它们,只是将android版本更改为最新的pie,其他所有内容都完全相同。这听起来很奇怪,不知道发生了什么,可能在发布或调试时有所不同。这是可行的,但你也可以使用广告控件本身的错误回调来确定何时将高度设置为0。这将涵盖连接问题和其他问题,如AdMob填充率问题。建议为横幅广告分配固定空间。如果您更改容器高度,用户可能会意外单击广告而不是实际的应用程序内容。@Márcio Souza Júnior您是对的。但是,这取决于应用程序。如果内容有足够的间隙,则嗯,应该没有问题。
public MyPage()
{
    InitializeComponent();

    if(CrossConnectivity.Current.IsConnected)
    {
        AdContainer.HeightRequest = //Set appropriate height;
    }
    CrossConnectivity.Current.ConnectivityChanged += ConnectionHasChanged;
}


private void ConnectionHasChanged(object sender, ConnectivityChangedEventArgs e)
{
    if (e.IsConnected)
    {
        AdContainer.HeightRequest = //Set appropriate height;
    }
    else
    {
        AdContainer.HeightRequest = 0;
    }
}