5G ağ dilimleme, operatörlere belirli kullanım alanları için ağ performansını artırma olanağı sunar. Bu kılavuzda, bir uygulamanın ağ dilimleme özelliğini nasıl kullanabileceği açıklanmaktadır.
Bu kılavuzda, uygulamanın premium bağlantıya erişebilmesi için satın alma işleminin gerekli olduğu durumlarda ağ dilimleme upsell kullanıcı deneyimi akışının nasıl tetikleneceği de açıklanmaktadır.
1. adım: Premium özellik isteklerini tanımlayın
Uygulamanızın premium dilimleme özelliği isteğinizin kabul edilmesi için uygulamanızın, uygulama manifestinde bu özelliği isteme niyetini belirtmesi gerekir.
Aksi takdirde ağ isteği başarısız olur ve SecurityException
döndürülür.
Bunu yapmak için uygulamanızın AndroidManifest.xml
dosyasında PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES
mülkünü tanımlaması ve ilgili bir XML kaynak dosyası eklemesi gerekir.
Manifest dosyasındaki bir özellik beyanı şöyle 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ı şu şekilde 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>
2. adım: Premium özelliğinin kullanılıp kullanılamadığını doğrulayın
Premium özelliğinin kullanılıp kullanılamayacağını belirlemek için requestNetwork()
API yöntemini çağırın.
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;
}
});
}
Bir NetworkRequest
nesnesi oluşturduğunuzda eklediğiniz özellik, TelephonyManager
API'lerine ilettiğiniz özellikle aynı değildir.
Aşağıdaki tabloda, TelephonyManager
sınıfındaki sabitler NetworkCapabilities
sınıfındaki karşılık gelen sabitlerle eşleştirilmektedir.
TelephonyManager sabit |
NetworkCapabilities sabit |
---|---|
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY |
NET_CAPABILITY_PRIORITIZE_LATENCY |
3. Adım: Premium özellik kullanılamıyorsa satın alma durumunu kontrol edin
Seçilen premium özelliğin kullanılıp kullanılamayacağını belirlemek için isPremiumCapabilityAvailableForPurchase()
API yöntemini çağırın.
Bu yöntem, özellik, upsell bildirim iş akışı kullanılarak operatörden satın alınabiliyorsa true
değerini döndürür.
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;
}
4. Adım: Upsell bildirim akışını başlatın
Premium özelliğin kullanılabileceğini onayladıktan sonra uygulamanız, upsell bildirim akışını başlatmak için purchasePremiumCapability()
işlevini çağırmalıdır. Kullanıcı, belirtilen özelliği daha önce satın almamışsa ve tüm ön koşullar karşılanıyorsa platform, kullanıcıya performans artırma seçeneklerinin operatöründen kullanılabileceğini bildiren bir bildirim gösterir. 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.
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;
}
});
}
purchasePremiumCapability()
adresine iletilen parameter
geri çağırma işlevi, satın alma isteği için bir sonuç kodu döndürür.
PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS
ve PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED
sonuç kodları, uygulamanızın seçilen premium özelliğini istemeye devam edebileceği başarılı sonuçları temsil eder.
Aşağıdaki listedeki sonuç kodları, başarısız satın alma isteklerini temsil eder. Bunlar hakkında daha fazla bilgi edinmek için API referansına bakın.
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
Satın alma isteği başarısız olursa uygulamanız bunun yerine varsayılan ağı kullanabilir. Premium dilim isteği yerine getirilemezse otomatik yedek davranış yoktur.