PushPlugin TypeError: Object #<Object> has no method ''exec

后端 未结 2 415
攒了一身酷
攒了一身酷 2020-12-22 04:14

Background

  1. I installed PushPlugin. According to the docs I used automatic installation. But when I run cordova run android, Ja

相关标签:
2条回答
  • 2020-12-22 04:45

    I finally realized that the error was due to the EventListener for deviceready. I changed

      if ('device is android') {
            document.addEventListener("deviceready", this.onDeviceReady(), false);
      }
    

    to

      document.addEventListener("deviceready", this.onDeviceReady, false);
    

    and everything fell right into place. Though this is a careless mistake, I still leave this question and it's answers for others who might encounter this issue

    0 讨论(0)
  • 2020-12-22 04:49

    I can't really see, why ur solution is not working. The only thing I can provide is my working solution. There might be some redundancies or unnecessary things in there, because I myself tried 35 Versions before I got it working:

    First Thing is I attach to pg events in an App Initializer and register my Notification Services:

    Ember.Application.initializer({
        name: 'phonegap',
    
        /* ...... */
    
        initialize: function(container, application){
            // Push
            container.register('notification:manager', GambifyApp.NotificationManager, { singleton: true });
            container.register('notification:handler', GambifyApp.NotificationHandler, { instantiate: false });
            container.injection('notification:handler', 'appController', 'controller:application');
            container.injection('notification:handler', 'commentRoute', 'route:usergroup.comment');
        }
    }
    

    Then my Manager Service is registering the the device:

    GambifyApp.NotificationManager = window.GambifyApp.NotificationManager = Ember.Object.extend({
        init: function(){
            //var self = this;
            var pushNotification = Ember.get(window, 'plugins.pushNotification');
            if(!Ember.isEmpty(pushNotification)){
                if ( device.platform == 'android' || device.platform == 'Android' )
                {
                    pushNotification.register(
                        this.successHandler,
                        this.errorHandler, {
                            "senderID":GambifyApp.config.android_sender_id,
                            "ecb":"window.GambifyApp.NotificationHandler.onNotificationGCM"
                        });
                }
            } else {
                Ember.Logger.error('pushNotification Plugin not running');
            }
            GambifyApp.NotificationHandler.manager = this;
        },
    
        successHandler: function (result) { },
    
        errorHandler: function (error) {
            Ember.Logger.error('Error while registering with push:' + error);
        },
    });
    

    Then in a case of success the ECB is called with the device ID which is could by my handler:

    GambifyApp.NotificationHandler =  window.GambifyApp.NotificationHandler = {
    
        manager: null,
    
        onNotificationGCM: function(e){
            console.log('---------- GCM Event:-----------');
            console.log(e);
    
            if(e.event === "registered") {
                console.log(e.regid); // Registraion ID
            }
        },
    
    };
    

    Hope this might help.

    0 讨论(0)
提交回复
热议问题