So wird’s gemacht: Verwalten von Kosteneinschränkungen in getakteten Netzwerken (HTML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

In diesem Thema werden bewährte Methoden für das Verfolgen von Netzwerkverbindungskosten oder Änderungen am Datentarifstatus beschrieben, sowie solche, mit denen Ihre App mithilfe von Klassen im Windows.Networking.Connectivity-Namespace diese Informationen nutzen kann, um zusätzliche Kosten für Roaming oder das Überschreiten eines festgelegten Datenlimits zu vermeiden.

Voraussetzungen

Die folgenden Beispiele verwenden JavaScript und basieren auf dem Netzwerkinformationsbeispiel. Allgemeine Informationen zum Erstellen einer Windows-Runtime-App mit JavaScript finden Sie unter Erstellen Ihrer ersten Windows-Runtime-App mit JavaScript.

Es ist wichtig, dass Sie wissen, was ein ConnectionProfile ist und wie Sie auf die Informationen zugreifen, die es darstellt. Weitere Informationen finden Sie unter So wird's gemacht: Abrufen von Netzwerkverbindungsinformationen. Weitere Codebeispiele finden Sie im Download Netzwerkinformationsbeispiel.

Was sind getaktete Netzwerke?

In einem getakteten Netzwerk werden dem Benutzer für eine festgelegte Menge von Daten oder für das Roaming kosten berechnet. Die meisten Mobilfunkanbieter deckeln die pro Monat und pro Benutzer übertragbare Datenmenge. Das Überschreiten dieses Datenlimits (oder das Übertragen von Daten beim Roaming) kann für den Benutzer zu erheblichen Kosten führen. Mit der wachsenden Anzahl mobiler Breitbandtechnologien wird die steigende Datenabfrage die Auswirkungen dieses Problems noch verstärken, wodurch vielleicht noch variablere Datentarife entstehen. Daher müssen Windows-Runtime-Apps diese Netzwerkeinschränkungen kennen und ihr Verhalten bei geänderten Bedingungen anpassen.

In Windows 8, Windows Server 2012 und Windows Phone 8.1 oder höher werden getaktete Netzwerke in Netzwerke mit uneingeschränkten, festen oder variablen Kostenlimits eingeteilt. Die NetworkCostType-Enumeration definiert diese Werte. Wenn ein Benutzer den im Datentarif festgelegten Höchstbetrag überschreitet oder Roaming nutzt, fallen in den meisten Netzwerken sehr viel höhere Kosten an, oder der Zugriff wird gesperrt bzw. gedrosselt.

Die meisten Benutzer mobiler Netzwerke wechseln im Laufe eines Tages zwischen verschiedenen Netzwerken (getaktet und ungetaktet). Außerhalb der Reichweite des Heim- oder Firmennetzwerks kann ein 3G/4G-Netzwerk für die Netzwerkkonnektivität verwendet werden. Zu Hause und in der Firma ist oft mindestens ein WLAN verfügbar, und umgekehrt sind diese WLANs irgendwann nicht mehr verfügbar, wenn der Benutzer sein Zuhause oder die Firma verlässt. Darüber hinaus kann es vorkommen, dass gelegentlich kein Netzwerk verfügbar ist. Angesichts der starken Ausbreitung von WLANs und mobilen Breitbandnetzwerken werden Szenarien mit solchen Netzwerkänderungen immer häufiger.

Welche Apps sind davon betroffen?

Ein unangebrachter Verbrauch von getakteter Netzwerkbandbreite kann dem Ruf Ihrer App und Ihrer Organisation schaden. In der Regel müssen alle Windows-Runtime-Apps (insbesondere die Apps, die große Datenmengen übertragen) den folgenden Richtlinien entsprechen.

Allgemeiner Leitfaden

Sie können die App durch eine Registrierung für Verbindungsänderungsereignisse über Verbindungsänderungen, in diesem Fall Änderungen der Kosten- oder Datentarife, informieren. Sobald die App über eine Änderung informiert wurde, kann sie auf das angegebene ConnectionProfile zugreifen und aktuelle Informationen abrufen, bevor die nächste Entscheidung zum Anpassen des App-Verhaltens getroffen wird. Anweisungen dazu finden Sie unter So wird's gemacht: Verwalten von Netzwerkverbindungsereignissen und Änderungen der Verfügbarkeit.

Speziell in Szenarien mit getakteten Netzwerken können die folgenden ConnectionCost-Eigenschaften dazu verwendet werden, Informationen zu sammeln und aktuelle Datentarifeinstellungen für eine bestimmte Verbindung zu identifizieren:

Eigenschaft Beschreibung

ApproachingDataLimit

Ruft einen Wert ab, der angibt, ob eine Verbindung sich dem im Datentarif angegebenen Nutzungslimit nähert. Dieses wird vom Netzbetreiber festgelegt. Diese Einschränkung wird meist als Datenlimit bezeichnet.

NetworkCostType

Ruft einen Wert ab, der die aktuellen Netzwerkkosten für eine Verbindung anzeigt.

  • Unrestricted Die Nutzung dieser Netzwerkverbindung ist unbegrenzt. Es fallen keine Nutzungsgebühren an, und es liegen keine Kapazitätseinschränkungen vor.
  • Fixed: Die Nutzung dieser Netzwerkverbindung ist bis zu einem bestimmten, durch den Netzbetreiber festgelegten Datenlimit nicht begrenzt.
  • Variable: Die Nutzung dieser Netzwerkverbindung wird pro Byte getaktet.
  • Unknown: Für diese Netzwerkverbindung sind keine Kosteninformationen verfügbar.

OverDataLimit

Ruft einen Wert ab, der angibt, ob die Verbindung das im Datentarif angegebene Nutzungslimit überschritten hat. Dieses wird vom Netzbetreiber festgelegt.

Roaming

Ruft einen Wert ab, der angibt, ob die Verbindung mit einem Netzwerk außerhalb des Heimnetzwerkanbieters besteht.

 

Apps, die über ein getaktetes Netzwerk eine Verbindung mit dem Internet herstellen, können Kosteninformationen direkt durch Aufrufen von GetInternetConnectionProfile und Zugreifen auf die zugehörigen Kosteneigenschaften abrufen. Dank dieser Informationen kann eine App diese Richtlinien befolgen und entscheiden, wie Netzwerkressourcen am besten verwendet werden:

Verhalten App-Richtlinien Beispiel

Normal

Wenn NetworkCostType auf Unrestricted oder Unknown festgelegt ist und ConnectionCost nicht auf Roaming gesetzt ist, sollte Ihre App ein Normal-Verhalten implementieren.

In Normal-Szenarien implementiert Ihre App keine Einschränkungen. Apps behandeln die Verbindung in Bezug auf Kosten als Unlimited und in Bezug auf Nutzungsgebühren und Kapazitätsbeschränkungen als Unrestricted.

Beispiele:

  • Wiedergabe eines vollständigen HD-Films
  • Herunterladen einer großen Datei ohne Einschränkungen und UI-Eingabeaufforderungen
  • Die Media Player-App gibt einen kompletten HD-Film wieder.
  • Die App lädt eine große Datei ohne Einschränkungen oder Aufforderungen herunter.

Conservative

Wenn NetworkCostType auf Fixed oder "Variable" festgelegt ist und ConnectionCost nicht auf Roaming oder OverDataLimit gesetzt ist, sollte Ihre App ein Conservative-Verhalten implementieren.

In konservativen Szenarien implementiert die App Einschränkungen zum Optimieren der Netzwerknutzung, um Übertragungen über getaktete Netzwerke zu handhaben.

Beispiele:

  • Abspielen von Filmen in niedrigeren Auflösungen
  • Verzögern von nicht kritischen Downloads
  • Vermeiden des Vorabrufens von Informationen über ein Netzwerk
  • Wechseln Sie beim Abrufen von E-Mails in einen Modus, in dem nur Kopfzeilen abgerufen werden
  • Die Media Player-App gibt Filme in niedrigeren Auflösungen wieder.
  • Die App verzögert nicht kritische Downloads

Opt-In

Wenn ConnectionCost auf Roaming oder OverDataLimit festgelegt ist, sollte Ihre App ein Opt-In-Verhalten implementieren.

Bei Abonnementszenarien handhabt Ihre App Fälle, in denen die Kosten für den Netzwerkzugriff wesentlich höher als die Tarifkosten sind. Nutzt ein Benutzer beispielsweise Roaming, kann ein Mobilfunkanbieter mehr für die Datennutzung berechnen.

Beispiele:

  • Auffordern des Benutzers zur Eingabe vor Verbindungsaufbau mit dem Netzwerk
  • Anhalten aller Hintergrunddaten-Netzwerkaktivitäten
  • Die App fordert den Benutzer zum Netzwerkzugriff auf.
  • Die App hält alle im Hintergrund ausgeführten Datennetzwerkaktivitäten an.

 

Dieses Codebeispiel überprüft die Verbindungskosten und gibt Vorschläge für geeignetes App-Verhalten zurück.

var CostGuidance = { Normal: 0, Conservative: 1, OptIn: 2 };
// GetCostGuidance returns an object with a Cost (with value of CostGuidance), 
// CostName (a string) and Reason, which says why the cost is what it is.

function GetCostGuidance() 
{
    var connectionCost = Windows.Networking.Connectivity.NetworkInformation.getInternetConnectionProfile().getConnectionCost();
    var networkCostConstants = Windows.Networking.Connectivity.NetworkCostType;
    var Retval = new Object();
    if (connectionCost.roaming || connectionCost.overDataLimit)
    {
        Retval.Cost = CostGuidance.OptIn;
        Retval.CostName = "OptIn";
        Retval.Reason = connectionCost.roaming
            ? "Connection is roaming; using the connection may result in additional charge."
            : "Connection has exceeded the usage cap limit.";
    }
    else if (connectionCost.networkCostType == networkCostConstants.fixed
        || connectionCost.networkCostType == networkCostConstants.variable)
    {
        Retval.Cost = CostGuidance.conservative;
        Retval.CostName = "Conservative";
        Retval.Reason = connectionCost.networkCostType == NetworkCostType.fixed
            ? "Connection has limited allowed usage."
            : "Connection is charged based on usage. ";
    }
    else
    {
        Retval.Cost = CostGuidance.Normal;
        Retval.CostName = "Normal";
        Retval.Reason = connectionCost.networkCostType == networkCostConstants.unknown
            ? "Connection is unknown"
            : "Connection cost is unrestricted";
    }

    return Retval;
}

Verhaltensunterschiede zwischen Windows Store-Apps und Windows Phone-Store-Apps

Einige Anbieter von mobilem Breitband geben die Kosteninformationen für den Tarif eines Benutzers nicht im bereitgestellten Profil für mobiles Breitband an. Der Benutzer ist dafür verantwortlich, diese Kosteninformationen in Windows und Windows Phone einzugeben.

Kosteninformationen werden für mobile Breitbandnetzwerke unterschiedlich angezeigt. Werden die Kosteninformationen nicht vom Benutzer für mobiles Breitband angegeben, wird unter Windows 8.1 für NetworkCostType der Kostentyp Fixed angezeigt. Unter Windows Phone 8.1 werden die Kosteninformationen für mobiles Breitband (Datenverbindung), sofern sie nicht angegeben werden, als Unknown angezeigt. Dieser Verhaltensunterschied betrifft die obige allgemeine Richtlinie für die Überprüfung der Verbindungskosten und führt dazu, dass Vorschläge für das geeignete App-Verhalten zurückgegeben werden. Nach der obigen Richtlinie würde Windows 8.1 das Verhalten Conservative und Windows Phone 8.1 das Verhalten Normal empfehlen. Beide Plattformen sollten das Verhalten Conservative vorschlagen. Daher sollte die allgemeine Richtlinie für das geeignete Verhalten unter Windows Phone für Profile für mobiles Breitband überarbeitet werden.

Handhaben der maximalen Größe für Dateiübertragungen

Die Übertragung großer Dateien über ein getaktetes Netzwerk kann zu unerwartet hohen Kosten beim Benutzer führen. Apps, die Dateien in einem getakteten Netzwerk synchronisieren, hochladen oder herunterladen, können dies nur dann ohne Zustimmung des Benutzers tun, wenn die Dateigröße unter der vom Netzbetreiber festgelegten maximalen Übertragungsgröße liegt.

Apps sollten die Zustimmung des Benutzers einholen oder auf den Zugriff auf ein uneingeschränktes Netzwerk warten, bevor sie große Datenmengen übertragen. Optional kann die Anwendung dem Benutzer ermöglichen, künftige Nachrichten zum Einholen der Zustimmung zu deaktivieren.

Der folgende Beispielcode zeigt, wie die maximale Größe für Dateiübertragungen für eine Verbindung abgerufen werden kann:

var dataPlanStatus = InternetProfile.getDataPlanStatus();

if (dataPlanStatus.maxTransferSizeInMegabytes !== null) {
  
    mySample.displayStatus("Maximum Transfer Size in Megabytes: " + dataPlanStatus.maxTransferSizeInMegabytes);
}
else{

    mySample.displayError("Maximum Transfer Size in Megabytes: " + "Not Defined");
}

Zusammenfassung

Sie haben in diesem Thema Szenarien mit getakteten Netzwerken kennengelernt und erfahren, wie Sie verhindern, dass Ihre App mit Netzwerkverbindung zusätzliche Kosten für den Endbenutzer verursacht.

Auch wenn es hier nur um Szenarien mit getakteten Netzwerken geht, kann ein NetworkStatusChanged-Ereignis auch Änderungen anzeigen, die auf die Verfügbarkeit einer Verbindung hinweisen. Weitere Informationen und Richtlinien zum optimalen Umgang mit solchen Szenarien finden Sie unter So wird's gemacht: Verwalten von Netzwerkverbindungsereignissen und Änderungen der Verfügbarkeit.

Verwandte Themen

Sonstige

Erstellen Ihrer ersten Windows-Runtime-App mit JavaScript

So wird's gemacht: Behandeln von Ausnahmen in Netzwerk-Apps

So wird's gemacht: Verwalten von Netzwerkverbindungsereignissen und Änderungen der Verfügbarkeit

Abrufen von Netzwerkadapter- und Ortsinformationen

So wird's gemacht: Abrufen von Netzwerkverbindungsinformationen

So wird's gemacht: Abrufen von Netzwerk-Verbindungsnutzungsdaten

Referenz

ConnectionCost

ConnectionProfile

DataPlanStatus

NetworkCostType

NetworkInformation

Windows.Networking.Connectivity

Beispiele

Netzwerkinformationsbeispiel

Hintergrundbeispiel für den Netzwerkstatus