Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

[@nativescript/firebase-messaging-core][iOS] Notification token is regenerated after app is killed

Offen
#276 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
25/100
Issue-Typ
Bug
Klarheit
Muss geklärt werden
Aktivitätsstatus
Veraltet
Tech-Stack
ios, typescript
Bereich
mobile

Rechercherichtung

Beginne in main.ts und verfolge firebase().messaging().registerDeviceForRemoteMessages() und getToken() während der Initialisierung. Reproduziere den ersten und die darauffolgenden iOS-Starts, überprüfe die Paketversionen in package.json und die beiden Token-Ergebnisse. Als abgeschlossen gilt die Aufgabe, wenn Benachrichtigungen beim ersten Start funktionieren und getToken() nach dem Beenden und erneuten Starten der App stabil bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

There is a weird behavior with our app about the notification token in iOS only.
We have search everywhere to find for a fix for this issue but we didn't find anything.
When I launch the first time the app, I get the notification token with firebase().messaging().getToken(), then we save the token in our user database and send notification from our server.
The first time the app is launch, the notification are not received, it only works after killing the app and relaunch it again.

But that's not it!
After the second launch, if I kill the app and then launch it again, the token change!!
firebase().messaging().getToken() is called twice, the first one return the old token and the second one return the new token
According to firebase documentation, the token only change if the app is uninstalled or data is reset which is not the case

package.json:

{
  "name": "tina",
  "main": "./src/main.ts",
  "version": "1.0.0",
  "private": true,
  "dependencies": {
    "@angular/animations": "~14.3.0",
    "@angular/common": "~14.3.0",
    "@angular/compiler": "~14.3.0",
    "@angular/core": "~14.3.0",
    "@angular/forms": "~14.3.0",
    "@angular/platform-browser": "~14.3.0",
    "@angular/platform-browser-dynamic": "~14.3.0",
    "@angular/router": "~14.3.0",
    "@nativescript/angular": "^14.2.8",
    "@nativescript/camera": "^5.1.1",
    "@nativescript/core": "~8.5.0",
    "@nativescript/firebase-core": "^2.3.4",
    "@nativescript/firebase-messaging": "^2.3.4",
    "@nativescript/firebase-messaging-core": "^2.3.4",
    "@nativescript/geolocation": "^8.3.1",
    "@nativescript/imagepicker": "^3.1.1",
    "@nativescript/local-notifications": "^6.1.1",
    "@nativescript/mlkit-barcode-scanning": "^2.1.0",
    "@nativescript/mlkit-core": "^2.1.0",
    "@nativescript/theme": "~3.0.2",
    "nativescript-webview-interface": "^1.4.5",
    "rxjs": "~7.5.0",
    "zone.js": "~0.11.5"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^14.2.13",
    "@angular/compiler-cli": "~14.3.0",
    "@nativescript/android": "8.5.0",
    "@nativescript/ios": "8.6.4",
    "@nativescript/types": "~8.5.0",
    "@nativescript/webpack": "5.0.14",
    "@ngtools/webpack": "^14.2.13",
    "@types/node": "^14.18.63",
    "typescript": "^4.6.2"
  }
}

main.ts

import { platformNativeScript, registerElement, runNativeScriptAngularApp } from '@nativescript/angular';
import '@nativescript/firebase-messaging'

import { AppModule } from './app/app.module';
import { firebase } from '@nativescript/firebase-core';
import '@nativescript/firebase-messaging';
import { AuthorizationStatus } from '@nativescript/firebase-messaging';
import { setString } from '@nativescript/core/application-settings';
import { requestPermissions } from '@nativescript/camera';
import * as geolocation from '@nativescript/geolocation';
import { isIOS } from "@nativescript/core";
import { MLKitView } from '@nativescript/mlkit-core';

runNativeScriptAngularApp({
  appModuleBootstrap: () => platformNativeScript().bootstrapModule(AppModule),
});

try {
  registerElement('MLKitView', () => MLKitView);
  firebase().initializeApp().then(
    () => {
      firebase().messaging().requestPermission({
        ios: {
          alert: true,
        },
      }).then((p) => {
        if(p == AuthorizationStatus.AUTHORIZED || p == AuthorizationStatus.PROVISIONAL){
          firebase().messaging().registerDeviceForRemoteMessages();
          firebase().messaging().showNotificationsWhenInForeground = true;
          firebase().messaging().getToken().then(token => {
            setString("notificationToken", token);
          })
        }
      }).finally(() => {
        if(isIOS){
          requestPermissions().finally(() => { // for camera
            geolocation.isEnabled().then((isEnabled) => { //for gps
              if(!isEnabled){
                geolocation.enableLocationRequest(true).then(() => {
                });
              }
            })
          })
        }
      })
      console.log("firebase.init done");
    },
    error => {
      console.log(`firebase.init error: ${error}`);
    }
  );
}
catch (err) {
  console.log("err in try and catch " + err);
}

Let me know if you need something else to provide.

Vorherrschende Sprache
TypeScript
Sterne
62
Forks
53
Ø Merge
8 T. 4 Std.
Gemergte PRs (30 T.)
2

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus NativeScript/firebase

Alle Issues in NativeScript/firebase

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.