5G ネットワーク スライシングにより、 特定の用途でネットワーク パフォーマンスを向上させて 対応できますこのガイドでは、アプリがネットワーク スライシング アップセルの UX をトリガーする方法について説明します フローし、ユーザーが購入を決定した場合にプレミアム接続をリクエストします。
プレミアム機能のインテントを宣言する
ネットワーク機能に関するアプリのリクエストに対応するには、
アプリ マニフェストでその機能をリクエストするインテントを宣言する必要があります。
それ以外の場合、ネットワーク リクエストは 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>
ネットワーク スライシング アップセル フローをトリガーする
このコードサンプルは、アップセル フローをトリガーし、 有料機能を購入しました。
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
を返します。
アップセルを使用して携帯通信会社から機能を購入できるかどうか。
通知ワークフローに進みます
ステップ 2: アップセル通知フローを開始する
プレミアム機能が利用できることを確認したら、アプリは
purchasePremiumCapability()
アップセル通知フローを開始します。ユーザーがまだ購入していない場合
すべての前提条件が満たされている場合、プラットフォームは
パフォーマンス ブースト オプションを知らせる通知がユーザーに表示されます
利用できる場合があります。ユーザーが通知をタップすると、
購入プロセスを続行できるように、携帯通信会社の WebView が開きます。
purchasePremiumCapability()
に渡される parameter
コールバックは、
購入リクエストの結果コードを返します
結果コード
PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS
および
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED
成功した場合は、アプリがリクエスト
プレミアム機能に限られます。
以下の結果コードは、失敗した購入リクエストを表します。詳しくは、 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
ステップ 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 |
購入リクエストが失敗した場合、アプリはデフォルトのリクエストを使用し、それを使用する必要があります。 ネットワークを使用してください。プレミアム スライスが新しいスライスの場合は、 処理できません。