您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页iOS10调度组处理通知问题

iOS10调度组处理通知问题

来源:伴沃教育

记近期处理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);

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

Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务