Le segmentation réseau 5G offre la possibilité d'améliorer les performances du réseau pour des usages spécifiques cas d'utilisation. Ce guide explique comment une application peut déclencher l'expérience utilisateur de vente incitative de segmentation du réseau et demander une connexion premium si l'utilisateur décide d'en acheter une.
Déclarer des intents de capacité premium
Pour que la demande de capacité réseau
de votre application soit respectée,
doit déclarer son intention pour demander cette fonctionnalité dans le fichier manifeste de l'application.
Sinon, la requête réseau échoue et génère une erreur SecurityException
.
Pour ce faire, votre application doit déclarer
PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES
dans le fichier AndroidManifest.xml
et inclure le code XML correspondant
fichier de ressources.
Une déclaration de capacité dans le fichier manifeste se présente comme suit:
<property android:name="android.net.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES"
android:resource="@xml/network_capabilities" />
Le fichier de ressources network_capabilities.xml
correspondant se présente comme suit:
<network-capabilities-declaration> xmlns:android="http://schemas.android.com/apk/res/android">
<uses-network-capability android:name="NET_CAPABILITY_PRIORITIZE_LATENCY"/>
</network-capabilities-declaration>
Déclencher le flux de vente incitative de tranchage du réseau
Cet exemple de code montre comment déclencher le flux de vente incitative et demander le les fonctionnalités premium achetées.
Context mContext;
Network mNetwork;
public void purchasePremiumCapability() {
TelephonyManager tm = mContext.getSystemService(TelephonyManager.class);
int capability = TelephonyManager.PREMIUM_CAPABILITY_PRIORITIZE_LATENCY;
if (tm.isPremiumCapabilityAvailableForPurchase(capability)) {
tm.purchasePremiumCapability(capability, Runnable::run, new Consumer<Integer>() {
@Override
public void accept(Integer result) {
Log.d("Purchase premium capability result: "
+ TelephonyManager.convertPurchaseResultToString(result));
switch (result) {
case /* success or already purchased */:
requestPremiumCapabilityNetwork();
break;
case /* temporary failure */:
// TODO: wait and retry
break;
case /* hard failure */:
// TODO: handle failure
break;
default:
Log.e("Unknown purchase result: " + result);
}
}
});
} else {
Log.e("Premium capability is not available for purchase.");
}
}
public void requestPremiumCapabilityNetwork() {
ConnectvityManager cm = mContext.getSystemService(ConnectivityManager.class);
NetworkRequest request = NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY)
.build();
cm.requestNetwork(request, new NetworkCallback() {
@Override
public void onAvailable(Network network) {
Log.d("Application can now use the network with the premium capability.");
mNetwork = network;
}
@Override
public void onLost(Network network) {
Log.d("Premium capability network is no longer available.");
mNetwork = null;
// TODO: clean up anything relying on the premium capability network
}
});
}
Les sections suivantes décrivent les étapes de ce processus de façon plus détaillée dans les moindres détails.
Étape 1: Vérifiez si la fonctionnalité Premium est disponible
Appelez la méthode
isPremiumCapabilityAvailableForPurchase()
méthode API pour déterminer
si la fonctionnalité Premium sélectionnée est disponible. Cette méthode renvoie true
si la fonctionnalité est disponible à l'achat auprès de l'opérateur via la vente incitative ;
le workflow de notification.
Étape 2: Lancez le flux de notification de vente incitative
Après avoir vérifié que la fonctionnalité Premium est disponible, votre application doit appeler
purchasePremiumCapability()
pour lancer le flux de notification de vente incitative. Si l'utilisateur n'a pas encore acheté
la capacité spécifiée et toutes les conditions préalables remplies, la plate-forme
affiche une notification pour l'informer que les options d'amélioration des performances
peuvent être disponibles
auprès de leur opérateur. Si l'utilisateur appuie sur la notification,
ouvre la WebView de l'opérateur afin que le processus d'achat puisse se poursuivre.
Le rappel parameter
transmis à purchasePremiumCapability()
renvoie une
code de résultat de la demande d'achat.
Les codes de résultat
PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS
et
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED
présentent des résultats positifs, pour lesquels votre application peut demander
certaines fonctionnalités premium.
Les codes de résultat dans la liste suivante représentent des demandes d'achat ayant échoué. Voir consultez la documentation de référence de l'API pour en savoir plus.
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_IN_PROGRESS
PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_DISABLED
PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_ERROR
PURCHASE_PREMIUM_CAPABILITY_RESULT_ENTITLEMENT_CHECK_FAILED
PURCHASE_PREMIUM_CAPABILITY_RESULT_FEATURE_NOT_SUPPORTED
PURCHASE_PREMIUM_CAPABILITY_RESULT_NETWORK_NOT_AVAILABLE
PURCHASE_PREMIUM_CAPABILITY_RESULT_NOT_DEFAULT_DATA_SUBSCRIPTION
PURCHASE_PREMIUM_CAPABILITY_RESULT_NOT_FOREGROUND
PURCHASE_PREMIUM_CAPABILITY_RESULT_PENDING_NETWORK_SETUP
PURCHASE_PREMIUM_CAPABILITY_RESULT_REQUEST_FAILED
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
PURCHASE_PREMIUM_CAPABILITY_RESULT_TIMEOUT
PURCHASE_PREMIUM_CAPABILITY_RESULT_USER_CANCELED
Étape 3: Demandez la connexion premium achetée
Si le flux de notification de vente incitative renvoie un code de réussite
(PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS
ou
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED
), votre application doit utiliser
requestNetwork()
pour demander un réseau répondant à la capacité demandée. Notez que lorsque vous
créer un objet NetworkRequest
, la capacité que vous ajoutez n'est pas la même
que vous transmettez aux API TelephonyManager
lors des étapes précédentes.
Le tableau suivant mappe les constantes de la classe TelephonyManager
avec les
constantes correspondantes dans NetworkCapabilities
.
Constante TelephonyManager |
Constante NetworkCapabilities |
---|---|
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY |
NET_CAPABILITY_PRIORITIZE_LATENCY |
Si la demande d'achat échoue, votre application doit demander et utiliser la valeur réseau à la place. Il n'y a pas de comportement de remplacement automatique si le segment Premium ne peut pas être satisfaite.