Actualización de Cordova Local Notification Android Plugin 2.2

Estoy trabajando en una aplicación "Recordatorios" en Android usando Phonegap [Cordova 2.2].

El usuario introduce una fecha específica para su recordatorio y se supone que debo notificarlo a tiempo.

Utilizo el complemento de notificación de Android, pero admite versiones anteriores de brecha telefónica. He seguido este tutorial para resolver conflictos entre cordova 2.2 y anteriores, ahora un montón de problemas se han solucionado, pero todavía no puedo arreglar algunos:

public PluginResult execute(String action, JSONArray optionsArr, String callBackId) { alarm = new AlarmHelper(cordova.getActivity()); Log.d(PLUGIN_NAME, "Plugin execute called with action: " + action); PluginResult result = null; final AlarmOptions alarmOptions = new AlarmOptions(); alarmOptions.parseOptions(optionsArr); 

Esta función tiene un problema con esta línea:

  public PluginResult execute(String action, JSONArray optionsArr, String callBackId) 

y cuando la reemplazo con esta línea:

 public boolean execute(String action, JSONArray optionsArr, CallbackContext callbackContext) { 

El error es fijo, pero aparece otro error en esta función:

 persistAlarm(alarmId, optionsArr); return this.add(daily, title, subTitle, ticker, alarmId, alarmOptions.getCal()); } else if (action.equalsIgnoreCase("cancel")) { unpersistAlarm(alarmId); return this.cancelNotification(alarmId); } else if (action.equalsIgnoreCase("cancelall")) { unpersistAlarmAll(); return this.cancelAllNotifications(); } return result; } 

Que el tipo de retorno no se puede convertir en booleano, Entonces, ¿cómo puedo solucionarlo?

Actualizar:

He reemplazado el tipo de retorno para que sea booleano y así es ahora:

  @Override public boolean execute(String action, JSONArray optionsArr, CallbackContext callBackId) { Log.d(PLUGIN_NAME, "optionsArr: " + optionsArr.toString()); alarm = new AlarmHelper(cordova.getActivity()); Log.d(PLUGIN_NAME, "Plugin execute called with action: " + action); //PluginResult result = null; boolean result = true; final AlarmOptions alarmOptions = new AlarmOptions(); alarmOptions.parseOptions(optionsArr); /* * Determine which action of the plugin needs to be invoked */ String alarmId = alarmOptions.getNotificationId(); if (action.equalsIgnoreCase("add")) { final boolean daily = alarmOptions.isRepeatDaily(); final String title = alarmOptions.getAlarmTitle(); final String subTitle = alarmOptions.getAlarmSubTitle(); final String ticker = alarmOptions.getAlarmTicker(); persistAlarm(alarmId, optionsArr); this.add(daily, title, subTitle, ticker, alarmId, alarmOptions.getCal()); callBackId.success(); return true; } else if (action.equalsIgnoreCase("cancel")) { unpersistAlarm(alarmId); this.cancelNotification(alarmId); callBackId.success(); return true; } else if (action.equalsIgnoreCase("cancelall")) { unpersistAlarmAll(); this.cancelAllNotifications(); callBackId.success(); return true; } return result; } 

Ahora, funciona, pero cuando hago clic en la notificación, la aplicación no se abre y la notificación no se ha ido … ¿cómo puedo solucionar esto?

Ok el plugin de notificaciones locales finalmente está trabajando con cordova 2.2 🙂 Ahora aquí están las modificaciones necesarias:

1) Reemplazar

 import com.phonegap.api.Plugin; import com.phonegap.api.PluginResult; 

con

 import org.apache.cordova.api.CordovaPlugin; import org.apache.cordova.api.PluginResult; 

2) Reemplazar

 public PluginResult execute(String action, JSONArray optionsArr, String callBackId) 

con

 public pluginresult execute(String action, JSONArray args, CallbackContext callbackContext) 

3) Añadir

 callbackContext.success(); return true; 

o

 return false; 

como el tipo de retorno de la función.

4) Reemplazar

 this.ctx 

con

 cordova.getActivity() 

5) Añadir

 import yourapplication.name.R; 

A AlarmReciever.Java

Eso es todo 🙂 Espero que ayude.

reemplazarlo con la función "public boolean execute" y en caso de éxito add

 callbackContext.success(); return true; 

y en caso de falla:

 return false; 

El archivo completo incluyendo los comentarios de Sana Joseph se puede encontrar aquí:

https://github.com/Philzen/phonegap-plugins/tree/master/Android/LocalNotification

Después de haber creado esto, también encontré https://github.com/olore/LocalNotifications , que también permite usar cordova pluginstall.

La notificación se crea y sale bien usando cualquiera de estas soluciones, sin embargo – nada sucede cuando hago clic en él 🙁 No desaparece ni se abre la aplicación.

¿Alguna pista de lo que podría faltar?

debe utilizar su callbackContext para devolver datos adicionales a sus manejadores de éxito / error. el valor devuelto debe ser un booleano.

fyi también

cambio

 LocalNotification extends Plugin 

para

 LocalNotification extends CordovaPlugin 

esto funciona para mi

  • Cómo redirigir hacia la ventana de configuración de GPS en android o ios utilizando phonegap para activar o desactivar un GPS
  • Error en la aplicación Phonegap: módulo no capturado cordova / plugin_list ya definido
  • Captura de firma en PhoneGap
  • PhoneGap: Cómo hacer que los enlaces de iframes se abran en InAppBrowser
  • Adquiere el valor devuelto de PhoneGap Plugin
  • Realizar y supervisar llamadas telefónicas dentro de la brecha telefónica
  • PhoneGap Build Notificación de empuje (Android)
  • Diferencia entre las funciones window.openDatabase () y window.sqlitePlugin.openDatabase ()?
  • ¿Podemos usar una base de datos SQLITE aldready preparada para una aplicación phonegap?
  • AAC con PhoneGap en Android
  • PhoneGap - Detecta el tipo de dispositivo en la brecha telefónica
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.