我正在尝试添加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购买应用程序,但我无法弄清楚如何使用这些教程。
答案 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
在我的帖子之后,这不会从当前页面中删除广告(因为它仅在加载控件时被删除)。但广告将从所有其他网页中删除。