iOS 8 [UIApplication sharedApplication].scheduledLocalNotifications empty

▼魔方 西西 提交于 2019-11-28 12:21:34
Maxim Kholyavkin

This is not iOS 8 issue, but

[UIApplication sharedApplication].scheduledLocalNotifications

issue. Most relevant answer which i found here

Having similar issues right now. My guess here is that iOS does not schedule the notifications immediately but only at the end of the current run loop. I am running into these problems when setting the scheduledLocalNotifications property several times in the same run loop and changes don't seem to be updated accordingly. I think I will just keep a copy of the local notifications array myself and only set scheduledLocalNotifications and never read it.

mital solanki

For iOS8 :

Firing a local notification 30 seconds from now.

- for Objective c

    UILocalNotification *localNotification = [[UILocalNotification alloc] init];
    localNotification.alertAction = @"Testing notifications on iOS8";
    localNotification.alertBody = @"Woww it works!!";
    localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow: 30];
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

- for Swift

    var localNotification:UILocalNotification = UILocalNotification()
    localNotification.alertAction = "Testing notifications on iOS8"
    localNotification.alertBody = "Woww it works!! 
    localNotification.fireDate = NSDate(timeIntervalSinceNow: 30)
    UIApplication.sharedApplication().scheduleLocalNotification(localNotification)

Register Notification Settings

- for Objective c

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]]

        return YES;
    }

- for Swift

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool 
    {
        application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound|UIUserNotificationType.Alert |UIUserNotificationType.Badge, categories: nil)   

        return true
    }

Now you can get the local notification as well.

Once Local notification is fired for given date it won't show details in [UIApplication sharedApplication].scheduledLocalNotifications array. So if you give some interval count to fireDate (from CurrentDate to 10~20s) it will show you the details.

Arjun Patel

I am facing same issue and Finally I got solution why its happened.

if your are not set fireDate in notification object. its work perfect but when you are try to get notification list its always blank.

here is notification object without set fire date

<UIConcreteLocalNotification: 0x7fc1637aedb0>{fire date = (null), time zone = Asia/Kolkata (GMT+5:30) offset 19800, repeat interval = 0, repeat count = UILocalNotificationInfiniteRepeatCount, next fire date = Tuesday, September 5, 2017 at 3:31:44 PM India Standard Time, user info = (null)}

here is notification object with fire date

<UIConcreteLocalNotification: 0x7f96715d0ff0>{fire date = Tuesday, September 5, 2017 at 3:35:17 PM India Standard Time, time zone = Asia/Kolkata (GMT+5:30) offset 19800, repeat interval = 0, repeat count = UILocalNotificationInfiniteRepeatCount, next fire date = Tuesday, September 5, 2017 at 3:35:17 PM India Standard Time, user info = (null)}

here is code you can comment fire date and check its different

    let localNotification = UILocalNotification()
     **//Comment ..firedate and test it**
    localNotification.fireDate = NSDate(timeIntervalSinceNow: 5)
    localNotification.alertBody = "new Blog Posted at iOScreator.com"
    localNotification.timeZone = NSTimeZone.defaultTimeZone()
    localNotification.applicationIconBadgeNumber = UIApplication.sharedApplication().applicationIconBadgeNumber + 1
     UIApplication.sharedApplication().scheduleLocalNotification(localNotification)

    print(localNotification)

   for notification in   UIApplication.sharedApplication().scheduledLocalNotifications! as [UILocalNotification] {

        print(notification)

    }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!