2016-05-27 114 views
0

我想創建帶有通知的Ionic應用程序。 我安裝PushPlugin,這是我的控制器:離子 - 推送通知 - 'pushNotification'的undefined

.controller('MainCtrl', function($scope,$ionicPlatform,$cordovaPush) { 
    $ionicPlatform.ready(function() { 
    var androidConfig = { 
     "senderID": "ID" 
    }; 

     $cordovaPush.register(androidConfig).then(function(result) { 
     // Success 
     console.log(result); 
     }, function(err) { 
     // Error 
     }); 
    }) 
}); 

通過離子發球我有錯誤運行後:

ng-cordova.js:6180 Uncaught TypeError: Cannot read property 'pushNotification' of undefined

我找到了一些解決方案,所以我修改我的代碼:

的index.html(僅頭標記):

<head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> 
    <title></title> 
    <link href="css/ionic.app.css" rel="stylesheet"> 

    <script src="lib/ionic/js/ionic.bundle.js"></script> 

    <script src="lib/ngCordova/dist/ng-cordova.js"></script> 

    <script src="cordova.js"></script> 
    <!-- copy from plugin www folder --> 
    <script src="js/libs/PushNotification.js"></script> 

    <script src="js/app.js"></script> 
    <script src="js/controllers.js"></script> 
</head> 

和我的控制器:

.controller('MainCtrl', function($scope,$ionicPlatform,$cordovaPush) { 
    $ionicPlatform.ready(function() { 
    var androidConfig = { 
     "senderID": "ID" 
    }; 

     if (window.plugins && window.plugins.pushNotification){ 
      console.log("plugins"); //it displays 
      $cordovaPush.register(androidConfig).then(function(result) { 
      // Success 
      console.log(result); 
      }, function(err) { 
      // Error 
      }); 
     } 
    }) 
}); 

現在,我已經有了:

Uncaught ReferenceError: cordova is not defined

我很困惑,怎麼辦好呢。

插件列表:

com.phonegap.plugins.PushPlugin 2.5.0 "PushPlugin" 
cordova-plugin-console 1.0.3 "Console" 
cordova-plugin-device 1.1.2 "Device" 
cordova-plugin-splashscreen 3.2.2 "Splashscreen" 
cordova-plugin-statusbar 2.1.3 "StatusBar" 
cordova-plugin-whitelist 1.2.2 "Whitelist" 
ionic-plugin-keyboard 2.2.0 "Keyboard" 
+0

嘗試此鏈接https://devdactic.com/ionic-push-notifications-guide/ –

回答

0

確認以下內容:

1 ..添加離子平臺的Web客戶端,並通過運行以下命令行推插件:

ionic add ionic-platform-web-client 
ionic plugin add phonegap-plugin-push --variable SENDER_ID="GCM_PROJECT_NUMBER" 

2 ..通過運行以下命令行爲您的應用程序分配ID:

ionic io init 

3 ..調試設置爲true,能在瀏覽器

ionic config set dev_push true 

4測試。在運行安裝程序的推送註冊()方法

angular.module('app', ['ionic','ionic.service.core' ]) 
.run(function($ionicPlatform) { 

    $ionicPlatform.ready(function() { 
     var push = new Ionic.Push({ 
     "debug": true 
     }); 

     push.register(function(token) { 
     console.log("My Device token:",token.token);   
     push.saveToken(token, {'ignore_user': true}) ; // persist the token in the Ionic Platform 
     }); 
    }); 

}) 

測試你推,如果它在瀏覽器中運行,請禁用調試並在設備上開始測試。

ionic config set dev_push false 

完全指南http://docs.ionic.io/docs/push-quick-start

+0

我看了這個文件,但它是唯一正確的解決方案?怎麼樣使用另一個cordova插件? – IceManSpy

+0

我不確定我是否理解你的問題,你會澄清更多嗎? –

+0

是的它的工作正常,你只需要一步一步,開始檢查什麼console.log(「我的設備令牌:」,token.token);顯示並且它是否返回令牌。 –