#Firebase Plugin for NativePHP Mobile
Push notifications via Firebase Cloud Messaging (FCM) for Android and Apple Push Notification service (APNs) for iOS.
#Overview
The PushNotifications API handles device registration for Firebase Cloud Messaging to receive push notifications.
#Installation
Copied!
composer require nativephp/mobile-firebase
#Configuration
#Android Setup
- Create a Firebase project at Firebase Console
- Add your Android app to the project
- Download
google-services.jsonand place it in your project root - The plugin compiler will automatically copy it to the Android project
#iOS Setup
- In your Firebase project, add your iOS app
- Download
GoogleService-Info.plistand place it in your project root - Enable Push Notifications capability in your Apple Developer account
- The plugin compiler will handle the configuration
#Usage
#PHP (Livewire/Blade)
Copied!
use Native\Mobile\Facades\PushNotifications; // Enroll for push notificationsPushNotifications::enroll(); // Get current token$token = PushNotifications::getToken();
#JavaScript (Vue/React/Inertia)
Copied!
import { pushNotifications, on, off, Events } from '#nativephp'; // Basic enrollmentawait pushNotifications.enroll(); // With identifier for trackingawait pushNotifications.enroll() .id('main-enrollment') .remember(); // Get current tokenconst result = await pushNotifications.getToken();const token = result.token; // APNS token on iOS, FCM token on Android
#Events
#TokenGenerated
Fired when a push notification token is successfully generated.
PHP
Copied!
use Native\Mobile\Attributes\OnNative;use Native\Mobile\Events\PushNotification\TokenGenerated; #[OnNative(TokenGenerated::class)]public function handlePushToken(string $token){ // Send token to your backend $this->sendTokenToServer($token);}
Vue
Copied!
import { on, off, Events } from '#nativephp';import { onMounted, onUnmounted } from 'vue'; const handleTokenGenerated = (payload) => { const { token } = payload; // Send token to your backend sendTokenToServer(token);}; onMounted(() => { on(Events.PushNotification.TokenGenerated, handleTokenGenerated);}); onUnmounted(() => { off(Events.PushNotification.TokenGenerated, handleTokenGenerated);});
React
Copied!
import { on, off, Events } from '#nativephp';import { useEffect } from 'react'; const handleTokenGenerated = (payload) => { const { token } = payload; // Send token to your backend sendTokenToServer(token);}; useEffect(() => { on(Events.PushNotification.TokenGenerated, handleTokenGenerated); return () => { off(Events.PushNotification.TokenGenerated, handleTokenGenerated); };}, []);
#Permission Flow
- User taps "Enable Notifications"
- App calls
enroll() - System shows permission dialog
- If granted, FCM generates token
TokenGeneratedevent fires with token- App sends token to backend
- Backend stores token for user
- Server can now send notifications to this device
#Best Practices
- Request permission at the right time (not immediately on app launch)
- Explain the value of notifications to users
- Handle permission denial gracefully