Wenn man unter UWP Universal Windows
Platform Apps eine Werbung einbinden möchte, dann benötigt man hierzu das
Nuget
Package: Microsoft.Services.Store SDK
The Microsoft Store Services SDK includes
advertising and engagement frameworks. After adding this NuGet to your
project, add a reference to the extensions you want, such as "Microsoft
Advertising SDK for XAML" or "Microsoft Engagement Framework"
(may require reopening project).
|
Im Projekt mit der rechten
Maustaste->NuGet Packages, dann Store eingeben und Microsoft Services
installieren
Anschliessend muss man unter Projekt->Verweise im Dialog:Verweis-Manger->Universal
Windows->Erweiterungen
ein Häckchen aktivieren bei: Microsoft
Advertising SDK for XAML (Targets UAP 10.0.10240.0)
Anschliessend kann man im XAML Code den
Namespace von Microsoft Advertising hinzufügen
xmlns:ad="using:Microsoft.Advertising.WinRT.UI"
|
Und einen
AdControl Block
<ad:AdControl ApplicationId="74380a21-df76-47ae-9d4c-057a19101233"
AdUnitId="123456789"
HorizontalAlignment="Left"
Height="250"
VerticalAlignment="Top"
Width="300"/>
|
Die ApplicationID bekommt man unter
Package.appxmanifest als Nummer im Feld: Packetname
Zum AdControl
Dabei ist das AdControl das eigentliche
UIElement, welches zur Anzeige von klassischen werbebannern dient.
Mit der Einstellung der AdUnitID kann
man eine Nummer eingeben, unter welcher man die Daten im Store Dev Center
auswerten und verfolgen kann.
AdControl class
Represents a control that displays banner ads in an app
AdUnitId
Read/write
Gets or sets the ad unit identifier for this AdControl
object. This value is available in Windows Dev Center.
|
Testwerte unter AdUnitID und ApplicationID
Während der Test- und Entwicklungsphase
soll man in der App Testwerte eintragen.
Zum Richtigen Betrieb im Appstore muss
man dann die Werte durch eigene Werte austauschen. Im echten Betrieb schreibt
man dann unter ApplicationID die App-PackageNummer und in der AdUnitID eine
eigene frei einstellbare Nummer oder Text.
Diese AdControl Testwerte findet man
unter:
https://docs.microsoft.com/en-us/windows/uwp/monetize/test-mode-values
im Abschnitt Bannerwerbung
(Test
Banner Windows 10) AdUnitID: test
(Test
Banner Windows 10) ApplicationID: 3f83fe91-d6be-434d-a0ae-7351c5a997f1
AdControl-Bannergrößen
Für die Bannergrößen muss man
vorgegebne Werte einstellen. Diese findet man unter
https://docs.microsoft.com/en-us/windows/uwp/monetize/supported-ad-sizes-for-banner-ads
Die Webseite gibt dabei eine grobe
Vorschau, wie diese aussehen könnten.
Für Windows 10 Apps gelten folgende
Bannerwerbungen als Vorgabegrößen:
Bannergrößen
UWP Windows 10
300x250 AdSizes
Windows 300x250
728x90 AdSizes Windows 728x90
160x600 AdSizes Windows 160x600
300x600 AdSizes
Windows 300x600
Für die Darstellung und als Beispiel
Code habe ich eine Beispiel App erstellt, welche alle Werbebanner darstellt und
ausführt
App: uwp_Advertiser
Folgender XAML Code zeigt die
Beispielanwendung mit allen vier Adcontrol Werbebannern von Microsoft
<Page
x:Class="uwp_Advertiser.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:uwp_Advertiser"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ad="using:Microsoft.Advertising.WinRT.UI"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="11*"/>
<RowDefinition Height="149*"/>
</Grid.RowDefinitions>
<TextBlock HorizontalAlignment="Left" Margin="56,10,0,0" TextWrapping="Wrap" Text="Microsoft AdControl"
VerticalAlignment="Top" Height="46" Width="187"/>
<ScrollViewer x:Name="scrollBanner" Grid.Row="1">
<Grid x:Name="gridBanner" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" MinWidth="150"/>
<ColumnDefinition Width="400"/>
<ColumnDefinition Width="400*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="250"/>
<RowDefinition Height="90"/>
<RowDefinition Height="600"/>
<RowDefinition Height="600*"/>
</Grid.RowDefinitions>
<Border x:Name="background_Row_0" Grid.Row="0" Grid.ColumnSpan="2" Background="#e0e0e0" BorderBrush="Black" BorderThickness="1"></Border>
<Border x:Name="background_Col_0" Grid.RowSpan="5" Grid.Column="0" Background="#e0e0e0" BorderBrush="Black" BorderThickness="1"></Border>
<TextBlock x:Name="lblHeader_BannerSize" Grid.Row="0" Grid.Column="0" Text="Banner Size"
FontSize="30" VerticalAlignment="Center" />
<TextBlock x:Name="lblHeader_BannerControl" Grid.Row="0" Grid.Column="1" Text="Banner Control"
FontSize="30" />
<TextBlock x:Name="lblHeader_Interstitial" Grid.Row="0" Grid.Column="2" Text="Interstitial Fullsize as Interrupt"
FontSize="30" />
<TextBlock x:Name="lblBanner1" Grid.Row="1" Grid.Column="0" Text="300x250"
FontSize="30" VerticalAlignment="Center"/>
<ad:AdControl x:Name="adBanner_300x250" Grid.Row="1" Grid.Column="1" Background="#F0F0F0"
ApplicationId="3f83fe91-d6be-434d-a0ae-7351c5a997f1"
AdUnitId="test"
Width="300" Height="250"
/>
<TextBlock x:Name="lblBanner2" Grid.Row="2" Grid.Column="0" Text="728x90"
FontSize="30" VerticalAlignment="Center"/>
<ad:AdControl x:Name="adBanner_728x90" Grid.Row="2" Grid.Column="1" Background="#F0F0F0"
ApplicationId="3f83fe91-d6be-434d-a0ae-7351c5a997f1"
AdUnitId="test"
Width="728" Height="90"
/>
<TextBlock x:Name="lblBanner3" Grid.Row="3" Grid.Column="0" Text="160x600"
FontSize="30" VerticalAlignment="Center"/>
<ad:AdControl x:Name="adBanner_160x600" Grid.Row="3" Grid.Column="1" Background="#F0F0F0"
ApplicationId="3f83fe91-d6be-434d-a0ae-7351c5a997f1"
AdUnitId="test"
Width="160" Height="600"
/>
<TextBlock x:Name="lblBanner4" Grid.Row="4" Grid.Column="0" Text="300x600"
FontSize="30" VerticalAlignment="Center"/>
<ad:AdControl x:Name="adBanner_300x600" Grid.Row="4" Grid.Column="1" Background="#F0F0F0"
ApplicationId="3f83fe91-d6be-434d-a0ae-7351c5a997f1"
AdUnitId="test"
Width="300" Height="600"
/>
<Button x:Name="btnStart_InterAd" Click="btnStart_InterAd_Click"
Grid.Row="1" Grid.Column="2"
Width="200" Height="100" VerticalAlignment="Center"
HorizontalAlignment="Center"
Content="start Ad InterStitial"
></Button>
</Grid>
</ScrollViewer>
</Grid>
</Page>
<!--AdSizes for Windows 10
300x250 728x90 160x600 300x600 -->
|
B) Interstitial Werbung
Im Gegensatz zu
Banneranzeigen wird Interstitialwerbung (oder Interstitialanzeigen) auf dem gesamten
Bildschirm der App angezeigt. In Spielen werden häufig zwei grundlegende
Formen verwendet.
Wird beschrieben unter: https://docs.microsoft.com/de-de/windows/uwp/monetize/interstitial-ads
Intersitial Werbung wird
nicht über XAML eingebunden, sondern nur über den Code behind, also C# der
Page.
Dieses Beispiel zeigt eine
Interstitial Werbung.
Der Werbebanner geht über
die gesamte App und unterbricht die aktuelle Darstellung.
Links unten ist eine Zahl
eingeblendet, wie lange die Werbung noch läuft. Wenn man die App in den
Background stellt, dann wird auch die Werbung angehalten und diese startet
wieder, sobald man die App darstellt.
Beim Klick auf die Werbung
wird im linken oberen Eck auch ein Zurück-Button eingeblendet.
Hier der Code zum
Einbinden eines FullScreen Advertisers
//<
Advertising >
using Microsoft.Advertising.WinRT.UI;
//</
Advertising >
namespace uwp_Advertiser
{
public sealed partial class MainPage : Page
{
//<
Advertise >
InterstitialAd myInterstitialAd;
string myAppId = "d25517cb-12d4-4699-8bdc-52040c712cab";
string myAdUnitId = "test";
//</
Advertise >
public MainPage()
{
this.InitializeComponent();
//<
create AdControl >
myInterstitialAd = new InterstitialAd();
//</
create AdControl >
}
private void
btnStart_InterAd_Click(object sender, RoutedEventArgs e)
{
//------------<
btnStart_InterAd_Click() >------------
//<
get new Advertise >
myInterstitialAd.RequestAd(AdType.Video, myAppId, myAdUnitId);
//</
get new Advertise >
//<
show Advertise >
if (InterstitialAdState.Ready == myInterstitialAd.State)
{
myInterstitialAd.Show();
}
//</
show Advertise >
//------------</
btnStart_InterAd_Click() >------------
}
}
}
|