Plugin Marketplace

nativephp/mobile-firebase

Firebase plugin for NativePHP Mobile (Push notifications via FCM/APNs)

#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

  1. Create a Firebase project at Firebase Console
  2. Add your Android app to the project
  3. Download google-services.json and place it in your project root
  4. The plugin compiler will automatically copy it to the Android project

#iOS Setup

  1. In your Firebase project, add your iOS app
  2. Download GoogleService-Info.plist and place it in your project root
  3. Enable Push Notifications capability in your Apple Developer account
  4. The plugin compiler will handle the configuration

#Usage

#PHP (Livewire/Blade)

Copied!
use Native\Mobile\Facades\PushNotifications;
 
// Enroll for push notifications
PushNotifications::enroll();
 
// Get current token
$token = PushNotifications::getToken();

#JavaScript (Vue/React/Inertia)

Copied!
import { pushNotifications, on, off, Events } from '#nativephp';
 
// Basic enrollment
await pushNotifications.enroll();
 
// With identifier for tracking
await pushNotifications.enroll()
.id('main-enrollment')
.remember();
 
// Get current token
const 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

  1. User taps "Enable Notifications"
  2. App calls enroll()
  3. System shows permission dialog
  4. If granted, FCM generates token
  5. TokenGenerated event fires with token
  6. App sends token to backend
  7. Backend stores token for user
  8. 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