Your application requires guaranteed latency and throughput? — no, it demands strict guarantees. Medical telemedicine, industrial controllers, or AR collaboration — each scenario is critical to network parameters. 5G Network Slicing Wikipedia solves this: a dedicated virtual network resource from the operator with fixed SLAs. Slices reserve part of the radio resources (RAN), transport network (backhaul), and core (Core), guaranteeing latency down to 1 ms for URLLC or throughput up to 10 Gbps for eMBB. 3GPP TS 23.501 defines the Network Slicing architecture as an end-to-end isolation principle of network functions. Request a project assessment — our engineers will prepare an integration plan for your infrastructure.
What Network Slicing looks like in practice
The physical 5G network is divided into isolated "slices." Each slice is a separate network container with dedicated RAN, transport, and core resources. For the application this means:
- eMBB (Enhanced Mobile Broadband) — maximum throughput, up to 10 Gbps. For 4K/8K streaming, VR.
- URLLC (Ultra-Reliable Low-Latency Communication) — latency under 1 ms, reliability 99.999%. For industrial equipment control, remote surgery.
- mMTC (Massive Machine-Type Communication) — low power consumption, thousands of devices. For IoT sensors, telemetry.
Slices are only available through operator APIs that support them: in Russia — MTS, Rostelecom in pilot zones; in Europe — Deutsche Telekom, Telefonica, Vodafone. Without an operator contract and SIM card support, the slice is unavailable.
How to request Network Slicing from a mobile app?
There is no direct OS API for the developer to request a slice. The mechanism depends on the platform and operator partnership.
Android (API 33+): TelephonyManager.isDataCapable(), NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY, NET_CAPABILITY_PRIORITIZE_BANDWIDTH. With Android 13, NetworkRequest allows specifying quality requirements — the OS translates them into a slice request via the operator.
val networkRequest = NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY)
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.build()
val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
connectivityManager.requestNetwork(networkRequest, object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
// slice provided, bind sockets to this network
network.bindSocket(mySocket)
}
override fun onUnavailable() {
// slice unavailable, fallback to standard bearer
}
})
iOS: no direct API for slice request. Apple does not expose PDN connection parameters from CoreTelephony. Partner integrations via Carrier App Extensions — only for operator apps (eSIM, SIM settings). For iOS, Network Slicing is implemented through a VPN profile or specialized APN that the operator configures at the network level, not via SDK.
React Native: call native Android API through Kotlin Native Module.
Why socket binding is critical
After receiving the Network object via NetworkCallback, you must explicitly bind all network operations to this network. Otherwise, the system will choose the default bearer (LTE/5G generic).
// OkHttp: pass network.socketFactory()
val client = OkHttpClient.Builder()
.socketFactory(network.socketFactory)
.build()
// Standard Socket
val socket = Socket()
network.bindSocket(socket)
socket.connect(InetSocketAddress(host, port))
For React Native, the native module binds the socket and returns a networkHandle for the JS side. The abstraction looks like a regular HTTP client, but under the hood it's a slice.
How to verify slice quality?
After obtaining the slice, monitor actual parameters via LinkProperties and NetworkCapabilities:
connectivityManager.registerNetworkCallback(networkRequest, object : ConnectivityManager.NetworkCallback(
FLAG_INCLUDE_LOCATION_INFO
) {
override fun onCapabilitiesChanged(
network: Network,
capabilities: NetworkCapabilities
) {
val downBandwidth = capabilities.linkDownstreamBandwidthKbps // kbps
val upBandwidth = capabilities.linkUpstreamBandwidthKbps
val latency = capabilities.transportInfo // TransportInfo with latency on Android 12+
}
})
If real parameters differ from the slice SLA — log the anomaly and notify the monitoring server. For URLLC applications, slice degradation may require immediate fallback to cloud processing.
Which scenarios benefit from slicing?
Network Slicing is not universal. It's justified when standard LTE/5G does not guarantee the required characteristics. For example:
- remote robot control at a factory requires URLLC with latency <1 ms and reliability 99.999%;
- live 8K VR broadcast at a stadium — eMBB with guaranteed 10 Gbps;
- monitoring system for thousands of IoT sensors — mMTC with low power consumption.
Platform comparison: Android API allows requesting a slice in 0.5 ms, while iOS requires operator setup, taking days. Traffic savings from slicing can reach 40% with proper adaptive logic. Integration cost is comparable to a single slice license from the operator, but operational costs decrease due to guaranteed QoS.
Platform comparison: Android vs iOS
| Platform | API for slice request | Integration level | Production readiness |
|---|---|---|---|
| Android 13+ | NetworkRequest + NET_CAPABILITY_PRIORITIZE_* |
Native SDK, socket binding | Available with operator support |
| iOS | No public API | Via Carrier App Extension or VPN/APN | Only in closed partner environments |
Application architecture for slicing
Network Slicing does not replace adaptive logic — it complements. Recommended architecture:
| Layer | Component | Responsibility |
|---|---|---|
| Transport | SliceNetworkManager |
Request slice, bind sockets |
| Adaptive | QoSMonitor |
Monitor parameters, detect degradation |
| Business logic | ContentQualityAdapter |
Choose quality/mode based on current QoS |
| Fallback | StandardNetworkFallback |
Degrade to LTE/5G generic on slice loss |
Common mistakes
- Requesting an URLLC slice for tasks that don't need it. A slice with guaranteed latency below 1 ms is an expensive operator resource. For video conferencing, eMBB is sufficient.
- Not handling
onUnavailable. The slice may be unavailable (device outside 5G SA coverage, operator not supporting). The application must degrade to standard bearer without loss of functionality.
What the work includes
- Requirements analysis and slice type selection (eMBB/URLLC/mMTC).
- Native Android module development for slice request (Kotlin Native Module).
- QoS monitoring and adaptive business logic setup.
- Fallback to standard bearer implementation.
- Documentation and code samples.
- Launch support.
We are a team with over 8 years of mobile development experience and 5 completed projects integrating operator APIs. Contact us to discuss your use case.
Timeline and cost
Android Native Module + QoS monitoring + adaptive business logic: from 5 to 9 weeks with test operator infrastructure. Without access to a test 5G SA network, development is limited to mocks; full testing is not possible. Cost is calculated individually after analyzing requirements and operator infrastructure. Get a consultation — contact us via the form on our website.
Step-by-step integration algorithm
- Analyze QoS requirements (latency, throughput, reliability).
- Agree with operator on API set and test slice.
- Develop native module for slice request (Android).
- Implement QoS monitoring and adaptive logic.
- Integrate fallback mechanism.
- Test on real 5G SA network.
- Publish to App Store and Google Play with documentation.







