[在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错误。
自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)}
}
}