[kCBAdvDataManufacturerData数据格式在iOS 13中已更改?

问题描述 投票:0回答:1

[在iOS 13上使用我的应用程序时,制造商数据已更改格式。

[在iOS 12中访问kCBAdvDataManufacturerData时,我的格式是:

<13376400>

但是在iOS 13中,我得到这种格式:

{长度= 4,字节= 0x13376400}

有人知道为什么这已经改变了吗?

如何获取“ 1337”部分作为字符串?

这是我访问和打印数据的方式:

    NSData *manufacturerData = [advertisementData objectForKey:kCBAdvDataManufacturerData];
    NSString *manufacturerString = [NSString stringWithFormat:@"%@", manufacturerData];
    NSString *companyIdentifier = [manufacturerString substringWithRange:NSMakeRange(1, 4)];
    NSLog(@"%@", companyIdentifier);

印刷品:冷

我尝试了ManufacturerData.bytes,但它给了我EXC_BAD_ACCESS错误。

objective-c core-bluetooth ios13
1个回答
0
投票

自iOS 13起,kCBAdvDataManufacturerData NSData的描述已更改。为了能够提取和解析advertisementData,您不应再基于description。我找到了可在iOS 13和旧版iOS上运行的Swift解决方案版本:

根据上面的代码,您可以提取制造商数据NSData

let publicData = Data(bytes: manufacturerData.bytes, count: Int(manufacturerData.length))

let publicDataAsHexString = publicData.dataToHexString // this result is same what ever the iOS version.

//// Data extension
extension Data {
    var dataToHexString: String {
        return reduce("") {$0 + String(format: "%02x", $1)}
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.