להציע למשתמש לבצע חלוקה של המכירה (upsell) ברשת

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

בתהליך חוויית המשתמש מוצגת למשתמש התראה שפותחת ספק
       בגיליון האינטרנט שבו ניתן להשלים את הרכישה.
איור 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>

הפעלת תהליך הפילוח של רשת ה-upsell

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

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

בקטעים הבאים מתוארים השלבים המעורבים בתהליך זה מפורט.

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

קוראים לפונקציה isPremiumCapabilityAvailableForPurchase() שיטת ה-API לקביעת אם יכולת הפרימיום שנבחרה זמינה. השיטה הזו מחזירה את הערך true אם היכולת זמינה לרכישה מהספק באמצעות האפשרות של מכירת מוצר או שירות נוסף (upsell) תהליך עבודה של התראות.

שלב 2: מפעילים את תהליך ההתראה על upsell

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

הקריאה החוזרת של parameter שהועברה אל purchasePremiumCapability() מחזירה התוצאה של בקשת הרכישה.

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

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

שלב 3: מבקשים חיבור פרימיום שנרכש

אם תהליך ההתראה להגדלת המכירה מחזיר קוד תקין (PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS או PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED), האפליקציה צריכה להשתמש requestNetwork() כדי לבקש רשת שעומדת בדרישות של היכולת המבוקשת. שימו לב שכאשר בונים אובייקט NetworkRequest, היכולת שמוסיפים לא זהה יכולת שמועברת לממשקי ה-API של TelephonyManager בשלבים הקודמים. הטבלה הבאה ממפה את הקבועים מהמחלקה TelephonyManager אל קבועים תואמים ב-NetworkCapabilities.

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

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