In this tutorial, we will integrate push notifications in an Ionic Capacitor app using Firebase. For a maintained Capacitor plugin with Firebase Cloud Messaging support, see @capgo/capacitor-firebase-messaging. Sie benötigen keinen spezifischen Dienst für dies, aber Sie müssen mehrere Dinge vorher konfigurieren. Firebase ist eine hervorragende Wahl, da sie für Android erforderlich ist und Sie leicht Benachrichtigungen senden können, ohne die Datenbank zu verwenden.
Zuerst erstellen wir eine Ionic App mit Capacitor aktiviert und legen unsere Paket-IDfest, die eindeutige Identifikator für Ihre App ist. Dann bauen wir die App und fügen die nativen Plattformen hinzu.
ionic start pushApp blank --type=angular --capacitor --package-id=com.appdactic.devpush
cd ./pushApp
ionic build
npx cap add ios
npx cap add android
Wenn Sie bereits eine App haben, können Sie die capacitor.config.json anpassen, um Ihre appId. Wenn Ihre native Ordner bereits existieren, müssen Sie jedoch die ID in allen Dateien ersetzen, in denen sie erscheint, da Capacitor nur den Ordner einmal erstellt und won’t die ID selbst aktualisieren. capacitor.config.json__CAPGO_KEEP_0__.config.json
{
"appId": "com.appdactic.devpush",
"appName": "pushApp",
"bundledWebRuntime": false,
"npmClient": "npm",
"webDir": "www",
"plugins": {
"SplashScreen": {
"launchShowDuration": 0
},
"PushNotifications": {
"presentationOptions": ["badge", "sound", "alert"]
}
},
"cordova": {}
}
können Sie auch Optionen wie die Aktualisierung der Badge-Zahl, das Abspielen eines Sounds bei Push-Benachrichtigungen und das Anzeigen einer Benachrichtigung, wenn eine Benachrichtigung eintrifft, angeben.
Now, lassen Sie uns Push-Benachrichtigungen außerhalb der App konfigurieren.
Firebase-Konfiguration Beginnen Sie damit, eine neue Firebase-Projekt zu erstellen
oder ein bestehendes zu verwenden. Geben Sie einen Namen und Standardoptionen für ein neues Projekt an. Wenn Sie ein neues App haben, sollten Sie sehen “Beginnen Sie mit der Hinzufügung von Firebase zu Ihrer App” in Ihrem App-Dashboard. Klicken Sie andernfalls auf das Zahnrad-Symbol und gehen Sie zu Projekt-Einstellungen um eine App hinzuzufügen.
Das Dialogfeld für beide iOS- und Android-Anwendungen sieht ähnlich aus, und das Wichtige ist, dass Sie Ihren Paket-Id für die Apps verwenden.
Nach dem ersten Schritt laden Sie die folgenden Dateien her:
- google-services.json Datei für Android
- GoogleService-info.plist Datei für iOS
Konfigurieren Sie als Nächstes die Plattformen.
Android-Push-Vorbereitung
Für Android verschieben Sie die google-services.json die Datei, die Sie heruntergeladen haben, in das android/app/ Ordner.
Das ist alles für Android. Jetzt konfigurieren wir iOS.
iOS-Push-Vorbereitung
Dieser Teil ist komplizierter. Zuerst, Erstellen Sie einen App-Id für Ihre App in der Liste der Identifikatoren Ihr Apple-Entwicklerkonto. Stellen Sie sicher, dass Sie die Push-Benachrichtigungsfähigkeit aus der Liste auswählen.

Die Bundle-ID sollte mit Ihrem App-Id innerhalb von Capacitor und Firebase identisch sein.
Erstellen Sie nun eine Schlüssel und aktivieren Sie das Apple Push-Benachrichtigungsdienst (APNs). Wenn Sie die maximale Anzahl von Schlüsseln erreicht haben, können Sie einen bestehenden Schlüssel oder ein Zertifikat verwenden, aber der Prozess ist komplexer.

Nach dem Herunterladen des .p8 Sie können den Schlüssel oder das Zertifikat in Ihrem iOS-Projekt verwenden, um die Push-Benachrichtigungen zu konfigurieren. Datei, laden Sie sie in Firebase hoch. Öffnen Sie die Cloud Messaging

firebase-upload-ios-key
npx cap open ios
Erstellen Sie nun Änderungen an Ihrem Xcode-Projekt, indem Sie Folgendes ausführen: Kopieren Sie die GoogleService-Info.plist-Datei, die Sie von Firebase heruntergeladen haben, in Ihr iOS-Projekt. Ziehen Sie die Datei in das Xcode-Projekt innerhalb der app/app-Folder und wählen Sie Kopieren Sie Gegenstände, wenn erforderlich.
Nächstens fügen Sie ein neues Pod für die Firebase-Abhängigkeit in der ios/App/Podfile:
target 'App' do
capacitor_pods
# Add your Pods here
pod 'Firebase/Messaging'
end
aktualisieren Sie die native Plattform mit diesem Befehl:
npx cap update ios
Ändern Sie die native Swift code in ios/App/App/AppDelegate.swift um sich bei Firebase anzumelden und den richtigen Token an Ihre App zurückzugeben.
import UIKit
import Capacitor
import Firebase
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
FirebaseApp.configure()
return true
}
// All the existing functions
// ...
// Update this one:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Messaging.messaging().apnsToken = deviceToken
InstanceID.instanceID().instanceID { (result, error) in
if let error = error {
NotificationCenter.default.post(name: Notification.Name(CAPNotifications.DidFailToRegisterForRemoteNotificationsWithError.name()), object: error)
} else if let result = result {
NotificationCenter.default.post(name: Notification.Name(CAPNotifications.DidRegisterForRemoteNotificationsWithDeviceToken.name()), object: result.token)
}
}
}
}
Schließlich fügen Sie die Fähigkeit für Push-Benachrichtigungen innerhalb Ihres Xcode-Projekts hinzu.

Now, bauen Sie Ihre App und integrieren Sie Push-Benachrichtigungen.
Ionische Push-Benachrichtigungsintegration
Erstellen Sie einen Dienst und eine neue Seite in Ihrem Ionic-Projekt:
ionic g service services/fcm
ionic g page pages/details
Aktualisieren Sie die Routen in app/app-routing.module.ts um die neue Seite mit einem dynamischen ID zu beinhalten:
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{
path: 'home',
loadChildren: () => import('./home/home.module').then( m => m.HomePageModule)
},
{
path: '',
redirectTo: 'home',
pathMatch: 'full'
},
{
path: 'home/:id',
loadChildren: () => import('./pages/details/details.module').then( m => m.DetailsPageModule)
},
];
@NgModule({
imports: [
RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
],
exports: [RouterModule]
})
export class AppRoutingModule { }
Erstellen Sie einen Dienst zum Handhaben von Push-Benachrichtigungen in services/fcm.service.ts:
import { Injectable } from '@angular/core';
import {
Plugins,
PushNotification,
PushNotificationToken,
PushNotificationActionPerformed,
Capacitor
} from '@capacitor/core';
import { Router } from '@angular/router';
const { PushNotifications } = Plugins;
@Injectable({
providedIn: 'root'
})
export class FcmService {
constructor(private router: Router) { }
initPush() {
if (Capacitor.platform !== 'web') {
this.registerPush();
}
}
private registerPush() {
PushNotifications.requestPermission().then((permission) => {
if (permission.granted) {
// Register with Apple / Google to receive push via APNS/FCM
PushNotifications.register();
} else {
// No permission for push granted
}
});
PushNotifications.addListener(
'registration',
(token: PushNotificationToken) => {
console.log('My token: ' + JSON.stringify(token));
}
);
PushNotifications.addListener('registrationError', (error: any) => {
console.log('Error: ' + JSON.stringify(error));
});
PushNotifications.addListener(
'pushNotificationReceived',
async (notification: PushNotification) => {
console.log('Push received: ' + JSON.stringify(notification));
}
);
PushNotifications.addListener(
'pushNotificationActionPerformed',
async (notification: PushNotificationActionPerformed) => {
const data = notification.notification.data;
console.log('Action performed: ' + JSON.stringify(notification.notification));
if (data.detailsId) {
this.router.navigateByUrl(`/home/${data.detailsId}`);
}
}
);
}
}
Aufrufen Sie die initPush() Funktion in app/app.component.ts:
import { Component } from '@angular/core';
import { Platform } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { FcmService } from './services/fcm.service';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss']
})
export class AppComponent {
constructor(
private platform: Platform,
private splashScreen: SplashScreen,
private statusBar: StatusBar,
private fcmService: FcmService
) {
this.initializeApp();
}
initializeApp() {
this.platform.ready().then(() => {
this.statusBar.styleDefault();
this.splashScreen.hide();
// Trigger the push setup
this.fcmService.initPush();
});
}
}
Handhaben Sie die Informationen auf der Details-Seite in pages/details/details.page.ts:
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Plugins } from '@capacitor/core';
const { PushNotifications } = Plugins;
@Component({
selector: 'app-details',
templateUrl: './details.page.html',
styleUrls: ['./details.page.scss'],
})
export class DetailsPage implements OnInit {
id = null;
constructor(private route: ActivatedRoute) { }
ngOnInit() {
this.route.paramMap.subscribe(params => {
this.id = params.get('id');
});
}
resetBadgeCount() {
PushNotifications.removeAllDeliveredNotifications();
}
}
Anzeigen Sie die Details in pages/details/details.page.html:
<ion-header>
<ion-toolbar>
<ion-buttons slot="start">
<ion-back-button defaultHref="/"></ion-back-button>
</ion-buttons>
<ion-title>Details</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
My Id from push: {{ id }}
<ion-button (click)="resetBadgeCount()" expand="block">
Reset Badge Count
</ion-button>
</ion-content>
Bauen Sie die App, synchronisieren Sie Ihre Änderungen und deployen Sie sie auf Ihrem Gerät.
ionic build
npx cap sync
Jetzt können Sie mit Firebase Pushbenachrichtigungen senden.
Pushbenachrichtigungen mit Firebase senden
Es gibt mehrere Möglichkeiten, Pushbenachrichtigungen mit Firebase zu senden.
Gerätespezifischer Test
Nachdem Sie Ihre App auf einem Gerät deployt haben, können Sie die Konsole-Logs überprüfen, um den Token nach der Registrierung zu sehen. Verwenden Sie diesen Token, um eine gezielte Test-Push zu senden und bestätigen, dass Ihre Integration funktioniert. In Firebase gehen Sie zu Cloud Messaging und wählen Sie Testnachricht senden. Fügen Sie den Geräte-Token aus den Logs hinzu.

Wenn alles korrekt eingerichtet ist, sollten Sie auf Ihrem Gerät eine Pushbenachrichtigung sehen.
Push-Nachricht mit Payload
Um eine Push-Nachricht mit zusätzlichen Informationen zu testen, folgen Sie dem Assistenten auf derselben Seite, um allgemeine Informationen zu spezifizieren und die Plattform auszuwählen, die Sie anvisieren möchten. Fügen Sie zusätzliche Optionen hinzu, um eine Payload mit Ihrer Push-Nachricht zu senden.

In der Erweiterten Optionen Sektion fügen Sie ein Benutzerdefiniertes Datenpaar hinzu. Zum Beispiel können Sie den Schlüssel detailsId und einen Wert Ihrer Wahl verwenden. Diese Daten werden im App verwendet, um zur Details-Seite mit der angegebenen ID zu navigieren.
Nachdem Sie die Push-Nachricht gesendet haben, sollte Ihre App sie empfangen und die Details-Seite mit der angegebenen ID anzeigen, wenn die Benachrichtigung angeklickt wird.
Mit Firebase API
Sie können auch push-Benachrichtigungen programmatisch über die Firebase API senden. Dazu müssen Sie die Server-Schlüssel aus Ihren Firebase-Projekt-Einstellungen unter der Cloud Messaging Karte erhalten.
Mit dem Server-Schlüssel können Sie eine POST-Anfrage an die Firebase API senden, wobei die erforderliche Payload übergeben wird. Hier ist ein Beispiel mit Node.js und der request Bibliothek:
const request = require('request');
const serverKey = 'YOUR_SERVER_KEY';
const deviceToken = 'YOUR_DEVICE_TOKEN';
const options = {
method: 'POST',
url: 'https://fcm.googleapis.com/fcm/send',
headers: {
'Content-Type': 'application/json',
Authorization: 'key=' + serverKey
},
body: JSON.stringify({
to: deviceToken,
notification: {
title: 'Test Push',
body: 'This is a test push notification with custom data'
},
data: {
detailsId: '123'
}
})
};
request(options, (error, response, body) => {
if (error) {
console.error('Error sending push:', error);
} else {
console.log('Push sent successfully:', body);
}
});
Ersatz YOUR_SERVER_KEY und YOUR_DEVICE_TOKEN context":"Page/area: Capgo Marketing-Website. Rolle: Kurze UI-Schaltfläche oder Navigationspunkt. Anzeige in: Seite trust.astro. Nachrichtsschlüssel `und` (Und)."
mit Ihrem tatsächlichen Server-Schlüssel und Geräte-Token. Führen Sie das Skript aus, und Ihr Gerät sollte die push-Benachrichtigung mit dem benutzerdefinierten Payload erhalten. Das ist alles! Sie haben erfolgreich push-Benachrichtigungen in Ihrer Ionic Capacitor-App mit Firebase integriert. Jetzt können Sie push-Benachrichtigungen an Ihre Benutzer auf beiden Android- und iOS-Plattformen senden.
Weiter mit Ionic Capacitor Push-Benachrichtigungen mit Firebase: Eine Schritt-für-Schritt-Anleitung
Wenn Sie Ionic __CAPGO_KEEP_0__ Push-Benachrichtigungen mit Firebase: Eine Schritt-für-Schritt-Anleitung verwenden Ionic Capacitor Push-Benachrichtigungen mit Firebase: Eine Schritt-für-Schritt-Anleitung Um die Migration und die Unternehmensoperationen zu planen, verbinden Sie es mit Capgo Enterprise für den Produktworkflow in Capgo Enterprise Ionic Enterprise Plugin Alternativen für den Produktworkflow in Ionic Enterprise Plugin Alternativen Capgo Alternativen für den Produktworkflow in Capgo Alternativen Capgo Consulting für den Produktworkflow in Capgo Consulting Capgo Premium Support zur Produktworkflow in Capgo Premium Support.