推送通知发送到控制器Angularjs

时间:2015-01-03 04:20:56

标签: javascript angularjs

我正在实施推送通知服务。我想在AngularJS中向AppCtrl控制器发送变量e.regid。 任何人都可以帮我解决这个问题..?

PushCustom.js

function onNotification(e) {
    switch (e.event) {
        case 'registered':
            if (e.regid.length > 0) {
                // Your GCM push server needs to know the regID before it can push to this device
                // here is where you might want to send it the regID for later use.
                //alert("regID = " + e.regid);
                AppCtrl(e.regid);
            }
            break;
        case 'message':

            if (e.foreground) {
               var soundfile = e.soundname || e.payload.sound;
               var my_media = new Media("/android_asset/www/" + soundfile);
                my_media.play();
            }
            break;
        case 'error':
            break;
        default:
            break;
    }
}

app.js

app.controller('AppCtrl',
                ['$scope','$http', function($scope, $http, e.regid){                
                alert(e.regid); 
                $scope.regid =  e.regid;                    
                }]);

任何人都知道如何使这项工作?谢谢!

3 个答案:

答案 0 :(得分:1)

使用AngularJS Service作为控制器之间的共享变量。 为它设置setter和getter服务。

答案 1 :(得分:0)

您可以使用广播或发射,具体取决于您的范围。并在你的控制器中捕获它。通过:https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope - broadcast,emit和$ on。

答案 2 :(得分:0)

switch (e.event) {
    case 'registered':
        if (e.regid.length > 0) {

            //******************* new line ********************//
            angular.element(document).scope().$broadcast('GCM_PUSHER',e.regid)
        }
        break;
    case 'message':

        if (e.foreground) {
           var soundfile = e.soundname || e.payload.sound;
           var my_media = new Media("/android_asset/www/" + soundfile);
            my_media.play();
        }
        break;
    case 'error':
        break;
    default:
        break;
} }

然后在您的控制器中收听广播事件:

app.controller('AppCtrl',['$scope','$http', function($scope, $http){ 

    $scope.$on('GCM_PUSHER',function($event,body){
      //*********  logic here guys *********//
    });   

}]);