简体   繁体   English

动作按钮未在本地通知中显示ios 9.2 swift 2

[英]Actions buttons not showing up in local notifications ios 9.2 swift 2

I am creating notifications in a loop, relevant code is: 我正在循环创建通知,相关代码为:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    appDelegate = self

    serNotificationType = UIUserNotificationType.Alert.union(UIUserNotificationType.Sound).union(UIUserNotificationType.Badge)

    let completeAction = UIMutableUserNotificationAction()
    completeAction.identifier = "COMPLETE" // the unique identifier for this action
    completeAction.title = "Clear" // title for the action button
    completeAction.activationMode = .Background // UIUserNotificationActivationMode.Background - don't bring app to foreground
    completeAction.authenticationRequired = false // don't require unlocking before performing action
    completeAction.destructive = true // display action in red

    let callInAction = UIMutableUserNotificationAction()
    callInAction.identifier = "CALLIN"
    callInAction.title = "Call now"
    callInAction.destructive = false
    callInAction.authenticationRequired = false
    callInAction.activationMode = UIUserNotificationActivationMode.Background

    callInAction.destructive = false

    let notificationCategory = UIMutableUserNotificationCategory() // notification categories allow us to create groups of actions that we can associate with a notification
    notificationCategory.identifier = "CALLINNOTIFICATION"
    notificationCategory.setActions([callInAction, completeAction], forContext: .Default) //UIUserNotificationActionContext.Default (4 actions max)
    notificationCategory.setActions([completeAction, callInAction], forContext: .Minimal) //UIUserNotificationActionContext.Minimal - for when space is limited (2 actions max)
    application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: notificationTypes, categories: NSSet(array:[notificationCategory]) as? Set<UIUserNotificationCategory>))

    return true
}

Scheduling of the notifications is done in the for loop (and maybe this is the reason something is wrong with scheduling): 通知的调度是在for循环中完成的(也许这是调度有问题的原因):

func scheduleLocalNotifications() {

    let arrayOfEvents: [[Meeting]] = CalendarController.sharedInstance.getAllMeetings()

    //remove CallIn notifications anyway
    self.removeScheduledNotifications()

        var limitCounter = 0  //limit is 64 local notifications

        print("scheduling start: \(CallIn.Settings.notifyNumberOfMinutesBeforeEvent)")
        for var x = 0; x < arrayOfEvents.count; x++ {

        for var y = 0; y < arrayOfEvents[x].count; y++ {
            let event = arrayOfEvents[x][y]

            if(event.startTime.timeIntervalSinceDate(NSDate()) > -2000 && limitCounter <= 64){
                if(notificationsAreAllowed()){
                    let notification = UILocalNotification()
                    let minutesBefore = CallIn.Settings.notifyNumberOfMinutesBeforeEvent
                    notification.fireDate = event.startTime.dateByAddingTimeInterval(-minutesBefore * 60) //time of launch of notification

                    if(minutesBefore <= 1){
                        notification.alertBody = "Your \(event.title) is about to start"
                    }else{
                        notification.alertBody = "You have \(event.title) in \(Int(minutesBefore)) minutes"
                    }
                    notification.alertAction = "OK"
                    notification.soundName = UILocalNotificationDefaultSoundName
                    notification.userInfo = ["title": event.title, "UUID": event.UUID, "CallIn": "CallInNotification"]
                    notification.category = "CALLINNOTIFICATION"
                    notification.applicationIconBadgeNumber = 1

                    UIApplication.sharedApplication().scheduleLocalNotification(notification)
                }

                limitCounter += 1
            }
        }
    }
}

The buttons Call now, and Dismiss are not showing up. “立即呼叫”和“关闭”按钮未显示。 What I want is this: 我想要的是: 在此处输入图片说明

What I get is this: 我得到的是: 在此处输入图片说明

Ok, I found the problem and this may be useful for someone in the future: 好的,我发现了问题,这可能对将来的某人有用:

I had 我有

UIApplication.sharedApplication().registerUserNotificationSettings(notificationSettings)

was called twice in two different places in the application (because I had setting in the application, and needed to alter it from settings page). 在应用程序的两个不同位置被两次调用(因为我已经在应用程序中进行了设置,因此需要从设置页面进行更改)。 So when refactored, and called it once, it worked. 因此,当重构并调用它一次时,它就起作用了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM