4

デバイスのBluetooth情報を表示する必要があるアプリケーションを開発しています。私は最終的にBluetoothのMACアドレスに関していくつかの成功を収めましたが、デバイス名を取得することはできません. パブリック API を介して合法的にデバイス名を取得する方法はありますか?

NSString*btMacAddr = @"Bt ";
BOOL                        success;
struct ifaddrs *            addrs;
const struct ifaddrs *      cursor;
const struct sockaddr_dl *  dlAddr;
const uint8_t *             base;

success = getifaddrs(&addrs) == 0;
if (success) {
    cursor = addrs;
    while (cursor != NULL) {
        if ( (cursor->ifa_addr->sa_family == AF_LINK)
            && (((const struct sockaddr_dl *) cursor->ifa_addr)->sdl_type == IFT_ETHER)
            && (strcmp(cursor->ifa_name, "en0") == 0)) {
            dlAddr = (const struct sockaddr_dl *) cursor->ifa_addr;
            base = (const uint8_t *) &dlAddr->sdl_data[dlAddr->sdl_nlen];

            if (dlAddr->sdl_alen == 6) {
                //fprintf(stderr, ">>>             WIFI MAC ADDRESS: %02x:%02x:%02x:%02x:%02x:%02x\n", base[0], base[1], base[2], base[3], base[4], base[5]);
                //fprintf(stderr, ">>> IPHONE BLUETOOTH MAC ADDRESS: %02x:%02x:%02x:%02x:%02x:%02x\n", base[0], base[1], base[2], base[3], base[4], base[5]+1);
                btMacAddr = [NSString stringWithFormat:@"Mac Address  :  %02x : %02x : %02x : %02x : %02x : %02x", base[0], base[1], base[2], base[3], base[4], base[5]+1];


            } else {
                fprintf(stderr, "ERROR - len is not 6");
            }
        }
        cursor = cursor->ifa_next;
    }
    freeifaddrs(addrs);
}
4

2 に答える 2

1

[[UIDevice currentDevice] name]; のようなものではないでしょうか。

これにより、「Henriks iPhone」のような iOS デバイスの名前が付けられます

于 2013-03-31T09:28:06.550 に答える
0

ドキュメントでは明示されていませんが、centralManager:didDiscoverPeripheral:advertisementData:RSSI:などの CBCentralManagerDelegate メソッドでは、デリゲートに渡されるパラメーターの 1 つが CBPeripheral です。

興味深いことに、Apple は CBPeripheral の公式ドキュメントをリストしていませんが、CBPeripheral.h のヘッダー ファイルを見ると、そこ_nameから抽出できる " " フィールドがあるように見えます (私にとっては、私が " peripheral.name" を実行したとき、コンパイラーは何かのプロパティが定義されているかのように文句を言いませんでした)

しかし、もう一度、私の答えを確認するために、Apple の CoreBluetooth 温度センサーのサンプル コードをダウンロード iPhone [centralManager scanForPeripheralsWithServices:nil options:nil];4S でCoreBluetooth[WARNING] <CBConcreteCentralManager: 0x2087fc00> is not powered on「設定)。

とにかく、私のヒントが実際にあなたを助けることを願っています.

于 2013-03-29T09:15:40.527 に答える