4

周辺機器 (IOS デバイスでもあります) をスキャンして接続する簡単なアプリを作成しました。ただし、ConnectPeripheral 関数から返された CBPeripheral オブジェクトにはデバイス UUID がなく、常に null です。今、私はそれが渡されるようにどこに設定すればよいかを理解しようとしています。これが私がやっていることです。

私が行っているサービスを宣伝するため

NSDictionary *advertisingDict=[NSDictionary dictionaryWithObject: services forKey:CBAdvertisementDataServiceUUIDsKey]
[manager startAdvertising:advertisingDicts];

(フレームワークから、広告パケットでデバイス UUID を渡すことができないことを理解しています。ここで間違っている場合は訂正してください)

私のクライアントはサービスをスキャンし、関数に入ります

centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral

予想通り、peripheral.uuid は null です。このペリフェラルで connectPeripheral を呼び出すと、正常に動作します。uuid が null の場合に、接続するデバイスをどのように理解するのかわかりません。また、後で再接続したい場合はどうすればよいですか。この uuid を埋めるにはどうすればよいですか?

4

1 に答える 1

1

It has a work around. You can pass it instead of the local name of the device like this:

[self.peripheralManager startAdvertising:@{CBAdvertisementDataLocalNameKey : *the UUID*}];

And in the other device in the didDiscoverPeripheral function you can get it like this:

[advertisementData objectForKey:@"kCBAdvDataLocalName"]
于 2013-05-16T09:04:18.127 に答える