push.on('registration')在android上不起作用

时间:2018-07-19 11:00:21

标签: javascript cordova cordova-plugins

我正在开发一个应用程序,需要它来用register ID保存设备的push.on('registration'),以便将来我可以使用它发送通知。它可用于 IOS ,但不能用于 Android

var scripts = {
initialize: function () {
    this.bindEvents();
},
bindEvents: function () {
    document.addEventListener('deviceready', this.onDeviceReady, false);
    document.addEventListener('deviceregistered', this.onDeviceRegistered, false);
},
onDeviceReady: function () {

    window.open = cordova.InAppBrowser.open;

    screen.orientation.lock('portrait');

    var w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
    var viewport = document.getElementById("viewport");
    if (w < 320) {
        viewport.setAttribute('content', 'width=device-width, initial-scale=0.68, user-scalable=no');
    }

    navigator.splashscreen.hide();

    setTimeout(function () {
        scripts.setupPush();
    }, 1000);

},
setupPush: function () {
    var push = PushNotification.init({
        "android": {
            "senderID": "125487585225"/*,
             "icon": "twitter",
             "iconColor": "red" */
        },
        "browser":{},
        "ios": {
            "senderID": "125487585225",
            "gcmSandbox": false,
            "sound": true,
            "vibration": true,
            "badge": true,
            "alert": true
        },
        "windows": {}
    });

    push.on('registration', function (data) {
        alert('teste');
        $.post( webService + 'Registro_Dispositivo/Salvar', {
            "id": data.registrationId,
            "plataforma": device.platform
        }) .always (function (){
            window.localStorage.setItem(appnome + "-registrationId", data.registrationId);
        });
    });

    push.on('notification', function (data) {
        var href = '#/' + data.additionalData.link;
        window.location.href = href;
        alert('notification');
    });

    push.register(function(){
        alert('register');
        alert("OK");
    }, function(){
        alert("Erro");
    });

    PushNotification.hasPermission(function(data){
        alert(data.isEnabled);
        alert('tem permissão');
    });

    push.on('error', function (e) {
        alert("Erro no Push = " + e.message);
        // console.log(data.registrationId);
    });
},
onDeviceRegistered: function (evt) {
    // alert('Device Registered');
    console.log('aqui');
    localStorage.setItem(appnome + '-devicePushId', evt.devicePushId);
    localStorage.setItem(appnome + '-devicePushToken', evt.devicePushToken);
}
};


scripts.initialize();

如上所述,该代码在IOS上运行良好,但是当我在android上执行该代码时却什么也没有发生,就像根本没有任何动作一样。

谢谢。

2 个答案:

答案 0 :(得分:4)

确保已在应用程序位置添加了“ google-services.json”文件。 另外,请验证您的Firebase帐户(https://console.firebase.google.com/)是否包含“ com.yourapp.name”之类的应用包名称。 验证后,请重新构建应用。

答案 1 :(得分:3)

在连接设备的情况下调试应用程序时,控制台中的输出是什么?

无论如何,要确保推插件能够正常工作,有很多事情要做。除了添加google-services.json文件之外,您可能还需要编辑config.xml。另外,安装插件的操作很大程度上取决于您未提及的cordova CLI和cordova-android版本。

请确保您已经从上至下完整阅读了插件的Installation页面,并且一定会找到问题所在。