Search code examples
swiftios9uilocalnotification

Can't stop iOS scheduleLocalNotification


I'm not sure if it is technical issues. I tried to implement a scheduled local notification by calling this:

// Schedule the notification ********************************************
    if UIApplication.sharedApplication().scheduledLocalNotifications.count == 0 {

        let notification = UILocalNotification()
        notification.alertBody = "This is local push notification"
        notification.soundName = UILocalNotificationDefaultSoundName
        notification.fireDate = NSDate()
        notification.category = categoryID
        notification.repeatInterval = NSCalendarUnit.Minute

        UIApplication.sharedApplication().scheduleLocalNotification(notification)
    }

from

func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) {
}

It works fine. However, when I revert the code to the origin version without any line of codes related to the scheduleLocalNotification() the local notification still running. I can't stop it even I clean the project/remove the application from devices before a rebuild.

Please help if possible, thank you!


Solution

  • You have created a repeating local notification and handed it to the system. At that point it is out of your hands. You have told the system to repeat this notification, and it will do so, forever.

    Your only choice at this point is to delete your app.

    What you have done is a classic mistake — one, unfortunately, that many apps do in fact make. And I have had to delete those apps from my device as well, as there is no other way to stop the repeating notification.

    The right thing to do would have been to build into your app a cancelation of that local notification, i.e. you stop the notification in code. For example, you tell the UIApplication shared instance to cancelAllLocalNotifications. But you failed to do that.