การแบ่งเครือข่าย 5G ช่วยให้ผู้ให้บริการสามารถเพิ่มประสิทธิภาพเครือข่ายสำหรับ Use Case ที่เฉพาะเจาะจง คำแนะนำนี้จะอธิบายวิธีที่แอปสามารถใช้ฟีเจอร์การแบ่งเครือข่าย
คู่มือนี้ยังอธิบายวิธีเรียกใช้ขั้นตอนการขายอัปเซล UX สำหรับการแบ่งเครือข่ายในกรณีที่ต้องมีการซื้อก่อนที่แอปจะเข้าถึงการเชื่อมต่อแบบพรีเมียมได้
ขั้นตอนที่ 1: ประกาศความตั้งใจในการใช้ความสามารถระดับพรีเมียม
แอปของคุณต้องประกาศความตั้งใจที่จะขอความสามารถดังกล่าวในไฟล์ Manifest ของแอปเพื่อให้คำขอความสามารถในการแบ่งกลุ่มระดับพรีเมียมของแอปได้รับการดำเนินการ
มิเช่นนั้น คำขอเครือข่ายจะดำเนินการไม่สำเร็จและแสดง SecurityException
ซึ่งแอปต้องประกาศพร็อพเพอร์ตี้ PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES
ในไฟล์ AndroidManifest.xml
และรวมไฟล์ทรัพยากร XML ที่เกี่ยวข้อง
การประกาศความสามารถในไฟล์ Manifest มีลักษณะดังนี้
<property android:name="android.net.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES"
android:resource="@xml/network_capabilities" />
ไฟล์ทรัพยากร network_capabilities.xml
ที่เกี่ยวข้องจะมีลักษณะดังนี้
<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: ตรวจสอบว่าฟีเจอร์ของ Premium พร้อมใช้งานหรือไม่
เรียกใช้เมธอด API ของ requestNetwork()
เพื่อดูว่าฟีเจอร์พรีเมียมพร้อมใช้งานหรือไม่
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;
}
});
}
เมื่อสร้างออบเจ็กต์ NetworkRequest
ความสามารถที่คุณเพิ่มจะไม่เป็นความสามารถเดียวกับที่คุณส่งไปยัง TelephonyManager
API
ตารางต่อไปนี้จะจับคู่ค่าคงที่จากคลาส TelephonyManager
กับค่าคงที่ที่สอดคล้องกันใน NetworkCapabilities
TelephonyManager ค่าคงที่ |
NetworkCapabilities ค่าคงที่ |
---|---|
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY |
NET_CAPABILITY_PRIORITIZE_LATENCY |
ขั้นตอนที่ 3: หากฟีเจอร์พรีเมียมไม่พร้อมใช้งาน ให้ตรวจสอบความพร้อมจำหน่าย
เรียกเมธอด isPremiumCapabilityAvailableForPurchase()
API เพื่อดูว่าฟีเจอร์พรีเมียมที่คุณเลือกพร้อมใช้งานหรือไม่
เมธอดนี้จะแสดงผลเป็น true
หากความสามารถดังกล่าวพร้อมจำหน่ายจากผู้ให้บริการโดยใช้เวิร์กโฟลว์การแจ้งเตือนการอัปเกรด
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: เริ่มขั้นตอนการแจ้งเตือนการอัปเกรด
หลังจากยืนยันว่าความสามารถของฟีเจอร์พรีเมียมพร้อมใช้งานแล้ว แอปของคุณควรเรียกใช้
purchasePremiumCapability()
เพื่อเริ่มขั้นตอนการแจ้งเตือนการอัปเกรด หากผู้ใช้ยังไม่ได้ซื้อความสามารถที่ระบุไว้และเป็นไปตามเงื่อนไขเบื้องต้นทั้งหมดแล้ว แพลตฟอร์มจะแสดงการแจ้งเตือนให้ผู้ใช้ทราบว่าตัวเลือกการเพิ่มประสิทธิภาพอาจพร้อมใช้งานจากผู้ให้บริการ หากผู้ใช้แตะการแจ้งเตือน แพลตฟอร์มจะเปิด WebView ของผู้ให้บริการเพื่อให้ดำเนินการซื้อต่อได้
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;
}
});
}
ฟังก์ชันการเรียกกลับ parameter
ที่ส่งไปยัง purchasePremiumCapability()
จะแสดงรหัสผลลัพธ์สำหรับคำขอซื้อ
รหัสผลลัพธ์ PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS
และ PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED
แสดงถึงผลลัพธ์ที่สำเร็จ ซึ่งแอปของคุณอาจดำเนินการต่อเพื่อขอความสามารถระดับพรีเมียมที่เลือก
รหัสผลลัพธ์ในรายการต่อไปนี้แสดงคำขอซื้อที่ไม่สำเร็จ ดูข้อมูลเพิ่มเติมเกี่ยวกับ API ได้ที่ข้อมูลอ้างอิง 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
หากคำขอซื้อไม่สำเร็จ แอปอาจใช้เครือข่ายเริ่มต้นแทน จะไม่มีลักษณะการทำงานสำรองอัตโนมัติหากไม่สามารถส่งคำขอข้อมูลส่วนที่เป็นพรีเมียมได้
ขั้นตอน UX สำหรับการแบ่งกลุ่มเพื่อขายอัปเซล
![ขั้นตอน UX จะแสดงการแจ้งเตือนที่เปิดเว็บชีตของผู้ให้บริการซึ่งผู้ใช้จะทำการซื้อให้เสร็จสมบูรณ์ได้](https://developer.android.com/static/images/develop/connectivity/5g/upsell-ux-flow.png?hl=th)