objective-c - iOS 13 中的 kCBAdvDataManufacturerData 数据格式发生了变化?
问题描述
在 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)}
}
}
推荐阅读
- java - 在java中将字符串拆分为多个部分以将其放入地图中
- python - NamedTemporaryFile 应该如何注释?
- spring-boot - 使用基于索引的运算符 <-> 进行 Postgis Spring Boot 集成测试
- react-native - 我正在使用带有加号按钮的底部选项卡,但是加号按钮在仅在 android 中反应原生的一半区域中不可点击?
- javascript - 如何从同一个对象中访问对象的属性?
- html - 如何上传没有html文件的网站
- python - 使用 Python 的请求查询数据返回状态码 512
- vue.js - 显示来自 API Vue.js 的随机对象
- java - 为什么这个视图不显示在模拟器中?
- r - 请教一个将中文数字混合字符串转换为英文数字字符串的解决方案