带有phonegap-plugin-push和Firebase的Cordova iOS通知。没有工作

时间:2018-11-07 14:55:36

标签: ios firebase cordova firebase-cloud-messaging phonegap-plugins

我已经用Visual Studio Code创建了一个cordova项目。我正在使用这个插件: phonegap-plugin-push,并且按照说明进行操作。

我需要使用通知。我正在使用Firebase,并下载了google-services.json,放到了我的根目录中,在Android上运行,并通过Firebase云消息传递进行了测试。一切正常。

问题:iOS。我已经下载了GoogleService-Info.plist,放在我的根项目和根平台ios中。 从Apple开发人员控制台下载了p8证书,并将其放在Firebase控制台上:

enter image description here

因此,当我在index.js上启动它时,ondeviceready:

onDeviceReady: function() {
    this.receivedEvent('deviceready');
    //alert("ciao");

    app.push = PushNotification.init({
        "android": {
            "senderID": "xxxx"
        },
        "ios": {
          "senderID": "xxxx",
          "sound": true,
          "vibration": true,
          "badge": true
        },
        "windows": {}
    });

    app.push.on('registration', function(data) {
        alert(data.registrationId);
        console.log("registration event: " + data.registrationId);
        document.getElementById("regId").innerHTML = data.registrationId;
        var oldRegId = localStorage.getItem('registrationId');
        if (oldRegId !== data.registrationId) {
            // Save new registration ID
            localStorage.setItem('registrationId', data.registrationId);
            // Post registrationId to your app server as the value has changed
        }
    });

    app.push.on('notification', function(data) {
        console.log('notification event');
        alert("qualcosa ricevuto: " + data.message + data.title);
    });

    app.push.on('error', function(e) {
        //console.log("push error = " + e.message);
        alert("push error = " + e.message);
    });
}

我在iOS设备(iPad和iPhone)上收到令牌,但是当我尝试从Firebase测试令牌时,我看不到我的设备已注册令牌。 为什么?我在做什么错了?

1 个答案:

答案 0 :(得分:0)

我假设您使用的是最新版本的cordova-plugin-push(v2.2.3)?

您是否将以下内容包含在Cordova的config.xml中?

<platform name="ios">
    <resource-file src="GoogleService-Info.plist" />
</platform>

如果失败,请在您的data.registrationType回调中检查.on('registration')的值。该值应为FCM。如果返回APNS,则registrationId将是原始的APNs令牌,而不是Firebase令牌,在这种情况下,配置中的内容将不正确。