שימוש בחלוקה לפרוסות ברשת

חלוקת רשתות 5G מאפשרת לספקים לספק שיפורים בביצועי הרשת בתרחישי שימוש ספציפיים. במדריך הזה נסביר איך אפליקציה יכולה להשתמש בתכונה 'חיתוך רשתות'.

המדריך הזה מכיל גם הסבר על הפעלת תהליך ממשק המשתמש של שדרוג מנוי לחיתוך הרשת במקרים שבהם נדרש רכישה כדי שהאפליקציה תוכל לגשת לחיבור הפרימיום.

שלב 1: הצהרת כוונות לשימוש ביכולות פרימיום

כדי שנוכל לאשר את הבקשה של האפליקציה שלכם ליכולת חיתוך ברזולוציה גבוהה, האפליקציה צריכה להצהיר על הכוונה שלה לבקש את היכולת הזו במניפסט של האפליקציה. אחרת, בקשת הרשת נכשלת עם הודעת השגיאה SecurityException.

כדי לעשות זאת, צריך להצהיר על המאפיין PackageManager.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES בקובץ AndroidManifest.xml ולכלול קובץ משאבים תואם בפורמט XML.

הצהרת יכולת בקובץ המניפסט נראית כך:

<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 זמינה

קוראים ל-method של 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, היכולת שמוסיפים לא זהה ליכולת שמעבירים ל-API של TelephonyManager. בטבלה הבאה מפורטת המיפוי של הקבועים מהקלאס TelephonyManager לקבועים התואמים ב-NetworkCapabilities.

קבוע TelephonyManager קבוע NetworkCapabilities
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY NET_CAPABILITY_PRIORITIZE_LATENCY

שלב 3: אם האפשרות של מינוי Premium לא זמינה, בודקים את הזמינות לרכישה

קוראים ל-method API‏ isPremiumCapabilityAvailableForPurchase() כדי לקבוע אם היכולת הפרימיום שנבחרה זמינה. השיטה הזו מחזירה את הערך 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(). אם המשתמש עדיין לא רכש את היכולת שצוינה וכל התנאים המוקדמים מתקיימים, המערכת תציג למשתמש התראה על כך שיכול להיות שיש אפשרויות לשיפור הביצועים אצל הספק שלו. אם המשתמש מקייש על ההתראה, הפלטפורמה פותחת את תצוגת האינטרנט של הספק כדי שתהליך הרכישה יוכל להמשיך.

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;
        }
    });
}

פונקציית ה-callback‏ parameter שמועברת אל purchasePremiumCapability() מחזירה קוד תוצאה לבקשת הרכישה.

קודי התוצאות PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS ו-PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED מייצגים תוצאות מוצלחות, שבהן האפליקציה יכולה להמשיך ולבקש את היכולת בתשלום שנבחרה.

קודי התוצאות ברשימה הבאה מייצגים בקשות רכישה שנכשלו. מידע נוסף זמין במסמך העזרה של ה-API.

אם בקשת הרכישה נכשלת, יכול להיות שהאפליקציה תשתמש ברשת ברירת המחדל במקום זאת. אם לא ניתן למלא את הבקשה לחלק פרימיום, לא מתבצעת פעולה אוטומטית של חזרה למצב קודם.

תהליך UX למכירת מוצר או שירות נוסף (upsell) לפי פילוח

בתהליך חוויית המשתמש מוצגת למשתמש התראה שפותחת גיליון אינטרנט של ספק שבו הוא יכול להשלים את הרכישה.