自上周以来,我一直试图通过使用Phonegap和AngularJS从FCM收到通知。
我可以用cordova-fcm-plugin来做,所以现在我想从消息中获取数据,他们建议使用这段代码:
FCMPlugin.onNotification(
function(data){
if(data.wasTapped){
//Notification was received on device tray and tapped by the user.
alert( JSON.stringify(data) );
}else{
//Notification was received in foreground. Maybe the user needs to be notified.
alert( JSON.stringify(data) );
}
},
function(msg){
console.log('onNotification callback successfully registered: ' + msg);
},
function(err){
console.log('Error registering onNotification callback: ' + err);
}
);
我的问题是我不知道如何将该代码添加到角度控制器,所以我在互联网上搜索了类似的东西,我发现了这个factory
angular.module('rhoAppApp')
.factory('$FCMPlugin', $FCMPlugin);
$FCMPlugin.$inject = [];
function $FCMPlugin() {
var service = {
getToken: function(successCallback, failCallback) {
FCMPlugin.getToken(successCallback, failCallback);
},
onNotification: function(onNotification, onCallbackSuccesSet, onCallbackFailSet) {
FCMPlugin.onNotification(onNotification,
onCallbackSuccesSet, onCallbackFailSet);
}
};
return service;
}
所以现在我的问题是在我的控制器中使用那个工厂,我知道(也许我错了)你必须从中调用它:
.controller('MainCtrl', function ($FCMPlugin) {
$FCMPlugin.something
})
但我不确定如何使用那家工厂,我之前从未使用过。
答案 0 :(得分:0)
我可以用这个来解决这个问题:
我使用phonegap + yeoman angular进行构建,使用此方法构建的问题之一是你必须包含cordova.js
我的问题是,我在此行中包含了condorva.js
<!-- build:js(.) scripts/vendor.js -->
<!-- bower:js -->
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/bootstrap/dist/js/bootstrap.js"></script>
<!-- endbower -->
<!-- endbuild -->
这是一个问题,因为你不想在vendor.js中构建它,而是将cordova.js添加到该行中:
然后我将此代码添加到 app.js ,以便在您使用移动设备或网络时进行说明:
angular.element(document).ready(function () {
if (navigator.userAgent.match(/(iOS|iPhone|iPod|iPad|Android|BlackBerry)/)) {
document.addEventListener('deviceready', function () {
console.log('This is mobile app');
angular.bootstrap(document.body, ['moodleAppApp']);
}, false);
} else {
console.log('This is web app');
angular.bootstrap(document.body, ['moodleAppApp']);
}
});
我还从 index.html
中删除 ng-app这一切使我的角度应用程序与cordova一起工作。