如何使用iap Windows phone 8删除广告

本文关键字:删除 phone 何使用 iap Windows | 更新日期: 2023-09-27 17:51:24

我正在尝试添加IAP来删除应用中的广告,但我找不到关于如何做到这一点的清晰教程。我试了下几个:http://code.msdn.microsoft.com/wpapps/Free-App-With-Paid-Products-f138d4a8

但那只是没有任何解释的代码。

我也尝试并遵循了这一步的每一步:http://www.visuallylocated.com/post/2013/07/19/Remove-ads-with-an-in-app-purchase-across-your-entire-app.aspx

我的广告是在一个UserControl,因为我使用多个页面,只是调用UserControl下一个方式:<Grid Height="auto" VerticalAlignment="Bottom"> <local:Advertisement x:Name="advertisement" Width="480" Height="80" VerticalAlignment="Bottom" HorizontalAlignment="Center"/> </Grid>

和UserControl代码:'

<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
    <Ads:AdControl HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0" Height="70" PublisherID="XXXXX"/>
</Grid>

基本上我想做的是隐藏UserControl如果用户通过IAP购买应用程序,但我不知道如何做到这一点与这些教程。

如何使用iap Windows phone 8删除广告

如果你创建了自己的用户控件来包装广告,你可以订阅Loaded事件并检查全局的"AdsRemoved"属性。在加载的事件处理程序中,检查广告是否已被删除。如果有,请折叠控件。

public Advertisement()
{
    Loaded += OnLoaded;
}
private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
{
    if (App.AdsRemoved)
    {
        Visibility = Visibility.Collapsed;
    }
}

如果你的AdsRemoved属性缓存了这个值,你需要一种方法在购买时重置这个值。一个快速的方法是添加setter

private static bool? _adsRemoved;
private bool AdsRemoved
{
    get
    {
        if (_adsRemoved == null)
        {
            _adsRemoved =  CurrentApp.LicenseInformation.ProductLicenses["RemoveAdsProductID"].IsActive;
        }
        return _adsRemoved.Value;
    }
    set 
    { 
        _adsRemoved =  CurrentApp.LicenseInformation.ProductLicenses["RemoveAdsProductID"].IsActive;
    }
}

然后在进行购买时,用任意值调用setter。

App.AdsRemoved = true; // or false. Doesn't matter what the value is

跟随我的帖子,这将不会从当前页面删除广告(因为它只在控件加载时被删除)。但该广告将从所有其他页面上删除。