2016-03-30 112 views
9

我想先说这是一个非常好的插件(https://github.com/katzer/cordova-plugin-local-notifications),但有一些困难让它工作。科尔多瓦Phonegap本地通知不工作

我正在使用Android和Phonegap CLI。我曾经尝试都CLI 5.0和现在的PhoneGap 3.5.0,这是我的config.xml:

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

在我的config.xml中我已经尝试了所有这些组合:

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

然而,通知不会出现 - 手机上没有任何反应 - 没有任何事情,纳达,ZILCH。我也下载了应用程序的KitchenSink(https://github.com/katzer/cordova-plugin-local-notifications/tree/example)并安装在PhoneGap的构建和我的手机并没有什么再次发生..

这是我对代码的index.html因此当手机火灾应尽快注册一个本地通知:

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

我也试过

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

连的KitchenSink应用程序无法正常工作 - 什么也没有发生在手机上?

我的Android版本:5.1.1

我怎样才能获得本地通知出现在PhoneGap的?

+0

您是否验证过deviceready事件已经被触发? – chadiusvt

+0

是的,应用程序回应这个。我完成了console.log和各种其他测试Phonegap构建和在手机上制作一个.apk - 厨房水槽应用程序不工作 – TheBlackBenzKid

+0

@TheBlackBenzKid嗨,我只是尝试与kitchensink应用程序。将在明天让你知道。但下载示例代码时我注意到的一件事是插件文件夹没有正确提取。我无法在插件中找到'de.appplant.cordova.plugin.local-notification'文件夹。我只能看到大小为1kb的'de.appplant.cordova.plugin.local-notification'文件。那么您是否可以通过检查插件文件夹中的相同内容来确认您的插件已正确安装? – Gandhi

回答

3

我也花了很多时间试图让这个插件工作&我有,但我觉得它是最气质的一个。

在您的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); 

}; 

现在在你的HTML标记 -

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

应该触发通知或提醒你,它需要的权限 此外顶端尖是确保您的通知位于项目根目录的文件夹中。android应该是mp3和ios caf

1

答1:版本3.5.0

看看plugin's plugin.xml。见线22

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

这意味着插件只支持版本比3.6.0更大,使用的是3.5.0

答2:5.0或更高版本

尝试以下代码为index.html。如果它运行的很好,那么可以使用其他选项notification.schedule。 由于我们没有提供时间(at)期权通知,因此会立即触发。

<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> 
相关问题