クラスごとに(メソッドEAAccessoryManager
を介して)通知の取得を要求できます。registerForLocalNotifications
そのためには、プロジェクトにを追加する必要がありExternalAccessory.framework
ます。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_accessoryDidDisconnect:) name:EAAccessoryDidDisconnectNotification object:nil];
[[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications];
ハードウェアが追加されると、で通知が届きます。これを使用して、アクセサリマネージャからEAAccessoryKey
を取得できます。EAAccessory
- (void)_accessoryDidConnect:(NSNotification *)notification {
EAAccessory *accessory = [[notification userInfo] objectForKey:EAAccessoryKey];
アクセサリには、接続されているハードウェアの種類を識別するのに役立ついくつかのプロパティがあります。
NSString* name
NSString* manufacturer
NSString* modelNumber
NSString* serialNumber
NSString* firmwareRevision
NSString* hardwareRevision
NSArray* protocolStrings
オーディオドックがここで何を提供するのかわかりませんが、簡単に試して、すべてのデバイスで一貫していることを期待する必要があります:-)
特定のデバイスではなく、(特定の動作をする)デバイスのクラスに関心がある場合は、protocolStrings
役立つはずです。配列は、プロトコルに名前を付ける文字列で構成されます(ObjectiveCの意味ではなく、動作の意味で)。名前は逆引きDNS文字列(com.mycompany.myprotocol)としてフォーマットされます。
UISupportedExternalAccessoryProtocols
アプリのファイルのセクション(タイプ:文字列の配列)にこのようなプロトコル名を1つ以上指定Info.plist
すると、適切なデバイスが接続されていればアプリが起動します。