如何使用iap windows phone 8删除广告?

时间:2014-03-23 22:47:36

标签: c# windows-phone-8 in-app-purchase

我正在尝试添加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购买应用程序,但我无法弄清楚如何使用这些教程。

1 个答案:

答案 0 :(得分:3)

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

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

在我的帖子之后,这不会从当前页面中删除广告(因为它仅在加载控件时被删除)。但广告将从所有其他网页中删除。