2016-03-30 22 views
9

Tôi muốn đầu tiên nói rằng đây là một plugin thực sự tốt đẹp (https://github.com/katzer/cordova-plugin-local-notifications) nhưng có một số khó khăn làm cho nó hoạt động.Cordova Phonegap thông báo địa phương không hoạt động

Tôi đang sử dụng CLI của Android và Phonegap. Tôi đã thử cả hai CLI 5.0 và bây giờ PhoneGap 3.5.0, đây là config.xml của tôi:

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

Trong config.xml của tôi, tôi đã thử tất cả những kết hợp này:

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

Tuy nhiên, thông báo không xuất hiện - không có gì xảy ra trên điện thoại - không có gì, nada, zilch. Tôi cũng đã tải về các KitchenSink App (https://github.com/katzer/cordova-plugin-local-notifications/tree/example) và cài đặt trên PhoneGap xây dựng và điện thoại của tôi và không có gì xảy ra một lần nữa ..

Đây là mã của tôi trên index.html nên khi đám cháy điện thoại nó nên đăng ký một thông báo địa phương càng sớm càng tốt:

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

tôi cũng đã cố gắng

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

Ngay cả những ứng dụng KitchenSink không hoạt động - không có gì xảy ra trên điện thoại ??

phiên bản Android của tôi là: 5.1.1

Làm thế nào tôi có thể nhận được thông báo địa phương để xuất hiện trong PhoneGap?

+0

Bạn đã xác minh rằng sự kiện deviceready đã kích hoạt chưa? – chadiusvt

+0

Có, ứng dụng sẽ phản hồi điều này. Tôi đã thực hiện console.log và các thử nghiệm khác trong cả xây dựng Phonegap và tạo một .apk trên điện thoại - ứng dụng bồn rửa nhà bếp không hoạt động hoặc – TheBlackBenzKid

+0

@TheBlackBenzKid Xin chào, tôi chỉ đang thử với ứng dụng nhà bếp. Sẽ cho bạn biết vào ngày mai.Nhưng một điều tôi nhận thấy trong khi tải xuống mã mẫu là thư mục plugin không được trích xuất đúng cách. Tôi không thể tìm thấy thư mục 'de.appplant.cordova.plugin.local-notification' bên trong các plugin. Tôi chỉ có thể xem tệp 'de.appplant.cordova.plugin.local-notification' có kích thước 1kb. Vì vậy, bạn có thể xác nhận rằng plugin của bạn được cài đặt đúng cách bằng cách kiểm tra tương tự trong thư mục plugin của bạn? – Gandhi

Trả lời

3

tôi cũng đã dành nhiều giờ cố gắng để có plugin này làm việc & tôi có, nhưng tôi thấy nó là một trong những thất thường nhất.

Trong js của bạn -

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

}; 

Bây giờ trên thẻ html của bạn -

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

Điều đó sẽ kích hoạt một thông báo hoặc cảnh báo bạn rằng nó cần quyền mũi Cũng đầu là để đảm bảo các thông báo của bạn nằm trong một thư mục trong thư mục gốc của dự án.android phải là mp3 và ios caf

1

Trả lời 1: cho phiên bản 3.5.0

có một cái nhìn tại plugin's plugin.xml. thấy dòng 22

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

đó có nghĩa là Plugin chỉ hỗ trợ phiên bản lớn hơn 3.6.0 và bạn đang sử dụng 3.5.0

Trả lời 2: cho phiên bản 5.0 hoặc cao hơn

Thử mã sau là index.html. nếu nó chạy hoàn hảo sau đó và các tùy chọn khác trong số notification.schedule. vì chúng tôi chưa cung cấp thông báo tùy chọn thời gian (tại) sẽ được kích hoạt ngay lập tức.

<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> 
Các vấn đề liên quan