Le découpage de réseau 5G permet aux opérateurs de renforcer les performances du réseau pour des cas d'utilisation spécifiques. Ce guide explique comment une application peut utiliser la fonctionnalité de découpage de réseau.
Ce guide explique également comment déclencher le flux d'expérience utilisateur de vente incitative par segmentation de réseau dans les cas où un achat est requis avant que l'application puisse accéder à la connexion premium.
Étape 1: Déclarer les intents de fonctionnalités premium
Pour que la demande de votre application d'une fonctionnalité de découpage premium soit acceptée, votre application doit déclarer son intention de 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 la propriété PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES
dans le fichier AndroidManifest.xml
et inclure un fichier de ressources XML correspondant.
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>
Étape 2: Vérifiez si la fonctionnalité premium est disponible
Appelez la méthode API requestNetwork()
pour déterminer si la fonctionnalité premium est disponible.
Context mContext;
Network mNetwork;
public void requestPremiumCapabilityNetwork(@NetCapability int capability) {
ConnectvityManager cm = mContext.getSystemService(ConnectivityManager.class);
NetworkRequest request = NetworkRequest.Builder()
.addCapability(capability)
.build();
cm.requestNetwork(request, new NetworkCallback() {
@Override
public void onAvailable(Network network) {
log("Premium capability %d network is available.", capability);
mNetwork = network;
}
@Override
public void onLost(Network network) {
log("Premium capability %d network is not available.", capability);
mNetwork = null;
}
});
}
Lorsque vous créez un objet NetworkRequest
, la capacité que vous ajoutez n'est pas la même que celle que vous transmettez aux API TelephonyManager
.
Le tableau suivant met en correspondance les constantes de la classe TelephonyManager
avec les constantes correspondantes dans NetworkCapabilities
.
Constante TelephonyManager |
Constante NetworkCapabilities |
---|---|
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY |
NET_CAPABILITY_PRIORITIZE_LATENCY |
Étape 3: Si la fonctionnalité premium n'est pas disponible, vérifiez si vous pouvez l'acheter
Appelez la méthode API isPremiumCapabilityAvailableForPurchase()
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 du transporteur à l'aide du workflow de notification d'incitation à l'achat.
Context mContext;
public boolean isPremiumCapabilityAvailableForPurchase(@PremiumCapability int capability) {
TelephonyManager tm = mContext.getSystemService(TelephonyManager.class);
boolean isAvailable = tm.isPremiumCapabilityAvailableForPurchase(capability);
log("Premium capability %d %s available to purchase.",
capability,
isAvailable ? "is" : "is not");
return isAvailable;
}
Étape 4: Lancer le flux de notification d'incitation à l'achat
Une fois que vous avez vérifié que la fonctionnalité premium est disponible, votre application doit appeler purchasePremiumCapability()
pour lancer le flux de notification d'incitation à l'achat. Si l'utilisateur n'a pas encore acheté la fonctionnalité spécifiée et que toutes les conditions préalables sont remplies, la plate-forme lui envoie une notification pour l'informer que des options d'amélioration des performances peuvent être disponibles auprès de son opérateur. Si l'utilisateur appuie sur la notification, la plate-forme ouvre la vue Web du transporteur pour que le processus d'achat puisse se poursuivre.
Context mContext;
public void purchasePremiumCapability(@PremiumCapability int capability) {
TelephonyManager tm = mContext.getSystemService(TelephonyManager.class);
tm.purchasePremiumCapability(capability, Runnable::run, new Consumer<Integer>() {
@Override
public void accept(Integer result) {
log("Purchase premium capability %d result: %d", capability, result);
int purchaseResult = result;
}
});
}
Le rappel parameter
transmis à purchasePremiumCapability()
renvoie un code de résultat pour la demande d'achat.
Les codes de résultat PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS
et PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED
représentent des résultats positifs, dans lesquels votre application peut demander la fonctionnalité premium sélectionnée.
Les codes de résultat de la liste suivante représentent les demandes d'achat ayant échoué. Pour en savoir plus, consultez la documentation de référence de l'API.
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
Si la requête d'achat échoue, votre application peut utiliser le réseau par défaut à la place. Aucun comportement de remplacement automatique n'est appliqué si la demande de segment premium ne peut pas être satisfaite.
Flux d'expérience utilisateur pour la vente incitative
![Le parcours UX affiche une notification qui ouvre une feuille de calcul Web du transporteur sur laquelle l'utilisateur peut finaliser l'achat.](https://developer.android.com/static/images/develop/connectivity/5g/upsell-ux-flow.png?hl=fr)