美文网首页iOS Developer
iOS10调度组处理通知问题

iOS10调度组处理通知问题

作者: Easonnnn | 来源:发表于2016-12-05 12:16 被阅读221次

    记近期处理iOS10的通知时遇到的一个坑:

    iOS10的取消未展示通知方法removePendingNotificationRequestsWithIdentifiers:和removeAllPendingNotificationRequests方法是异步执行的,导致不能取消,而引起用户已取消的通知仍会提醒。。。

    异步执行

    在解决该问题时想到了“调度组”,将该异步执行的方法放入调度组中,使用调度组进行监听,同时暂时阻塞处理该方法的队列,等处理完成后再在该队列进行后续通知用户或发出刷新UI通知操作~

    代码:

    dispatch_queue_tqueue = dispatch_get_global_queue(0,0);

    dispatch_group_tgroup = dispatch_group_create();

    dispatch_group_enter(group);

    dispatch_async(queue, ^{

    [center removePendingNotificationRequestsWithIdentifiers:@[keys]];

    dispatch_group_leave(group);

    });

    dispatch_group_notify(group, queue, ^{

    // 开始调度的通知

    });

    // 用户提醒  正在处理中

    // DISPATCH_TIME_FOREVER表示一直等待该任务,直到执行结束该队列的阻塞才会被取消

    dispatch_group_wait(group,DISPATCH_TIME_FOREVER);

    因为处理取消的操作系统执行速度比较快,对于主队列的阻塞并不会太长所以采取了这种方式,有大神会有好的方法还请不吝赐教~

    相关文章

      网友评论

        本文标题:iOS10调度组处理通知问题

        本文链接:https://www.haomeiwen.com/subject/svmkmttx.html