5G ağ dilimleme, operatörler, belirli bir kullanım için ağ performansı artışı sağlama yeteneği durumlarda işe yarar. Bu kılavuzda, bir uygulamanın ağı dilimlere ayırarak upsell kullanıcı deneyimini nasıl tetikleyebileceği açıklanmaktadır. akış ve kullanıcı satın almaya karar verirse premium bağlantı isteğinde bulunun.
![Kullanıcı deneyimi akışı, kullanıcıya bir operatör açan bir bildirim gösteriyor.
satın alma işlemini tamamlayabilecekleri web sayfasına yönlendirir.](https://developer.android.com/static/images/develop/connectivity/5g/upsell-ux-flow.png?authuser=19&hl=tr)
Premium özellik amaçlarını bildirme
Uygulamanızın ağ yeteneği isteğinin kabul edilmesi için uygulamanız
bu özelliği isteme amacını uygulama manifest dosyasında beyan etmelidir.
Aksi takdirde, ağ isteği SecurityException
hatası vererek başarısız olur.
Bunun için uygulamanızın
PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES
özelliğini AndroidManifest.xml
dosyasında açın ve ilgili XML dosyasını dahil edin
kaynak dosya.
Manifest dosyasındaki bir özellik bildirimi aşağıdaki gibi görünür:
<property android:name="android.net.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES"
android:resource="@xml/network_capabilities" />
İlgili network_capabilities.xml
kaynak dosyası şöyle görünür:
<network-capabilities-declaration> xmlns:android="http://schemas.android.com/apk/res/android">
<uses-network-capability android:name="NET_CAPABILITY_PRIORITIZE_LATENCY"/>
</network-capabilities-declaration>
Ağ dilimleme upsell akışını tetikle
Bu kod örneğinde, upsell akışının nasıl tetikleneceği ve Premium özelliği satın alındı.
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
}
});
}
Aşağıdaki bölümlerde bu süreçte yer alan adımlar bolca fırsat sunuyor.
1. Adım: Premium özelliklerinin kullanılıp kullanılamadığını doğrulayın
Şunu çağırın:
isPremiumCapabilityAvailableForPurchase()
API yöntemini belirlemek için
seçilen premium özelliğin kullanılabilir olup olmadığı. Bu yöntem true
değerini döndürür
Söz konusu özellik upsell kullanarak operatörden satın alınabiliyorsa
bildirim iş akışı.
2. Adım: Upsell bildirim akışını başlatın
Premium özelliğinin kullanılabilir olduğunu onayladıktan sonra uygulamanız,
purchasePremiumCapability()
"upsell bildirim akışını başlatın. Kullanıcı zaten satın alma işlemi gerçekleştirmediyse
tüm ön koşulların karşılandığına karar verirseniz platform,
kullanıcıya performans artırma seçeneklerinin sunulduğunu bildiren bir bildirim gösterir
kendi operatörlerinden mevcut olabilir. Kullanıcı bildirime dokunursa
platform, satın alma işleminin devam edebilmesi için operatörün web görünümünü açar.
purchasePremiumCapability()
öğesine iletilen parameter
geri çağırması
satın alma isteği için sonuç kodu.
Sonuç kodları
PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS
ve
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED
uygulamanızın
seçili premium özellik.
Aşağıdaki listede yer alan sonuç kodları, başarısız satın alma isteklerini temsil eder. Görüntüleyin API referansını da inceleyebilirsiniz.
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
3. adım: Satın alınan premium bağlantıyı isteyin
Upsell bildirim akışı başarılı bir kod döndürürse
(PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS
veya
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED
), uygulamanızda
requestNetwork()
istenen özelliği karşılayan bir ağ isteğinde bulunun.
bir NetworkRequest
nesnesi derliyorsanız, eklediğiniz özellik aynı değildir.
özelliği ile ilgili daha fazla bilgiyi TelephonyManager
API'lere aktarmak için kullanabilirsiniz.
Aşağıdaki tabloda TelephonyManager
sınıfındaki sabit değerler
NetworkCapabilities
için karşılık gelen sabitleri gösterir.
TelephonyManager sabiti |
NetworkCapabilities sabiti |
---|---|
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY |
NET_CAPABILITY_PRIORITIZE_LATENCY |
Satın alma isteği başarısız olursa uygulamanız, varsayılan isteği göndermeli ve kullanmalıdır. kullanabilirsiniz. Premium diliminiz otomatik olarak yedeklenemez. isteği yerine getirilemiyor.