苹果应用
[English]
1.iOS 蓝牙设备名称缓存如何解决?
下面给出 OC 和 Swift 的解决方法:OC
(void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral
advertisementData:(NSDictionary<NSString *,id *)advertisementData RSSI:(NSNumber *)RSSI{
NSString *localName = [advertisementData objectForKey:@"kCBAdvDataLocalName"];}
Swift
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral,
advertisementData: [String : Any], rssi RSSI: NSNumber) {
let localName = advertisementData["kCBAdvDataLocalName"]}
更新时间:2022.4.22
2. 阿里飞燕平台 SDk 为何报错找不到 #import <IMLDeviceCenter/IMLDeviceCenter.h\ 头文件?
把 ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES 设为 YES。
更新时间:2022.4.22
3.iOS 13.0 及以上版本如何获取 Wi-Fi 信息?
在 .plist 文件中开启定位权限。
Xcode 开启 Wi-Fi 权限。
Apple 官网申请 Identifiers Access Wi-Fi Information 权限。
手动请求定位权限。
导入系统框架 #import <SystemConfiguration/CaptiveNetwork.h\ >获取 Wi-Fi 信息。
更新时间:2022.4.22
4.iOS 14.0 如何增加本地网络权限?
在 .plist 文件中开启 NSLocalNetworkUsageDescription 权限。
更新时间:2022.4.22
5. AWS 如何生成 .p12 证书?
openssl pkcs12 -export -in
/Users/xxx/Desktop/awscer/73bb87b879-certificate.pem.crt -inkey
/Users/xxx/Desktop/awscer/73bb87b879-private.pem.key -CAfile
/Users/xxx/Desktop/awscer/AmazonRootCA1.pem -out awsiot-identity.p12
更新时间:2022.4.22
6. 如何获取 AWS SDK 自带登录注册验证码?
使用邮箱注册的账号在获取验证码时,由于网络原因,需要等待较长时间(大概 2 ~ 4 小时左右)才能收到。
点击获取验证码之后不可重复点击,否则旧验证码将失效。
更新时间:2022.4.22
7. APP 如何在后台扫描蓝牙(两种方式)?
第一种方式:扫描所有蓝牙设备。
[self.cbCentralMgr scanForPeripheralsWithServices:nil options:nil];
第二种方式:扫描指定 serviceUUID 蓝牙设备。
[self.cbCentralMgr scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:@"指定的serviceUUID"]] options:nil];
更新时间:2022.4.22
8. 如何解决 iOS 14.5 UDP 广播 sendto 返回 -1 的错误?
问题背景:
手机系统升级到 iOS 14.5 之后,UDP 广播发送失败。
项目中老版本使用到 socket。
项目中新版本使用 CocoaAsyncSocket。
两种 UDP 发包方式都会报错 No route to host。
报错具体内容如下:
sendto: -1
client: sendto fail, but just ignore it
: No route to host
问题解决:
由于 192.168.0.255 广播地址只是当前本地地址,App 中需要动态改变前三段 192.168.0 本地地址,解决方法如下:
NSString *localInetAddr4 = [ESP_NetUtil getLocalIPv4];
NSArray *arr = [localInetAddr4 componentsSeparatedByString:@"."];
NSString *deviceAddress4 = [NSString stringWithFormat:@"%@.%@.%@.255",arr[0], arr[1], arr[2]];
发包过滤,只需要过滤地址最后一段是否为 255
bool isBroadcast = [targetHostName hasSuffix:@"255"];
更新时间:2022.4.22