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.
- Planificación de un complemento de cámara cordova con imagen de superposición transparente
- La velocidad es "nula" con el complemento de geolocalización en Android 5+
- Facebook Login en PhoneGap, no pasa nada
- PhoneGap 3 plugin: exec () llamada a plugin desconocido "..."
- Uso de Phonegap para enviar SMS y mostrar en Bandeja de entrada
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?
- Phonegap ChildBrowser plugin: Desactivar / Ocultar URL en la barra de ubicación, pero NO botones de atrás / adelante / salida
- Phonegap - ¿Cómo generar un archivo de imagen de cadena base64?
- API de la cámara PhoneGap para Android - Excepción no captada
- ¿Cuál es la diferencia entre un plugin PhoneGap y addJavascriptInterface?
- Phonegap Build CLI-5.2.0 Descargar y cerrar desde dentro de la aplicación Web
- Phonegap Plugin Actividad Importación Layout
- ¿Hay una alternativa a getUserMedia para Phonegap Android (local)?
- App PhoneGap Crash cuando toma una nueva foto con Plugin de cámara
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
- ¿Cuál es la diferencia entre las vistas y los widgets
- No se puede ejecutar la aplicación de Rhodes de ejemplo