2017-03-12 8 views
2

저는 신속하게 새롭고 UISwitch IBAction 내부에서 로컬 알림을 요청하는 여러 함수를 호출하려고합니다. 4, 7, 10, 1 개월에 각 분기의 특정 날짜에 대한 알림을 보내려합니다. 4/4 분기 기능 만 호출됩니다. 네 함수를 모두 호출 할 수있는 방법은 무엇입니까? 여기 내 코드입니다 :마지막으로 로컬 알림 기능 만 호출되는 이유는 무엇입니까?

// UISwitch을 네 분기

@IBAction func quarterlyFrequencyTapped(_ sender: UISwitch) { 

if quarterlyFrequency.isOn == true { 

    firstQuarter(); secondQuarter(); thirdQuarter(); fourthQuarter() 

    print("quarterly frequency is \(quarterlyFrequency.isOn)") 

} else { 

    removeQuarterlyNotification() 

    print("quaterly frequency is \(monthlyFrequency.isOn)") 

     } 

} 

// 함수

func firstQuarter() { 
    let firstQuarterContent = UNMutableNotificationContent() 
    firstQuarterContent.title = "First Quarter" 
    firstQuarterContent.subtitle = "Some string" 
    firstQuarterContent.body = "Some other string" 

    var firstQuarterDate = DateComponents() 
    firstQuarterDate.month = 3 
    firstQuarterDate.day = 11 
    firstQuarterDate.hour = 19 
    firstQuarterDate.minute = 20 

    let firstQuarterTrigger = UNCalendarNotificationTrigger(dateMatching: firstQuarterDate, repeats: true) 
    let firstQuarterRequestIdentifier = "Quarterly" 
    let firstQuarterRequest = UNNotificationRequest(identifier: firstQuarterRequestIdentifier, content: firstQuarterContent, trigger: firstQuarterTrigger) 
    UNUserNotificationCenter.current().add(firstQuarterRequest, withCompletionHandler: nil) 
} 

func secondQuarter() { 
    let secondQuarterContent = UNMutableNotificationContent() 
    secondQuarterContent.title = "Second Quarter" 
    secondQuarterContent.subtitle = "Some string" 
    secondQuarterContent.body = "Some other string" 

    var secondQuarterDate = DateComponents() 
    secondQuarterDate.month = 3 
    secondQuarterDate.day = 11 
    secondQuarterDate.hour = 19 
    secondQuarterDate.minute = 21 

    let secondQuarterTrigger = UNCalendarNotificationTrigger(dateMatching: secondQuarterDate, repeats: true) 
    let secondQuarterRequestIdentifier = "Quarterly" 
    let secondQuarterRequest = UNNotificationRequest(identifier: secondQuarterRequestIdentifier, content: secondQuarterContent, trigger: secondQuarterTrigger) 
    UNUserNotificationCenter.current().add(secondQuarterRequest, withCompletionHandler: nil) 
} 

func thirdQuarter() { 
    let thirdQuarterContent = UNMutableNotificationContent() 
    thirdQuarterContent.title = "Third Quarter" 
    thirdQuarterContent.subtitle = "Some string" 
    thirdQuarterContent.body = "Some other string" 

    var thirdQuarterDate = DateComponents() 
    thirdQuarterDate.month = 3 
    thirdQuarterDate.day = 11 
    thirdQuarterDate.hour = 19 
    thirdQuarterDate.minute = 22 

    let thirdQuarterTrigger = UNCalendarNotificationTrigger(dateMatching: thirdQuarterDate, repeats: true) 
    let thirdQuarterRequestIdentifier = "Quarterly" 
    let thirdQuarterRequest = UNNotificationRequest(identifier: thirdQuarterRequestIdentifier, content: thirdQuarterContent, trigger: thirdQuarterTrigger) 
    UNUserNotificationCenter.current().add(thirdQuarterRequest, withCompletionHandler: nil) 
} 

func fourthQuarter() { 
    let fourthQuarterContent = UNMutableNotificationContent() 
    fourthQuarterContent.title = "Fourth Quarter" 
    fourthQuarterContent.subtitle = "Some string" 
    fourthQuarterContent.body = "Some other string" 

    var fourthQuarterDate = DateComponents() 
    fourthQuarterDate.month = 3 
    fourthQuarterDate.day = 11 
    fourthQuarterDate.hour = 19 
    fourthQuarterDate.minute = 23 

    let fourthQuarterTrigger = UNCalendarNotificationTrigger(dateMatching: fourthQuarterDate, repeats: true) 
    //let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: true) 
    let fourthQuarterRequestIdentifier = "Quarterly" 
    let fourthQuarterRequest = UNNotificationRequest(identifier: fourthQuarterRequestIdentifier, content: fourthQuarterContent, trigger: fourthQuarterTrigger) 
    UNUserNotificationCenter.current().add(fourthQuarterRequest, withCompletionHandler: nil) 
} 
+0

네 번째 만 호출되는 것을 어떻게 알 수 있습니까? 이 코드 블록에는 아무런 문제가 없습니다. – TheValyreanGroup

+0

이'firstQuarter(); secondQuarter(); 3 분기(); fourthQuarter()'는 모두 4를 실행합니다 ... 잘못 없습니다. 아마 함수가 잘못 작동합니다 – Honey

+0

이것을 테스트하려면 각 분기 함수를 1 분 간격으로 설정하고 시뮬레이터를 실행해야합니다. 시뮬레이터에서는 네 번째 알림 만 실행됩니다. – nsd32

답변

3

난 당신이 아이폰 OS 10에 있다고 생각 분기 알림 당신은 UserNotifications를 사용하는 프레임 워크가 맞습니까?

은 매우 가능성이 identifier S는 같은을 가지고 각각 이전 통지를 업데이트 이다.

수정 사항은 각각 개의 식별자를 사용하는 것입니다. 내가 말한대로 ... 모든 알림이 자신의 식별자로 "Quarterly"을 가지고 더

UPDATE 편집 한 후 WWDC 영상이 moment를 참조하십시오

. 그들에게 각각 별도의 이름을 지어 주어라.

+0

그 덕분에, 정말 고마워! – nsd32

+0

@ nsd32 여기에 새로운 사람이 생겼습니다. 원하는 답변을 얻은 후에는 1. upvote하는 것이 좋습니다. 2. [승인 된 답변으로 표시] 확인란을 클릭하십시오 (https://meta.stackexchange.com/questions/5234/how-does-accepting- 답장 작업) – Honey

+1

팁 주셔서 감사합니다. 방금 체크 표시를 클릭했지만 내 평판이 여전히 낮기 때문에 upvote가 표시되지 않지만 분명히 어딘가에 기록됩니다. 모든 도움에 다시 한 번 감사드립니다. – nsd32