Post on 06-Jul-2015
description
transcript
Holger WendelSenior Consultant – Multitouch Development
Neonred Group GmbH
Gordon BreuerSenior IT Consultant / Software Engineermsg systems ag
Windows Phone
CSI: WPDem Windows Phone auf der SpurGDR2-Internetspecial:
Data Sense
Demo Quick-Facts
Referenz Code-Beispiel
Data Sense
Demo
Data Sense
Data Sense
Quick-Facts
Data Sense
Data Sense
• Data Sense ist eine System-App
• Protokolliert den verbrauchten Trafficaller Apps und Systemkomponentenauf Windows Phone
• Unterscheidung zwischen Traffic überW-LAN und Mobilfunk-Anbindung
• Warnt bei Erreichen eines eingestelltenDatenlimits und schaltet auf WunschFeatures mit Onlineanbindung ab
Data Sense
Data Sense kann für die serverseitigeKomprimierung des anfallendenDatentraffics verwendet werden
Die Verwendung innerhalb desInternet Explorers muss explizit in denerweiterten Einstellungen aktiviert werden
Diese Funktion muss vom eigenenProvider unterstützt werden Derzeit bietet keiner der drei großen Provider
in Deutschland das Feature an
T-Mobile arbeitet nach eigener Aussage daran
Data Sense
• Die Installation der Data Sense-App ist für den Hersteller / Provider optional, auch mit dem GDR2-Update!
• Ohne die App kann der Benutzer kein Datenlimit hinterlegen, allerdings kann die nachfolgend beschriebene API von Entwicklern dennoch verwendet werden um zwischen einer bestehenden Wi-Fi und einer Mobilfunk-Verbindung zu unterscheiden, und ob der Benutzer sich im Ausland befindet oder nicht (Roaming)
• Ist die Data Sense-App installiert kann man über die API außerdem abfragen, ob man das hinterlegte Limit fast erreicht (<10% verbleibend) oder auch bereits überschritten hat
Referenz
Data Sense
Data Sense
Erforderliche Capability in der WMAppManifest.xml ID_CAP_NETWORKING
Wann sollte das Datenlimit des Benutzers überprüft werden? Launching Event
Starten der App
Activated Event Reaktivierung nach Deaktivierung oder Tombstoning
NetworkInformation.NetworkStatusChanged Event Wechsel der Verbindung zwischen Wi-Fi und Mobilfunk
Beim Eintreten oder Verlassen einer Roaming-Zone
Wenn die Eigenschaften ApproachingDataLimit oder OverDataLimit auf truegesetzt werden
Optional: Vor dem Starten eines Vorgangs der einen (potentiell) hohen Datenverbrauch hat
Data Sense
NetworkInformation GetInternetConnectionProfile() ConnectionProfile
NetworkAdapterIanaInterfaceType
Internet AssignedNamesAuthority 71 = Wi-Fi
6 = Ethernet
ConnectionCost
NetworkCostType
GetConnectionCost()Unknown
Unrestricted
Fixed
Variable
1. Check2. bei mobiler
Verbindung
ApproachingDataLimit
OverDataLimit
Roaming
1. Check
2. Wenn nichtunbeschränkt
Data Sense Zunächst sollte man überprüfen, ob der Benutzer derzeit eine
Wi-Fi Verbindung verwendet (IanaInterfaceType ist 71) oder aber eine Mobilfunk-Verbindung
Im zweiten Fall kann – sofern die Data Sense App installiert ist – die Art der mobilen Datenverbindung abgefragt werden: Unrestricted – Der Datenverbrauch muss, analog zu Wi-Fi, nicht eingeschränkt oder
überwacht werden Fixed – Der Benutzer hat ein einmaliges Daten-Kontingent hinterlegt Variable – Der Benutzer hat ein monatliches Frei-Kontingent hinterlegt Unknown – Data Sense wurde vom Benutzer nicht konfiguriert oder die App steht nicht zur
Verfügung
Ist die Datenverbindung Fixed oder Variable so kann man ApproachingDataLimit und OverDataLimit abfragen; ist eine der beiden true, sollte man den Nutzer vor dem Verwenden der Datenverbindung um Erlaubnis fragen und ihn auf das Limit hinweisen! Beim Typ Unknown sind beide Eigenschaften immer false, eine eigene Logik ist anzuraten
bei großen zu übertragenden Datenmengen (bsp. User um Erlaubnis fragen)
Ist die Eigenschaft Roaming auf true sollte der Benutzer auf jeden Fall gefragt werden, ob die Datenverbindung im Ausland verwendet werden soll! Wird auch korrekt gesetzt, wenn der Verbindungstyp Unknown ist
Die hier vorgestellte API kann nicht mit dem Simulation Dashboard getestet werden!
Code-Beispiel
Data Sense
Data Sense//Global
bool m_bDoNotSendData = false;
bool m_bSendLowResolutionImage = false;
private const int IANA_INTERFACE_TYPE_WIFI = 71;
NetworkStatusChangedEventHandler networkStatusCallback;
//Constructor
networkStatusCallback = newNetworkStatusChangedEventHandler(OnNetworkStatusChange);
UpdateNetworkInformation();
//Event Handler
private async void OnNetworkStatusChange(object sender) {
UpdateNetworkInformation();
}
Data Sense//Method UpdateNetworkInformation
private void UpdateNetworkInformation() {
ConnectionProfile internetConnectionProfile = Windows.Networking.Connectivity.NetworkInformation.GetInternetConnectionProfile();
if (internetConnectionProfile.NetworkAdapter.IanaInterfaceType != IANA_INTERFACE_TYPE_WIFI) {
if (internetConnectionProfile.GetConnectionCost().Roaming) {
m_bDoNotSendData = true;
}
if (internetConnectionProfile.GetConnectionCost().ApproachingDataLimit) {
m_bSendLowResolutionImage = true;
}
if (internetConnectionProfile.GetConnectionCost().OverDataLimit) {
m_bDoNotSendData = true;
}
} else {
m_bDoNotSendData = false;
m_bSendLowResolutionImage = false;
}
}
Afterglow
Holger WendelGordon Breuer
Vielen Dank!
Alle Informationen und Termine der Roadshow unter csi-wp.de und auf facebook.com/csiwp