2016-03-30 17 views
9

Ich wollte zuerst sagen, das ist ein wirklich nettes Plugin (https://github.com/katzer/cordova-plugin-local-notifications), aber mit einigen Schwierigkeiten bekommen es funktioniert.Cordova Phonegap lokale Benachrichtigungen nicht funktioniert

Ich verwende ein Android und PhoneGap CLI. Ich habe sowohl CLI versucht, 5.0 und jetzt Phonegap 3.5.0, das ist mein config.xml:

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

In meinem config.xml ich alle diese Kombinationen ausprobiert haben:

<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" /> 

jedoch die Benachrichtigungen erscheinen nicht - nichts passiert am Telefon - nichts, nada, zilch. Ich habe auch die KitchenSink App (https://github.com/katzer/cordova-plugin-local-notifications/tree/example) und auf Phonegap installiert bauen und mein Telefon, und nichts geschieht wieder ..

Dies ist mein Code auf index.html so, wenn das Telefon Feuer soll eine lokale Benachrichtigung registriert so schnell wie möglich:

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' 
}); 

ich habe auch versucht

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

auch die KitchenSink App funktioniert nicht - nichts am Telefon passiert ??

Meine Android-Version ist: 5.1.1

Wie kann ich lokale Benachrichtigungen in Phonegap zu werben?

+0

Haben Sie verifiziert, dass das Deviceready-Ereignis ausgelöst hat? – chadiusvt

+0

Ja, die App reagiert damit. Ich habe console.log und verschiedene andere Tests sowohl in Phonegap Build und machen ein .apk auf dem Telefon gemacht - die Küchenspüle App funktioniert nicht – TheBlackBenzKid

+0

@TheBlackBenzKid Hallo, ich bin gerade mit der KitchenSink App ausprobieren. Ich werde Sie bis morgen wissen. Aber eine Sache, die ich beim Herunterladen des Beispielcodes bemerkt habe, ist, dass der Plugin-Ordner nicht richtig extrahiert wird. Ich finde den Ordner "de.appplant.cordova.plugin.local-notification" nicht in den Plugins. Ich konnte nur die Datei "de.appplant.cordova.plugin.local-notification" der Größe 1kb sehen. Könntest du bestätigen, dass dein Plugin korrekt installiert ist, indem du es in deinem Plugins-Ordner anklickst? – Gandhi

Antwort

3

Auch ich habe versucht, viele Stunden damit verbracht, dieses Plugin zum Laufen zu bringen & ich habe, aber ich finde es eine des temperaments sein.

In Ihrem 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); 

}; 

Jetzt auf Ihrem HTML-Tag -

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

, die eine Benachrichtigung auslösen soll oder Sie warnen, dass es Berechtigungen benötigt auch Top-Tipp ist Ihre Benachrichtigungen, um sicherzustellen, befinden sich in einem Ordner im Stammverzeichnis des Projekts.android sollte mp3 sein und ios caf

1

Antwort 1: für Version 3.5.0

haben einen Blick auf plugin's plugin.xml. siehe Zeile 22

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

das Plugin bedeutet nur unterstützt Version 3.6.0 mehr als und Sie verwenden 3.5.0

Antwort 2: für die Version 5.0 oder höher

Versuchen der folgender Code als index.html. wenn es dann perfekt läuft und andere Optionen in notification.schedule. Da wir keine Zeit (at) -Option bereitgestellt haben, wird die Benachrichtigung sofort ausgelöst.

<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> 
Verwandte Themen