在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 起,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)}
}
}