web-dev-qa-db-fra.com

Ionic 3.x: la notification push sur iOS ne fonctionne pas (fonctionne sur Android?) Ionic Native Plugin Push

Bonjour tout le monde: léger_smile:

J'utilise/j'essaie d'utiliser Ionic Native Push avec Firebase Cloud Messaging .

(Je crois), j’ai correctement installé le plug-in Ionic Native Push. Au moins, lorsque j’ai testé l’envoi de notifications Push, cela fonctionnait sous Android.

Voici mon code:

import { Injectable } from '@angular/core';
import { Push, PushObject, PushOptions } from '@ionic-native/Push';
import { AlertController } from 'ionic-angular';

@Injectable()
export class FcmProvider {

  constructor(private Push: Push,
              private alertCtrl: AlertController) {
    this.getPermission();
  }

  getPermission() {
    this.initPush();
    this.Push.hasPermission().then((res: any) => {
      if (res.isEnabled) {
        console.log('We have permission to send Push notifications');
      } else {
        console.log('We do NOT have permission to send Push notifications');
        this.presentErrorAlert();
      }
    });
  }

  private initPush() {
    const options: PushOptions = {
      Android: {},
      ios: {
          alert: 'true',
          badge: true,
          sound: 'false'
      },
      windows: {},
      browser: {
          pushServiceURL: 'http://Push.api.phonegap.com/v1/Push'
      }
    };
    const pushObject: PushObject = this.Push.init(options);

    pushObject.on('notification').subscribe((notification: any) => {
      console.log('Received a notification', notification);
      this.presentSuccessAlert(notification.message);
    });

    pushObject.on('registration').subscribe((registration: any) => console.log('Device registered', registration));

    pushObject.on('error').subscribe(error => console.error('Error with Push plugin', error));
  }

  private presentErrorAlert(): void {
    let errorAlert = this.alertCtrl.create({
      title: "Error",
      subTitle: "Wir bekamen kein Token.",
      buttons: ["Mies..."]
    });
    errorAlert.present();
  }

  private presentSuccessAlert(message: string): void {
    let alert = this.alertCtrl.create({
      title: "Neue Benachrichtigung",
      message: message,
      buttons: [
        {
          text: "Abbrechen",
          role: "cancel",
          handler: () => {
            console.log("Cancel clicked");
          }
        },
        {
          text: "Ansehen",
          handler: () => {
            console.log("Show clicked");
          }
        }
      ]
    });
    alert.present();
  }

}

Et lorsque j'utilise XCode pour déboguer sur iOS, je reçois les messages suivants:

Push Plugin VoIP missing or false
Push Plugin register called
PushPlugin.register: setting badge to false
PushPlugin.register: clear badge is set to 0
PushPlugin.register: better button setup
FCM Sender ID <my-id>
Using FCM Notification
4.11.0 - [Firebase/Core][I-COR000003] The default Firebase app has not yet been configured. Add `[FIRApp configure];` (`FirebaseApp.configure()` in Swift) to your application initialization. Read more: <some-shortened-url>.
4.11.0 - [Firebase/Analytics][I-ACS023007] Firebase Analytics v.40100000 started
4.11.0 - [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see <some-shortened-url>)
4.11.0 - [Firebase/Messaging][I-FCM001000] FIRMessaging Remote Notifications proxy enabled, will swizzle remote notification receiver handlers. If you'd prefer to manually integrate Firebase Messaging, add "FirebaseAppDelegateProxyEnabled" to your Info.plist, and set it to NO. Follow the instructions at:
https://firebase.google.com/docs/cloud
-messaging/ios/client#method_swizzling_in_firebase_messaging
to ensure proper integration.
FCM Registration Token: <my-token>
We have permission to send Push notifications
Push Plugin register success: <some-id>
Device registered [object Object]

Donc, en ce qui me concerne, tout semble bien fonctionner. Toute aide sur la raison pour laquelle les notifications Push ne sont pas envoyées serait très appréciée!

De plus, voici quelques spécifications pour mon système:

pdate: After some googling, here is additional information. Still can’t get it to work though!

- FirebaseInstanceID (2.0.10)
- FirebaseMessaging (2.0.8):
cli packages: (/usr/local/lib/node_modules)

    @ionic/cli-utils  : 1.19.2
    ionic (Ionic CLI) : 3.20.0

global packages:

    cordova (Cordova CLI) : 7.1.0 

local packages:

    @ionic/app-scripts : 3.1.8
    Cordova Platforms  : Android 7.1.0 ios 4.5.4
    Ionic Framework    : ionic-angular 3.9.2

System:

    ios-deploy : 1.9.2 
    ios-sim    : 6.1.2 
    Node       : v9.4.0
    npm        : 5.8.0 
    OS         : macOS High Sierra
    Xcode      : Xcode 9.3 Build version 9E145 

Environment Variables:

    Android_HOME : not set

Misc:

    backend : pro
3
J. Hesters

Je n'ai pas configuré la clé iOS. Voici les instructions destinées aux futurs visiteurs de cette question:) https://firebase.google. com/docs/cloud-messaging/ios/certs

2
J. Hesters

tout d’abord, vous vérifiez si le jeton de registre d’imprimante est reçu ou non, puis ajoutez FirebaseAppDelegateProxyEnabled à YES, puis essayez d’envoyer une notification Push via le facteur.

  "notification":{
    "title":"Notification title",
    "body":"Notification body",
    "sound":"default",
    "click_action":"FCM_PLUGIN_ACTIVITY",
    "icon":"fcm_Push_icon"
  },
  "data":{
    "param1":"value1",
    "param2":"value2"
  },
    "to":"<token>",
    "priority":"high",
    "restricted_package_name":""
}

si obtenir l'erreur InvalidApnsCredential, alors le problème n'est pas votre plugin

vous devez ajouter (créer) votre clé de développement Apple avec autorisation de notification Push https://developer.Apple.com/account/ios/authkey/

et préfixe d'identifiant d'application https://developer.Apple.com/account/ios/identifier/bundle

vers l'application iOS de Firebase: Console Firebase -> Projet -> Paramètres -> Messagerie en nuage -> Configuration de l'application iOS

0
Manthan Vaghani