Implementierung von Datenplänen

Mit Android 9 können Mobilfunkanbieter den Benutzern direkt in der App „Einstellungen“ verlässliche Tarifdetails bereitstellen, um Verwirrung bei den Benutzern und Supportanrufe zu vermeiden. Auf Geräten mit Android 4.0 und höher können Benutzer ihre anbieterspezifischen Datenplandetails in der App „Einstellungen“ manuell konfigurieren und beispielsweise Warnungen und Grenzwerte festlegen, um ihre Datennutzung zu verwalten.

Konfiguration durch Carrier

Um Datenpläne zu konfigurieren, können Netzbetreiber mithilfe der SubscriptionPlan APIs Funktionen zu ihren vorhandenen Android-Apps hinzufügen. Die APIs sind so konzipiert, dass sie eine Vielzahl von Datenplantypen unterstützen, darunter wiederkehrende und einmalige Pläne sowie Pläne, die sich im Laufe der Zeit ändern.

Hier ist ein Beispiel für die Konfiguration eines gängigen Datentariftyps, der monatlich wiederkehrt:

SubscriptionManager sm =
    context.getSystemService(SubscriptionManager.class);
sm.setSubscriptionPlans(subId, Lists.newArrayList(
    SubscriptionPlan.Builder.createRecurringMonthly(
            ZonedDateTime.parse("2016-12-03T10:00:00Z"))
        .setTitle("G-Mobile")
        .setDataLimit(4_000_000_000L,
            SubscriptionPlan.LIMIT_BEHAVIOR_BILLED)
        .setDataUsage(200_493_293L, dataUsageTimestamp)
        .build()));

Das Gerät lässt eine App-Konfiguration von Datenplänen nur unter einer der folgenden Bedingungen zu:

  • Die SIM-Karte hat explizit eine App definiert, die sie verwalten kann, wie durch SubscriptionManager.canManageSubscription() definiert.
  • Der Netzbetreiber hat den Wert KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING über CarrierConfigManager übertragen, um anzugeben, welche App die Datenpläne des Netzbetreibers verwalten kann.
  • Das Gerät verfügt über eine in das Systemabbild integrierte App, die über die Berechtigung MANAGE_SUBSCRIPTION_PLANS verfügt.

Die ersten beiden Bedingungen ermöglichen die Installation der Carrier-App durch den Benutzer, ohne dass diese werkseitig im Systemabbild vorinstalliert werden muss. Das Betriebssystem erzwingt (und das CDD verlangt), dass alle konfigurierten Datentarifdetails geschützt sind und nur der Betreiber-App zur Verfügung gestellt werden, die die Details ursprünglich dem Betriebssystem bereitgestellt hat.

Ein vorgeschlagenes Design besteht darin, dass eine Mobilfunkanbieter-App einen inaktiven Wartungsdienst nutzt, um die Datentarifdetails täglich zu aktualisieren, es steht den Mobilfunkanbietern jedoch frei, eine breite Palette von Mechanismen zu nutzen, beispielsweise den Empfang von Datentarifdetails über betreiberinterne SMS-Nachrichten. Leerlaufwartungsdienste werden am besten mit einem JobScheduler Job implementiert, der setRequiresDeviceIdle() und setRequiresCharging() verwendet.

Nutzung durch Betriebssystem

Das Betriebssystem verwendet die von den SubscriptionPlan-APIs bereitgestellten Datenplandetails auf folgende Weise:

  • Die Plandetails werden über die Einstellungen-App angezeigt, um Benutzern die genaue Datennutzung anzuzeigen und direkte Deep-Links in die Carrier-App für Upgrade-/Upselling-Möglichkeiten bereitzustellen.
  • Die Schwellenwerte für Datennutzungswarnungen und Grenzwertbenachrichtigungen werden automatisch basierend auf den Plandetails konfiguriert. Die Warnung ist auf 90 % des Grenzwerts eingestellt.
  • Wenn der Netzbetreiber vorübergehend angibt, dass das Netzwerk „überlastet“ ist, verzögert das Betriebssystem zeitversetzte JobScheduler-Jobs, wodurch die Belastung des Netzes des Netzbetreibers verringert wird.
  • Wenn der Netzbetreiber vorübergehend angibt, dass das Netzwerk „nicht gemessen“ ist, kann das Betriebssystem die Mobilfunkverbindung als „nicht gemessen“ melden, bis der Netzbetreiber die Außerkraftsetzung aufhebt oder bis der Timeout-Wert (falls angegeben) erreicht ist.
  • Durch den Vergleich der aktuellen Datennutzung des Benutzers mit dem Gesamtdatenlimit schätzt das Betriebssystem die normale Datennutzung des Benutzers am Ende des Abrechnungszeitraums und weist konservativ 10 % aller überschüssigen Daten zu, um das Benutzererlebnis zu verbessern, indem es beispielsweise Apps die Nutzung ermöglicht Mehrpfaddaten.

Anpassung und Validierung

Die Android-Einstellungen-App zeigt alle vom Mobilfunkanbieter konfigurierten Datentarifdetails an, stellt sicher, dass Benutzer den genauesten Status ihrer Mobilfunkanbieterbeziehung sehen, und bietet Benutzern einen Pfad zur Mobilfunkanbieter-App, um ihren Tarif zu aktualisieren. Geräteherstellern, die sich dafür entscheiden, die App „Einstellungen“ anzupassen, wird empfohlen, diese Details weiterhin anzuzeigen.

Die oben beschriebenen SubscriptionManager APIs werden von android.telephony.cts.SubscriptionManagerTest getestet, wodurch sichergestellt wird, dass Datenplandetails von Betreiber-Apps konfiguriert werden können und dass Änderungen innerhalb des Betriebssystems weitergegeben werden.