このサンプルに従って、Android エミュレーターで動作する Android pushNotifications (GCM を使用) を取得しました。$cordovaPush.register(config)
応答としてOKを取得した後。しかし、コールバック [ $scope.$on('$cordovaPush:notificationReceived'
] は実行されません。その結果、登録 ID を取得できません。
Google API プロジェクトを作成しました。そして、呼び出し時に config.senderID でそのプロジェクト ID を使用してい$cordovaPush.register(config)
ます。
また、Gmail アカウントをエミュレーターに登録しました。
私は2つの質問があると思います。
1.Android エミュレーターでプッシュ通知を取得 (および登録) することはできますか?
コールバックを呼び出す $cordovaPush:notificationReceived イベントを取得できないのはなぜですか?
app.controller('AppCtrl', function($scope, $cordovaPush, $cordovaDialogs, $cordovaMedia, $cordovaToast, ionPlatform, $http) { $scope.notifications = [];
// call to register automatically upon device ready ionPlatform.ready.then(function (device) { $scope.register(); }); // Register $scope.register = function () { var config = null; if (ionic.Platform.isAndroid()) { config = { "senderID": "12834957xxxx" }; } $cordovaPush.register(config).then(function (result) { console.log("Register success " + result); $cordovaToast.showShortCenter('Registered for push notifications'); $scope.registerDisabled=true; }, function (err) { console.log("Register error " + err) }); } $scope.$on('$cordovaPush:notificationReceived', function (event, notification) { console.log(JSON.stringify([notification])); if (ionic.Platform.isAndroid()) { handleAndroid(notification); } }); // Android Notification Received Handler function handleAndroid(notification) { // ** NOTE: ** You could add code for when app is in foreground or not, or coming from coldstart here too // via the console fields as shown. console.log("In foreground " + notification.foreground + " Coldstart " + notification.coldstart); if (notification.event == "registered") { $scope.regId = notification.regid; storeDeviceToken("android"); } else if (notification.event == "message") { $cordovaDialogs.alert(notification.message, "Push Notification Received"); $scope.$apply(function () { $scope.notifications.push(JSON.stringify(notification.message)); }) } else if (notification.event == "error") $cordovaDialogs.alert(notification.msg, "Push notification error event"); else $cordovaDialogs.alert(notification.event, "Push notification handler - Unprocessed Event"); }