2

心拍数モニター周辺機器をシミュレートするアプリがあります (周辺アプリ)。データを受信して​​表示するアプリもあります (中央アプリ)。

中央アプリは、名前に基づいて、検出された周辺機器に接続することを決定しました。

問題は、名前が常に"iPhone".

広告は次のように行われます。

- (IBAction)switchChanged:(id)sender
{
    if (self.advertisingSwitch.on) {
        NSDictionary *advData =
        @{CBAdvertisementDataLocalNameKey:@"Custom Name",
          CBAdvertisementDataServiceUUIDsKey:@[[CBUUID UUIDWithString:@"180D"]]};
       [self.peripheralManager startAdvertising:advData];
        NSLog(@"Advertising");
    }

    else {
        [self.peripheralManager stopAdvertising];
        [[self timerInterval] invalidate];
        NSLog(@"Stopped advertising");       
    }      
}

しかし、中央側では、内側に

- (void) centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)aPeripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI

name プロパティは変更されていません。

やるべきことはありますか?

4

6 に答える 6

2

CBAdvertisementDataLocalNameKey は、advertisementData 内の kCBAdvDataLocalName のみを変更します。広告データを nslog すると、次のようなデータが表示されます。

{
    kCBAdvDataIsConnectable = 1;
    kCBAdvDataLocalName = Custom Name;
    kCBAdvDataServiceUUIDs =     (
        "FB694B90-F49E-4597-8306-171BBA78F846"
    );
}
于 2015-07-19T08:43:28.437 に答える
0

私も同じ問題を抱えてる。私はマイクと主張していますが、これは本当に IOS のバグのようです。最初に TI マルチツール (たとえば) を使用して周辺機器を検出すると、CBAdvertisementDataLocalNameKey で設定したとおりにデバイスが検出されます。

Dan1one へ: デフォルトと同じ文字列を取得するには、名前ではなく [[UIDevice currentDevice] model] を使用する必要があります。

于 2015-05-08T07:53:46.000 に答える