- 博客(194)
- 收藏
- 关注
原创 harmonyOS学习 - rcp请求
本文介绍了网络请求的基本流程和权限配置。首先概述了HTTP请求方法(GET/POST等)和RCP官网资源。使用网络功能需申请对应权限:获取网络信息、修改连接状态和INTERNET权限。具体实现步骤包括:1)创建RCP会话对象;2)配置超时和安全参数;3)设置请求头并创建请求;4)发起请求获取数据;5)支持通过session.cancel()取消请求。文中提供了关键代码示例,展示了从配置到执行的完整请求流程。
2025-08-06 16:03:24
原创 iOS崩溃堆栈分析
在 iOS 开发中,分析崩溃日志和堆栈信息是调试的重要环节。上线APP往往只能获取到堆栈信息无法获取到具体的崩溃日志,需要我们分析堆栈信息获取具体信息。通过 Xcode: Window > Devices and Simulators > 选择设备 > View Device Logs。通常在 Archives 目录中: ~/Library/Developer/Xcode/Archives/直接从设备: 设置 > 隐私 > 分析与改进 > 分析数据。通过 App Store Connect 下载崩溃报告。
2025-04-16 17:22:38
737
原创 Swif开发 - NFCReaderSession
在iOS的CoreNFC框架中,主要是NFCNDEFReaderSession和NFCTagReaderSession这两种常用的ReaderSession类,用于处理NFC读取操作。
2025-01-20 10:16:15
961
原创 蓝牙开关app蓝牙状态变化
disconnect、poweredOff和powereOn。:打开设置,进入蓝牙列表页面,关闭蓝牙,再打开蓝牙。app被系统杀死,打开app时会重新打开app。关闭蓝牙时,会先断开已连接蓝牙,再关闭蓝牙。:poweredOff和powereOn。:下滑系统导航栏,关闭蓝牙,再打开蓝牙。
2024-12-17 14:58:42
351
原创 蓝牙特征值
用于在设备间的数据同步中实现高效的实时数据更新。Notify特性允许设备在数据发生变化时主动通知其他设备,而不需要其他设备主动查询,从而减少了通信的延迟和功耗。:Notify是一种单向通信机制,从设备发送数据给主设备,但主设备无法对此进行确认;而Indicate是双向通信机制,主设备必须对接收到的数据进行确认。用于从设备向主设备发送数据,并要求主设备对接收到的数据进行确认。Indicate机制提供了一种双向通信方式,确保数据的可靠传输。蓝牙设备中的一种数据读取功能,允许外部设备从特性中读取当前的值。
2024-12-16 14:05:33
625
原创 app拉活CLBeaconRegion
这种模式支持后台运行,即使应用被关闭或设备处于休眠状态,也能检测到设备的进出事件。通过Ranging模式,应用可以获取iBeacon的RSSI(接收信号强度指示)值,从而估算设备与iBeacon之间的距离。当notifyEntryStateOnDisplay属性设置为true时,如果设备在Beacon区域内且用户打开了屏幕(通过按下Home键或电源键点亮屏幕),系统会调用代理对象的。适用于需要知道设备是否进入或退出某个区域的场景,如推送通知、地理位置提醒等。开启区域监听需要设置监听信号值。
2024-11-29 16:55:30
830
原创 Flutter踩坑记录(三)-- 更改入口执行文件
我们在flutter 中可能不习惯默认的lib/main.dart 作为入口文件,会修改成index.dart 或者修改main.dart的位置,
2024-11-21 15:40:21
703
原创 Flutter踩坑记录(二)-- GestureDetector+Expanded点击无效果
Expanded是自动扩展布局,它可以用于RowColumn或Flex布局中。Expanded部件会尝试占用尽可能多的空间。
2024-11-20 14:00:22
789
1
原创 RSSI滤波方法
卡尔曼滤波的基本思想是:以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型,利用前一时刻的估计值和当前时刻的观测值来更新对状态变量的估计,求出当前时刻的估计值,算法根据建立的系统方程和观测方程对需要处理的信号做出满足最小均方误差的估计。对同一个节点接收到的多个RSSI值中,由于各种干扰,必然存在由误差引起的小概率事件,通过高斯模型选取高概率发生区的RSSI值作为有效值,再求其几何平均值,这种方法能够有效地减少小概率、大干扰对整体测量数据的影响,提高定位的准确性。否则判断未发现异常值。
2024-09-05 11:20:11
939
原创 RSSI定位算法
定位终端接收到iBeacon基站发来的信号强度,然后根据无线信号强度的渐变模型得出基站与被定位终端的直线距离,然后再根据高度补偿法,得出基站与终端的平面距离,当终端接收到三个以上不同基站的信号,即能得出与三个以上不同基站的水平距离,且这些基站的坐标坐标已知,就可以对这个终端进行定位。
2024-08-19 10:24:34
2523
原创 蓝牙设备中的UUID
蓝牙设备的ID,通过此ID可以进行连接蓝牙设备,连接成功之后可以获取serviceUUID,serviceUUID可以有多个,每个serviceUUID可以看作是服务,每个serviceUUID中可以定义多个characteristics uuid(特征值)。特定的:{0000xxxx-0000-1000-8000-00805F9B34FB}Service UUID已经有了很多特定的,也可以自己定义。Device UUID也可以被称作为DeviceID。
2024-05-29 15:52:12
5229
原创 HarmonyOS:Preferences每次启动都会清除
在第一次启动应用时,手动存储了一些测试数据,并利用Preferences将相关信息持久化地存储到设备中。第二次在该设备上运行同一应用时会判断是否存在该文件。但调试时发现:每次重新启动应用后相关文件都被删除了,数据都为空。
2024-04-28 14:31:58
611
原创 HarmonyOS开发 - hilog日志系统
harmony OS提供了系统日志打印 hilog开发者可以通过使用这些接口实现日志相关功能,输出日志时可以指定日志类型、所属业务领域、日志TAG标识、日志级别等。
2024-04-22 13:43:44
697
原创 HarmonyOS-静态库(SDK)的创建和使用
在HarmonyOS中,静态库(通常以.har为文件扩展名)是一种用于代码和资源共享的机制。它允许开发者创建可重用的组件、接口和资源,以便在多个应用中共享和复用。
2024-04-19 10:26:24
1885
原创 Swift 中的 async/await
async-await 是在 WWDC 2021 期间的 Swift 5.5 中的结构化并发变化的一部分。Swift 中的并发性意味着允许多段代码同时运行。这是一个非常简化的描述,但它应该让你知道 Swift 中的并发性对你的应用程序的性能是多么重要。有了新的 async 方法和 await 语句,我们可以定义方法来进行异步工作。使用 async-await 方法调用的结构化并发使得执行顺序的推理更加容易。方法是线性执行的,不用像闭包那样来回走动。// 1. 调用这个方法// 3. 异步方法内容返回。
2024-04-10 10:39:34
2736
原创 蓝牙HID协议
The Human Interface Device (HID) ,即人机交互设备。定义了蓝牙在人机接口设备中的协议、特征和使用规程。典型的应用包括蓝牙鼠标、蓝牙键盘、蓝牙游戏手柄等。该协议改编自USB HID Protocol。host和device是USB中的角色概念H OST相当于PC主机,device相当于鼠标、键盘这些USB外设ble hid中,可以看做蓝牙设备就是device,手机就是host。
2024-04-07 11:23:02
3288
原创 SDK does not contain ‘libarclite‘ at the path ‘‘try increasing the minimum deployment target
升级Xcode 15后有的SDK会报出以下错误在真机运行会提示 libarclite_iphone.a 缺少从错误信息看是缺少指定文件。
2024-03-21 16:19:41
2282
原创 面试题 -- 算法问题
顺序存储方式把逻辑上相邻的节点存储在物理位置撒花姑娘相邻的存储单元里,节点间的逻辑关系由存储单元的邻接关系来体现。3、索引存储方式:索引存储方式是采用附加的索引表的方式来存储节点信息的一种存储方式。2、链接存储方式:链接存储方式比较灵活,不要求逻辑上相邻的节点在物理位置上相邻,节点间的逻辑关系由附加的引用字段来表示。稠密索引:这种方式中每个节点在索引表中都有一个索引项,其中索引项的地址知识节点所在的存储位置。4、散列存储方式:散列存储方式是根据节点的关键字直接计算出该节点的存储地址的一种存储方式。
2024-03-06 14:27:25
1010
原创 面试题 -- 内存管理
在编译期,ARC用的是更底层的C接口实现的retain/release/autorelease,这样做性能更好,也是为什么不能再ARC下手动retain/release/autorelease,同时对同一上下文的同一对象的成对retain/release操作进行优化(即忽略掉不必要的操作);全局变量和静态变量是放在一起的,初始化的全局变量和静态变量存放在一块区域,未初始化的全局变量和静态变量在相邻的另一块区域,程序结束后由系统释放。堆的操作方式与数据结构中的堆不同,操作方式类似于链表。
2024-03-06 14:16:38
768
原创 面试题 -- UI控件
Auto Layout的本质是用一些约束条件对元素进行约束,从而让他们显示在我们想让他们显示的地方。指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。
2024-03-06 13:57:33
548
原创 swift 长按桌面图标弹出快捷选项
UIApplicationShortcutItem:可以看作是3D Touch点击后,弹出菜单每行对应的模型,一行对应一个。主屏交互:就是在手机的桌面页,用力的按压(当然别太用力。按碎了屏幕)应用图标,生成的几个快捷操作按钮的。3D Touch通过屏幕下方的压力感应器来感知不同的压力触控,从而提供预览、操作或关联菜单等功能。动态添加时就是我们可以通过生成shortcutItem对象数组,添加给。在工程的info.plist文件中添加相关的属性。主屏交互的按钮有指定的模型类,,快捷按钮的唯一标示符。
2024-03-01 16:18:24
1719
原创 HarmonyOS学习--三方库
ohos/lottie是基于lottie-web开发,集成在三方库社区内的开源版本,是HarmonyOS系统中复杂动画的一种解决方案。安装完成后在根目录下的oh-package.json5中,可以找到lottie。以lottie示例使用三方库。
2024-02-21 14:13:40
2716
原创 Harmony学习 -- 网络管理
官网地址HTTP数据请求:通过HTTP发起一个数据请求。WebSocket连接:使用WebSocket建立服务器与客户端的双向连接。Socket连接:通过Socket进行数据传输。应用通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。
2024-02-05 10:51:44
1299
原创 HarmonyOS常用基础组件
TabContent的tabBar属性除了支持string类型,还支持使用@Builder装饰器修饰的函数。@Entry@ComponentColumn() {})build() {.tabBar(this.TabBuilder('首页', 0, $r('app.media.home_selected'), $r('app.media.home_normal')))
2024-02-04 15:33:32
2327
原创 前端开发-按钮
就是直接在wxml文件中设置,如上述代码,直接设置style,当宽度设置合适,按钮会自动并入一排(并列)图片样式可以在wxss文件的class=btn-img中进行设置。这里的按钮宽度在wxss文件中设置不了,这里有一个方法可以设置。其实和HTML很像,wxss文件如下。重点是type=“primary”其实就是按钮颜色为绿色。按钮有一些系统的样式。
2024-02-02 10:29:20
778
原创 ECC算法学习(二)Security加密函数
Secure Enclave 与主处理器隔离,以提供额外的安全层,即使在应用处理器内核受到威胁时也能确保敏感用户数据的安全。虽然 Secure Enclave 不包括存储,但它有一种机制可以将信息安全地存储在附加存储上,该存储与应用处理器和操作系统使用的 NAND 闪存分开。函数直接在 Secure Enclave 上生成,并将参数字典中的 kSecAttrTokenID 密钥设置为 kSecAttrTokenIDSecureEnclave。
2024-02-02 10:13:42
767
原创 iOS 后台任务总结
并且,即使你的 APP 已经挂掉啦,下载任务还是会继续,等到下载完成啦,系统会唤起你的 APP 进程,并通知你,但如果是用户主动杀掉的你的进程,那么系统会自动取消下载任务。,你需要在这个回调里检查是否有新内容可用,如果有,就开启后台下载,推荐使用 NSURLSession 来建立,下载完成后,你必须调用这个方法出入 的 completionHandler 并传入一个 整型值 来表示 你的处理是否正常,UI是否已经更新,让系统来决定更新 snapshot等;但我看介绍,跟前面讲解的 后台下载文件没啥区别啊!
2024-01-31 16:50:17
2617
原创 iOS推送通知
推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能。是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的。一般说来,当要显示消息或下载数据的时候,通知是由远程服务器(程序的提供者)发送,然后通过苹果的推送通知服务(Apple Push Notification Service,简称APNS)推送到设备的程序上。直接由应用程序(程序中写入对应代码)给用户发出通知本地通知需要用到一个重要的类:本地通知的实现步骤:(1)创建本地通知。
2024-01-25 14:20:15
3506
原创 Swift 分类继承
在SDK中有打印日志的公共方法,需要将打印的内容透传给外部APP调用,使APP可以自由拦截日志打印,从而可以根据APP的需要使用日志调试工具。
2024-01-19 11:01:28
576
原创 MySQL数据库进阶
重要的是注意到,访问控制的目的不仅仅是防止用户的恶意企图。数据梦魇更为常见的是无意识错误的结果,如错打MySQL语句,在不合适的数据库中操作或其他一些用户错误。MySQL在这个问题发生时报告错误,但由于多数MySQL服务器是作为系统进程或服务自动启动的,这些消息可能看不到。:(transaction processing)可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行。事务处理是一种机制,用来管理必须成批执行的MySQL操作,以保证数据库不包含不完整的操作结果。
2024-01-17 09:39:26
1074
原创 MySQL视图、存储、游标、触发器
存储过程的代码位于BEGIN和END语句内,它们是一系列SELECT语句,用来检索值,然后保存到相应的变量(通过指定INTO关键字)游标(cursor)是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。就是当我们在Navicat中建立自己的连接并打开后你会发现,它自带了几个数据库,而且数据库中含有很多表,那些就是系统表,而且当你在那些自带的数据库中建表的时候,我们的系统也会将那些表认为是系统表。利用视图,可一次性编写基础的SQL,然后根据需要多次使用。
2024-01-16 15:36:41
1368
原创 MySQL插入、更新和删除
在你使用CREATE TABLE语句时,该引擎具体创建表,而在你使用SELECT语句或进行其他数据库处理时,该引擎在内部处理你的请求。它使用的是列的位置,因此SELECT中的第一列(不管其列名)将用来填充表列中指定的第一个列,第二列将用来填充表列中指定的第二个列,如此等等。如果要防止意外覆盖已有的表,SQL要求首先手工删除该表(请参阅后面的小节),然后再重建它,而不是简单地用创建表语句覆盖它。不允许NULL值的列不接受该列没有值的行,换句话说,在插入或更新行时,该列必须有值。但是,不一定要求列名匹配。
2024-01-12 16:29:05
2080
原创 数据库SELECT语句
这样,MySQL可以快速有效地决定哪些词匹配(哪些行包含它们),哪些词不匹配,它们匹配的频率,等等。当SQL看到上述WHERE子句时,它理解为由供应商1002制造的任何价格为10美元(含)以上的产品,或者由供应商1003制造的任何产品,而不管其价格如何。这是一个重要的区别,WHERE排除的行不包括在分组中。在使用OUTER JOIN语法时,必须使用RIGHT或LEFT关键字指定包括其所有行的表(RIGHT指出的是OUTER JOIN右边的表,而LEFT指出的是OUTER JOIN左边的表)。
2024-01-12 14:00:06
2911
原创 Mac创建本地数据库并连接
错误的原因是由于从mysql5.7版本之后,验证方式默认从原来的mysql_native_password改成了caching_sha2_password,你如果下载安装的是最新的版本,那就会有这个问题。如果是安装包安装的5.7及以前版本则不存在此问题。可以在本地“系统偏好设置”最下方,查看自己的MySql服务是否正常。包含两个脚本 create.sql 和 populate.sql.在客户端运行脚本可以创建出样例表。可以选择默认配置安装数据库。如果提示连接失败,可以尝试。
2024-01-10 14:15:52
1946
原创 iOS手机查看蓝牙底层日志
packketlogger将开始跟踪此配置文件安装的iOS设备上的所有蓝牙活动。在这个iOS设备屏幕的左上角,将显示一个脉冲图标(见下图)。这意味着跟踪正在进行中。,下载安装 Additional Tools ,点击Hardware,点击packetLogger应用。连接设备,点击File-》New iOS Trace,打开一个新窗口。在浏览器中点击Profile,下载文件。在App Store下载Xcode。在设置中找到描述文件,点击安装。在手机浏览器打开链接。
2024-01-04 11:11:44
2351
原创 CLLocationManager代理不执行问题
后是无法定位的,任何代理函数都不会被调用,而且表面上还会有提示是否定位的MessageBox,一切看起来都正常,就是代理不会执行。似乎定位的返回(调用代理)只能有主线程来调用,并且这个对象还必须是在主线程创建的。在iOS中 CLLocationManager 定位功能可以初始化多个,当位置变化,或其他代理执行时,多个类中的代理方法都会执行。如果是子线程中创建CLLocationManager,那么。
2023-12-28 11:37:51
781
1
蓝牙配对过的列表获取
2023-08-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人