Location services for NativePHP Mobile: one-shot position, foreground streaming, background recording that survives app kills and reboots, and a keyless native map component.
v2.x requires
nativephp/mobilev4.0+ (the native-UI runtime). >
Location services for NativePHP Mobile: one-shot position, foreground streaming, background recording that survives app kills and reboots, and a keyless native map component.
v2.x requires
nativephp/mobilev4.0+ (the native-UI runtime). >
| <script setup lang="ts"> | |
| import { Head } from '@inertiajs/vue3'; | |
| import { router } from '@inertiajs/vue3' | |
| import { onMounted, ref } from 'vue'; | |
| import Native from '../../../public/vendor/nativephp-mobile/native'; | |
| import { storeAudio } from '@/actions/App/Http/Controllers/StoreMediaController'; | |
| const results = ref<Record<string, any>>({}); | |
| const loading = ref<Record<string, boolean>>({}); |
| <?php | |
| namespace Native\Mobile\Http\Controllers; | |
| use Illuminate\Http\Request; | |
| class NativeCallController | |
| { | |
| public function __invoke(Request $request) | |
| { |
| <!DOCTYPE html> | |
| <html lang="en" class="bg-red-500"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> | |
| <meta name="csrf-token" content="{{ csrf_token() }}"> | |
| <title>TeslaFido</title> | |
| <script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script> | |
| <style> | |
| :root { |
| <div class="mt-8"> | |
| <h2 class="text-xl font-bold mb-4">Real API Lazy Loading Test</h2> | |
| <p class="text-sm text-gray-600 mb-4">This test fetches real data from restful-api.dev API, similar to the Discord example. Watch for red skeleton placeholders followed by actual product data.</p> | |
| <div class="grid grid-cols-1 gap-6"> | |
| {{-- Immediate Lazy Load --}} | |
| <div class="space-y-3"> | |
| <h3 class="text-lg font-semibold text-green-700">🎬 Immediate Lazy Load</h3> | |
| <p class="text-sm text-gray-600">Should show red skeleton placeholders, then load movie list immediately</p> |
| <div class="space-y-4"> | |
| @if($error) | |
| <div class="p-4 bg-red-50 border border-red-200 rounded-lg"> | |
| <h3 class="text-lg font-semibold text-red-800 mb-2">❌ API Error</h3> | |
| <p class="text-sm text-red-600">{{ $error }}</p> | |
| </div> | |
| @elseif($loaded) | |
| <h3 class="text-lg font-semibold mb-4">📱 Tech Products (Real API Data)</h3> | |
| @foreach($products as $product) |
| <?php | |
| namespace App\Livewire; | |
| use Livewire\Component; | |
| use Illuminate\Support\Facades\Http; | |
| class MovieList extends Component | |
| { | |
| public $products = []; |
As we enter the final week of Early Access pricing for NativePHP, we’re reflecting on how far we’ve come — and what’s still ahead.
To every developer who believed in this mission from the beginning: thank you. Your support gave us the space to build something bold — a way for Laravel and PHP developers to build real mobile apps, with the tools they already know and love.
About a month ago, we crossed a huge milestone: over $100,000 in revenue from Early Access sales. That’s not just a number — it’s proof that this community believes in the future we’re building together.
And just days ago, we hit another milestone: 1,000 licenses sold!
| $excludedDirs = PHP_OS_FAMILY === 'Darwin' | |
| ? array_merge(config('nativephp.cleanup_exclude_files'), ['.git', 'node_modules']) | |
| : array_merge(config('nativephp.cleanup_exclude_files'), ['.git', 'node_modules', 'nativephp', 'vendor/nativephp/mobile/resources']); |
| <?php | |
| use Illuminate\Database\Migrations\Migration; | |
| use Illuminate\Database\Schema\Blueprint; | |
| use Illuminate\Support\Facades\DB; | |
| use Illuminate\Support\Facades\Schema; | |
| return new class extends Migration | |
| { | |
| /** |