2016-03-30 26 views
9

Volevo innanzitutto dire che questo è davvero un bel plugin (https://github.com/katzer/cordova-plugin-local-notifications) ma che ha qualche difficoltà a farlo funzionare.Cordova PhoneGap Notifiche locali non funzionanti

Sto utilizzando una CLI Android e PhoneGap. Ho provato sia CLI 5.0 e ora PhoneGap 3.5.0, questo è il mio config.xml:

<preference name="phonegap-version" value="3.5.0" />

Nel mio config.xml Ho provato tutte queste combinazioni:

<plugin name="de.appplant.cordova.plugin.local-notification" spec="0.8.1" source="pgb" /> 
<gap:plugin name="de.appplant.cordova.plugin.local-notification" /> 
<plugin name="de.appplant.cordova.plugin.local-notification" source="pgb" /> 

Tuttavia la le notifiche non compaiono - non succede niente al telefono - niente, niente, niente. Ho scaricato anche l'App kitchensink (https://github.com/katzer/cordova-plugin-local-notifications/tree/example) e installato sul PhoneGap costruire e il mio telefono e non succede nulla di nuovo ..

questo è il mio codice su index.html in modo che quando i fuochi telefono dovrebbe registrare una notifica locale al più presto:

cordova.plugins.notification.local.registerPermission(function (granted) { 
    // console.log('Permission has been granted: ' + granted); 
}); 

cordova.plugins.notification.local.schedule({ 
    id: 1, 
    title: 'Reminder', 
    text: 'Dont forget to pray today.', 
    every: 'minute', 
    icon: 'res://icon', 
    smallIcon: 'res://ic_popup_sync' 
}); 

ho anche provato

cordova.plugins.notification.local.schedule({ 
    id: 2, 
    text: "Good morning!", 
    firstAt: tomorrow_at_8_am, 
    every: "day" // "minute", "hour", "week", "month", "year" 
}); 

anche l'applicazione kitchensink non funziona - non succede nulla al telefono ??

versione My Android è: 5.1.1

Come posso ottenere le notifiche locali a comparire in PhoneGap?

+0

Hai verificato che l'evento di deviceready è stato attivato? – chadiusvt

+0

Sì, l'app risponde con questo. Ho fatto console.log e vari altri test sia in Phonegap build che facendo un .apk sul telefono - l'app del kitchen sink non funziona – TheBlackBenzKid

+0

@TheBlackBenzKid Ciao, sto solo provando con l'app kitchensink. Ti informerò entro domani.Ma una cosa che ho notato durante il download del codice di esempio è che la cartella dei plugin non viene estratta correttamente. Non riesco a trovare la cartella "de.appplant.cordova.plugin.local-notification" all'interno dei plugin. Potevo vedere solo il file "de.appplant.cordova.plugin.local-notification" di dimensione 1kb. Quindi puoi confermare che il tuo plugin sia installato correttamente controllando lo stesso nella cartella dei plugin? – Gandhi

risposta

3

anch'io hanno trascorso molte ore cercando di ottenere questo plugin lavoro & ho, ma io lo trovo ad essere uno dei più temperamentali.

Entro i tuoi js -

var testNotifications = function() { 

document.addEventListener("deviceready", function() { 

    console.warn("testNotifications Started"); 

    // Checks for permission 
    cordova.plugin.notification.local.hasPermission(function (granted) { 

    console.warn("Testing permission"); 

    if(granted == false) { 

     console.warn("No permission"); 
     // If app doesnt have permission request it 
     cordova.plugin.notification.local.registerPermission(function (granted) { 

     console.warn("Ask for permission"); 
     if(granted == true) { 

      console.warn("Permission accepted"); 
      // If app is given permission try again 
      testNotifications(); 

     } else { 
      alert("We need permission to show you notifications"); 
     } 

     }); 
    } else { 

     var pathArray = window.location.pathname.split("/www/"), 
      secondLevelLocation = window.location.protocol +"//"+ pathArray[0], 
      now = new Date(); 


     console.warn("sending notification"); 

     var isAndroid = false; 

     if (device.platform === "Android") { 
     isAndroid = true; 
     } 

     cordova.plugin.notification.local.schedule({ 
      id: 9, 
      title: "Test notification 9", 
      text: "This is a test notification", 
      sound: isAndroid ? "file://sounds/notification.mp3" : "file://sounds/notification.caf", 
      at: new Date(new Date().getTime() + 10) 
      // data: { secret:key } 
     }); 

    } 

    }); 

    }, false); 

}; 

Ora sul vostro tag html -

<button onclick="testNotifications()">Test notification</button> 

Questo dovrebbe innescare una notifica o avvisare che ha bisogno di autorizzazioni Inoltre punta in alto è quello di assicurarsi che le notifiche sono in una cartella nella radice del progetto.android dovrebbe essere mp3 e ios caf

1

Risposta 1: per la versione 3.5.0

dare un'occhiata a plugin's plugin.xml. vedi linea 22

<engine name="cordova" version=">=3.6.0" /> 

che significa plug supporta solo la versione maggiore di 3.6.0 e si utilizza 3.5.0

Risposta 2: per la versione 5.0 o superiore

Prova il codice seguente come index.html. se funziona perfettamente allora e altre opzioni in notification.schedule. poiché non abbiamo fornito l'ora (at), la notifica dell'opzione verrà attivata immediatamente.

<html> 
<script type="text/javascript" src="cordova.js"></script> 
<script> 
document.addEventListener('deviceready', onDeviceReady.bind(this), false); 
     function onDeviceReady() {        
      cordova.plugins.notification.local.schedule({ 
       id: 1, 
       title: "Sample Notification", 
       text: "foo",      
       every: "week",           
       data: { meetingId: "123#fg8" } 
      }); 
     }; 
</script> 
<body> 
</body> 
</html>