Ionic 3.x:iOS上的推送通知不起作用(在Android上可以使用吗?)Ionic Native Plugin Push

J. *_*ers 5 push-notification ios phonegap-plugins firebase-cloud-messaging ionic3

大家好:slight_smile:

我正在/尝试将Ionic Native PushFirebase Cloud Messaging一起使用

(我相信)我正确安装了Ionic Native Push插件。至少当我测试发送推送通知时,它可以在Android上运行。

这是我的代码:

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();
  }

}
Run Code Online (Sandbox Code Playgroud)

当我在iOS上使用XCode进行调试时,会收到以下消息:

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]
Run Code Online (Sandbox Code Playgroud)

就我而言,一切似乎都正常。对于为什么不通过推送通知的任何帮助,将不胜感激!

此外,这是我系统的一些规格:

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
Run Code Online (Sandbox Code Playgroud)

J. *_*ers 5

弄清楚了!我没有配置iOS密钥。以下是此问题未来访问者的说明:) https://firebase.google.com/docs/cloud-messaging/ios/certs