Я видел несколько похожих предметов, но никто не был в том же контексте (с угловым, не используя ионный). Я использую cordova 5.0.0 (cordova -version в cmd показывает 5.0.0, в модуле модуля модуля я вижу 3.6.4)Кордова + Угловая + PushPlugin - Обратный звонок не срабатывает
У меня есть приложение на основе углов, которое работает внутри приложения Cordova. Я пытаюсь добавить push-уведомление, используя PushPlugin.
Я могу (внутри основного модуля) вызвать метод push-плагина и в Android (в настоящее время только на устройстве, на котором я тестирую) вызывается обработчик «success». Экб хотя и никогда не вызывается независимо от того, где я помещаю функцию обратного вызова.
В моем app.js:
angular.module('myApp', [...]).config().run(['$rootScope',...,
function($rootScope,...) {
// etc etc...
document.addEventListener("deviceready", function(){
var pushNotification = window.plugins.pushNotification;
pushnotification.register(
successHandler,
errorHandler,
{
"senderID":"<sender_id>",
"ecb":"window.onNotification"
});
});
// this is invoked
function successHandler (result) {
alert('result = ' + result);
};
function errorHandler (error) {
alert('error = ' + error);
};
// option 1:
function onNotification(e) {...};
// option 2:
var onNotification = function(e) {...};
// option 3
// (tried below and above the call to register
// though I believe it doesn't matter):
window.onNotification = function(e) {...};
}]);
// option 4:
var onNotification = function(e) {...};
До сих пор ни один из них не работает. Я предполагаю, что я делаю что-то не так, но я не уверен, что.
Это что-то с объемом? Может ли это быть чем-то еще? Какие? Как диагностировать?
EDIT: Я проверил LogCat и некоторые вещи не имеет смысла:
I/chromium (3981): [INFO:CONSOLE(217)] "registering with GCM", source: file:///android_asset/www/js/app.js (217)
V/PushPlugin (3981): execute: action=register
V/PushPlugin (3981): execute: data=[{"senderID":"SENDER_ID","ecb":"window.onNotification"}]
V/PushPlugin (3981): execute: jo={"senderID":"SENDER_ID","ecb":"window.onNotification"}
V/PushPlugin (3981): execute: ECB=window.onNotification senderID=SENDER_ID
D/GCMRegistrar (3981): resetting backoff for com.my.app
V/GCMRegistrar (3981): Registering app com.my.app of senders SENDER_ID
W/ActivityManager(1254): Unable to start service Intent {act=com.google.android.c2dm.intent.REGISTER pkg=com.google.android.gsf (has extras) } U=0: not found
версия плагина я вижу (Cordova список плагинов) является 2.4.0. Почему цель - c2dm? Не следует ли использовать новый GCM?
Я, кажется, проблема с объемом. См. Этот [пример] (http://stackoverflow.com/a/30634495/1761793). Экб должен быть доступен в глобальном масштабе, когда плагин пробуждает ваше приложение. Прикрепите свою функцию к глобальному «окну» и назовите ее как «window.onNotification». – Ajoy
Также см. Это (лучше) [ответ] (http://stackoverflow.com/a/25427145/1761793). – Ajoy
Я сделал, как было предложено, добавив 'onNotification' как свойство в' window' и используя полное имя '' window.onNotification "' как значение для ecb. Я все еще не получаю обратный вызов ... может быть, я вообще не получаю ответа? как я могу это проверить? –