kCBAdvDataManufacturerData Data 格式在 iOS 13 中更改?



在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);

印花:长度

我尝试了制造商数据字节,但它给了我EXC_BAD_ACCESS错误。

自 iOS 13 起,kCBAdvDataManufacturerDataNSData的描述已更改。 为了能够提取和解析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)}
}
}

相关内容

最新更新