現在、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 に送信されたかを確認し、同じ種類の複数の通知を削除して、同じ種類の通知を 1 つだけ残すことは可能ですか? または、これに対処するために実装することを提案する他の解決策はありますか?