2017-12-14 11 views
3

내 프로젝트에서 Phonegap 로컬 알림을 구현하려고합니다.Phonegap : 지역 알림은 매주 일요일마다 반복됩니까?

나는이 플러그인을 사용하고 있습니다 : 나는 플러그인을 설치하고 테스트 한

de.appplant.cordova.plugin.local-notification-custom 

을하고 그것을 잘 작동합니다.

나는이 코드를 테스트하고 그것을 잘 작동합니다 :

cordova.plugins.notification.local.schedule({ 
    id   : 1, 
    title  : 'I will bother you every minute', 
    text  : '.. until you cancel all notifications', 
    sound  : null, 
    every  : 'minute', 
    autoClear : false, 
    at   : new Date(new Date().getTime() + 10*1000) 
}); 

위의 통지가 모든 분 작업 벌금을 실행합니다.

이제 모든 Sunday 및 모든 week에서만 실행될 로컬 알림을 설정해야합니다.

나는 이런 일을 통해 들어 왔지만 그것을 테스트 할 때, 그것은 아무것도하지 않습니다 : at: sunday_16_pm가 올바른지 아닌지

cordova.plugins.notification.local.schedule({ 
    id: 1, 
    title: "Test...", 
    text: "Test...", 
    sound: null, 
    every: 'week', 
    at: sunday_16_pm 
}); 

내가 알지도 못하는을!

누군가이 문제에 대한 조언을 구할 수 있습니까?

미리 감사드립니다.

는 편집 :

https://github.com/katzer/cordova-plugin-local-notifications/wiki/04.-Scheduling

그들은 말한다 샘플 코드를 가지고 :

시간 동안 검색 아무것도 발견하지 후, 난 그냥이 문서를 건너 왔어요

일정 반복적으로

cordova.plugins.notification.local.schedule({ 
    text: "Delayed Notification", 
    firstAt: monday, 
    every: "day", 
    icon: "file://img/logo.png" 
}, callback); 

하지만 monday은 무엇입니까?!? 그것은 변수입니까? 그렇다면 변수를 어떻게 작성합니까?

사람들이 다른 사람이 읽고 이해하기를 원하는 것처럼 문서를 쓰는 이유를 이해할 수 없습니다 !!

또 다른 편집 :

난 내가 할 노력하고있어하지만 난 이온 사용하지 않는 및 결코 정확하게 설명하는이 발견했다. 그래서 나는 거기에 제공되는 코드를 이해하지 못합니다!

https://www.joshmorony.com/getting-familiar-with-local-notifications-in-ionic-2/

답변

2

는 나도 그 변수 sunday_16_pm 또는 monday에 대해 알고하지 않습니다,하지만 당신은 firstAt 함께 자신의 변수를 사용할 수 있습니다.

우선, 일요일 오후에 반복을 시작해야한다는 것을이 플러그인에 알리기 위해 sunday_16_pm의 타임 스탬프를 찾아야합니다.

이 타임 스탬프를 찾으려면 (이 작업은 동적으로 수행되어야한다고 생각합니다.) getDayMillDiff 함수를 작성하여 현재와 일요일 사이의 시간차를 계산하십시오. 이후에이 차이를 사용하여 원하는 sunday_16_pm을 얻습니다.


function getDayMillDiff(refday){ 
    var days = { 
     monday: 1, 
     tuesday: 2, 
     wednesday: 3, 
     thursday: 4, 
     friday: 5, 
     saturday: 6, 
     sunday: 0 
    }; 
    if(!days.hasOwnProperty(refday))throw new Error(refday+" is not listed in "+JSON.stringify(days)); 
    var curr = new Date(); 
    var triggerDay = days[refday]; 
    var dayMillDiff=0; 
    var dayInMill = 1000*60*60*24; 
    // add a day as long as refday(sunday for instance) is not reached 
    while(curr.getDay()!=triggerDay){ 
     dayMillDiff += dayInMill; 
     curr = new Date(curr.getTime()+dayInMill); 
    } 
    return dayMillDiff; 
} 

var today = new Date(); 

// how many days are between current day (thursday for instance) to sunday, add this difference to this sunday variable 
var sunday = today.getTime() + getDayMillDiff("sunday"); 

// convert timestamp to Date so that hours can be adjusted 
var sunday_16_pm = new Date(sunday); 
sunday_16_pm.setHours(16,0,0); 

// now we can use sunday_16_pm to schedule a notification showing at this date and every past week 
cordova.plugins.notification.local.schedule({ 
    id: 1, 
    title: "Test...", 
    text: "Test...", 
    every: 'week', 
    firstAt: sunday_16_pm 
}); 
하나 더 예 :

일요일 이외의 일을위한 getDayMillDiff을 테스트하려면, 당신은 단순히 (항상 getDayMillDiff에서 변수 days 내에서 나열된 이름을 사용하십시오) 그것에 문자열 "monday"를 전달할 수 있습니다 :

var today = new Date(); 
var monday = today.getTime() + getDayMillDiff("monday"); 

var monday_10_am = new Date(monday); 
monday_10_am.setHours(10,0,0); 

cordova.plugins.notification.local.schedule({ 
    id: 1, 
    title: "Test...", 
    text: "Test...", 
    every: 'week', 
    firstAt: monday_10_am 
}); 

희망이 있습니다.

+0

이것은 훌륭합니다. 그래도 몇 가지 질문이 있습니다. 같은 날에 하루를 추가하면 어떻게됩니까? 예를 들어 일요일에 일요일을 추가하면 어떻게됩니까? 또한, 다른 요일에도 사용할 수 있습니까? 예 : 월요일, 금요일 또는 기타 요일? – user2056633

+0

감사합니다. 짧은 대답 : 예. 일요일 또는 그 다음날이 0 일 때 다른 날에도 작동합니다. 재밌게 보내주세요 :) – Blauharley

+0

안녕, 고마워. 나는 그것을 테스트하고 로컬 알림을 추가했습니다. 이전 사용자가 물었던 것처럼이 코드에서 다른 요일을 사용하는 방법을 명확히 할 수 있습니까? 나는 여러분이 이미 요일에 숫자를 명시했다는 것을 알 수 있습니다. 'dayMillDiff = 0;'var을'dayMillDiff = 1;'또는'var dayMillDiff = 2;'등으로 변경하는 것이 쉬우 며 다른 날에도이 작업을 할 수 있습니까? –