我目前正在处理连接到IOS设备的智能卡读卡器作为外部附件。当应用程序进入后台并保持一段时间(比如说10-15秒)时,iOS会断开读卡器的连接,以免耗尽电池电量。这会向NSNotificationCenter
发送通知,表明读者(EAAccessory
)已断开连接。当应用程序到达前台时,通常需要一些时间才能将阅读器连接回来。
我可以使用以下方法处理这些通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(EAaccessoryConnect) name:EAAccessoryDidConnectNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(EAaccessoryDisConnect) name:EAAccessoryDidDisconnectNotification object:nil];
问题是,有时当应用程序在后台运行较长时间(超过20分钟)时,显然会将多个EAAccessoryDidDisconnectNotification
发布到通知中心以及EAAccessoryDidConnectNotification
。
当我收到EAAccessoryDidDisconnectNotification
时,我必须充分处理它,并留出一些时间,直到收到EAAccessoryDidConnectNotification
。但是当另一个EAAccessoryDidDisconnectNotification
出现时,它会因我的设置而混乱,并且用户已从应用程序中注销。
我的问题是 - 是否有可能在应用程序到达前台后应用程序处于后台时检查已发送到NSNotificationCenter的通知,并删除多个相同类型的通知 - 只留下一个通知一种。或者你建议我实施其他任何解决方案吗?