The Vibes — the unofficial Laracon US Day 3 event. Early Bird tickets available until March 31!
Plugin Marketplace

nativephp/mobile-network

Network connectivity status plugin for NativePHP Mobile

Network Plugin for NativePHP Mobile#

Network connectivity status monitoring for NativePHP Mobile applications.

Overview#

The Network API provides cross-platform network connectivity status detection, including connection type and metered status.

Installation#

Copied!
composer require nativephp/mobile-network

Usage#

PHP (Livewire/Blade)#

Copied!
use Native\Mobile\Facades\Network;
 
// Get current network status
$status = Network::status();
 
if ($status->connected) {
echo "Connected via: " . $status->type;
 
if ($status->isExpensive) {
echo " (metered connection)";
}
} else {
echo "No network connection";
}

JavaScript (Vue/React/Inertia)#

Copied!
import { Network } from '#nativephp';
 
// Get current network status
const status = await Network.status();
 
if (status.connected) {
console.log(`Connected via: ${status.type}`);
 
if (status.isExpensive) {
console.log('Warning: metered connection');
}
} else {
console.log('No network connection');
}

Response Object#

The status() method returns an object with the following properties:

Property Type Description
connected boolean Whether device has network connectivity
type string Connection type: wifi, cellular, ethernet, or unknown
isExpensive boolean Whether connection is metered (e.g., cellular data)
isConstrained boolean Whether Low Data Mode is enabled (iOS only)

Examples#

Conditional Data Sync#

Copied!
use Native\Mobile\Facades\Network;
 
public function syncData()
{
$status = Network::status();
 
if (!$status->connected) {
// Handle no connection
return;
}
 
if ($status->isExpensive) {
// On cellular - sync only essential data
$this->syncEssentialData();
} else {
// On WiFi - full sync
$this->syncAllData();
}
}

JavaScript Connection Check#

Copied!
import { Network } from '#nativephp';
 
async function checkBeforeDownload() {
const status = await Network.status();
 
if (!status.connected) {
console.log('No internet connection');
return false;
}
 
if (status.isExpensive && status.type === 'cellular') {
console.log('On cellular data - consider warning user');
return false;
}
 
return true;
}

Platform Behavior#

Android#

  • Uses ConnectivityManager and NetworkCapabilities
  • isConstrained is always false (not applicable)
  • Requires ACCESS_NETWORK_STATE permission (added automatically)

iOS#

  • Uses NWPathMonitor from Network framework
  • isConstrained reflects Low Data Mode setting
  • No special permissions required