Appleと互換性のあるBluetoothデバイスを持っています。
今、私はアプリ内でそのデバイスのMACアドレスを取得しようとしています。Appleの「外部アクセサリフレームワーク」を使用してBluetoothデバイスのMACアドレスを取得することは可能ですか?
通常の方法でMACアドレスを取得することはできないと聞きましたが、このフレームワークで可能かどうかを判断するのに十分な「外部アクセサリフレームワーク」を理解していません。
Appleと互換性のあるBluetoothデバイスを持っています。
今、私はアプリ内でそのデバイスのMACアドレスを取得しようとしています。Appleの「外部アクセサリフレームワーク」を使用してBluetoothデバイスのMACアドレスを取得することは可能ですか?
通常の方法でMACアドレスを取得することはできないと聞きましたが、このフレームワークで可能かどうかを判断するのに十分な「外部アクセサリフレームワーク」を理解していません。
EAAccessory
いいえ、の MAC アドレスを取得できません。つまり、以下のコマンドを使用できます。
NSString *macAddress = [accessory valueForKey:@"macAddress"];
しかし、 EAAccessory ドキュメントでわかるように、文書化されていません。Apple がアプリを拒否するか、この機能が次の iOS アップデートで機能しなくなる可能性があります。
特定のモデルのデバイスでカスタム アクションを作成しようとしているだけの場合、ほとんどの場合、利用可能な情報のいずれかを使用できます。
<EAAccessory: 0x17445c180> {
connected:YES
connectionID:29354791
name: 23HG YKL CXN
manufacturer: MANUFACTURER NAME
modelNumber: 878253-222
serialNumber: //not always available
firmwareRevision: 1.0.0
hardwareRevision: 1.0.0
protocols: (
"com.some.protocol",
"com.some.other.protocol"
)
}
または、(modelNumber + firmwareRevision) などの組み合わせ。
PS:上記の情報では、2 つの同一のデバイスの違いがわからないことはわかっていますが、開発しているアプリの種類によっては、いずれにしても問題ありません。
それが役に立てば幸い。
これを試して:
NSString *macAddress = [accessory valueForKey: @"macAddress"];
しかし、これは最新のデバイスでのみ機能することに気付きました。(iPad 1 のアクセサリは、キー「macAddress」のキー値コーディングに対応していません)
その他のキーについては、アクセサリ ディクショナリ全体を参照してください。
NSLog(@"%@", accessory);
短い答えはノーです。それはできません。
その理由は、外部アクセサリ フレームワークが行うのは、デバイスで入力および出力データ ストリームをセットアップすることだけだからです。ハードウェアから MAC アドレスを取得する場合、ハードウェアは、デバイスと関連する iOS ソフトウェア用に作成した通信メカニズムを介してその情報を提供する必要があります。