Gebt acht, wenn Ihr in eurer Windows Store Applikation die Internet Verbindung in eurem Projekt-Manifest aktiviert habt.
Ihr könnt dies in Visual Studio 2012 folgendermaßen prüfen: PROJECT->Store->Edit App Manifest (Capabilities tab)
Wenn dies aktiviert ist (ACHTUNG, falls Ihr ‘Microsoft Advertising’ verwendet, dann braucht Ihr diese Einstellung unbedingt, da die Werbebanner (Ads) aus dem Web dynamisch geladen werden), dann MÜSST Ihr
- ein Policy Statement in eurem Windows Settings Charm UND
- die Policy URL beim Submitten eurer APP angeben.
Falls Ihr das nicht macht, wird eure Applikation nicht zertifiziert und Ihr findet folgende Fehlermeldung in eurem DashBoard:
The app has declared access to network capabilities and no privacy statement was provided in the Description page.
The app has declared access to network capabilities and no privacy statement was provided in the Windows Settings Charm.
Soweit so gut, wie macht man das nun? Beginnen wir mit dem einfacheren:
Die Policy URL beim Submitten eurer APP angeben
Hier solltet Ihr vorsichtig sein, die Datenschutzrichtlinien sind leider optional, man bekommt keinen Fehler, wenn man das nicht ausfüllt.
Ihr findet die Eingabe in eurem DashBoard unter ‘Beschreibung’. ACHTUNG, der Punkt ist erst enabled, wenn Ihr euer App-Paket hochgeladen habt.
https://appdev.microsoft.com/StorePortals/de-DE/ (unter App übermitteln, bzw. ‘Apps in Bearbeitung’ und ‘Bearbeiten’)
Ihr scrollt dann ganz nach unten und tragt dort eine URL ein, wo eure Datenschutzrichtlinien zu finden sind.
Habt Ihr noch keinen Text für die Datenschutzrichtlinien, könnt Ihr gerne den Text aus meinem Blog-Eintrag vom März verwenden.
http://hamboeck.blogspot.co.at/2013/03/privacy-statement-windows8.html
Wie programmiert Ihr das aber in der APP aus? Sehen wir uns das jetzt an.
Policy Statement in eurem Windows Settings Charm für JavaScript Store Apps
Fügt dazu die benötigten HTML-Dateien eurer Applikation hinzu (in dem unteren Beispiel wären das: support.html, about.html und privacy.html).
Danach fügt Ihr folgenden JavaScript Code zu eurer default.html-Seite hinzu.
<script>
window.onload = function () {
WinJS["Application"].addEventListener("settings", function (e) {
e.detail.applicationcommands =
{
"support":
{
title: "Support",
href: "/support.html"
},
"about":
{
title: "About",
href: "/about.html"
},
"privacy":
{
title: "Privacy Policy",
href: "/privacy.html"
}
};
WinJS.UI.SettingsFlyout.populateSettings(e);
});
}
</script>
Jetzt noch eure Applikation starten und seht euch das Resultat im Charm an:
Policy Statement in eurem Windows Settings Charm für C# Store Apps
Ihr müsst euche an den CommandsRequested event an dem SettingsPane Objekt für eure momentane View anhängen, ein guter Platz ist z. B. der Loaded event eurer Page, oder der Constructor (nach dem InitializeComponent(); Aufruf).
Code:
SettingsPane forCurrentView = SettingsPane.GetForCurrentView();
forCurrentView.CommandsRequested += this.App_CommandsRequested;
Danach erzeugt die Methoden für den Event.
Code:
private void App_CommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
{
SettingsCommand command = new SettingsCommand("Privacy Policy", "Privacy Policy", OnPolicyInvoked);
args.Request.ApplicationCommands.Add(command);
}
private static void OnPolicyInvoked(IUICommand uiCommand)
{
Launcher.LaunchUriAsync(new Uri("http://hamboeck.blogspot.co.at/2013/03/privacy-statement-windows8.html"));
}
Das sieht dann zur Laufzeit so aus: