自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 如何在iOS应用中更好的调试H5页面

在APP中,H5页面可以通过加载vConsole脚本,来查看页面的日志、异常、网络加载、设备信息、储存信息、元素。但是,JS脚本加载于页面Dom挂载之后,这样就会使得这一区间的信息丢失,而且vConsole的Error也会有采集不到的情况。本篇先简单讲述WKWebView的加载流程,再通过Safari网页检查器,实现H5页面的调试与问题定位。

2022-03-23 18:32:38 8294

原创 OC/C/JS-基础手册

_attribute__((constructor)) 构造函数声明(在APP进入main之前调用)析构函数声明(在APP进程被杀掉之前调用 )

2022-01-06 15:33:51 420

原创 iOS性能优化 - 分析&应用

APP 的性能指标主要是包括 CPU、GPU、内存、电池耗电、网络加载几个大的方面,网络加载在下文会提及,电池耗电主要是由于 CPU、GPU、网络等因素决定,所以不作为基础的指标。

2021-09-21 17:13:45 4931

原创 浅谈IOS工程架构

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。备注:在云端页面路由配置较多的情况下,频繁正则匹配会有一定的性能开销,native与web页可以不采用云端下发的路由匹配机制,通过已注册的路由实现页面的生成与跳转(native由url-path命中规则)。

2020-11-19 00:48:30 3297 2

原创 CocoaPods - podspec私有库配置

CocoaPods Specs 源地址:原始仓库-github、镜像仓库-gitee查看 CocoaPods 的 repos 与 CachesPodfile 中添加私有库的 source、pod 配置,在终端输入 pod install 构建在 Podfile 中使用 post_install 自定义 pod 库的 Build Settings。

2019-05-21 11:13:48 9088 2

原创 IOS内存管理

1. 栈区(stack):由编译器自动分配释放,函数的参数值,局部变量等值。2. 堆区(heap):一般由开发人员分配释放,若不释放,则可能会引起内存泄漏。Objective-C提供了两种种内存管理方式:(MRC,手动引用计数器),(ARC,自动引用计数)。ARC作为苹果新提供的技术,苹果推荐开发者使用ARC技术来管理内存;

2018-09-05 10:49:32 7123

原创 Runloop应用详解

RunLoop 是 iOS 应用于线程中的一种循环机制。系统本身没有创建 RunLoop 的 API,不过可以通过 currentRunLoop 获取当前 RunLoop。主线程本身就存在一个 RunLoop,而且是运行转态,子线程的 RunLoop 需要手动开启,否知无法监听到输入源与定时源。子线程 RunLoop 随着所在子线程的事件源结束而关闭,随着所在子线程的结束而释放。

2018-09-04 16:45:03 1099

原创 OC与Swift的相互调用

1、在 Build Settings 搜索 Packaging ,设置为 YES2、新建 LottieBridge.swift 文件,自动生成桥3、在 LottieBridge.swift 中,定义Swift类继承于OC类,声明或@objc,实现相关方法4、在OC代码中引用,调用Swift相关方法。

2023-07-31 19:31:49 4295

原创 SwiftUI-基础

遵守PreviewProvider协议,定义Previews结构体。Main函数与App结构体的绑定,遵循App协议。兼容UIApplicationDelegate。遵守View协议,定义View结构体。Swift 结构体与类的构造函数。

2023-07-25 18:49:24 1883

原创 基于OC端的Bridge-API组件化应用

在移动应用开发中,组件化可以提高代码的模块化和重用性,降低耦合度。当下大部分APP都至少包含一到两种Hybrid框架,H5基本是必要的,还可能叠加React Natvie、Weex或Flutter。对于Hybird来说,Native的很多能力是其不具备的,需要通过各自的来实现功能扩展,经过长时间的迭代后会产生大量的API。

2023-04-20 19:44:20 546

原创 基于CocoaPods的多Project工程应用

2)在工程中引入 Framework 对应的 .h 文件声明,实现具体 API 的调用。3)在 Framework Project 中提供给外部使用的能力,类头文件的。1)在 Framework 对应的 .h 文件中添加提供给外部使用的类声明。4)选择 Framework Target 对应的 Scheme,7)添加 Framework Target 的 pod 配置,并。使用的 Framework 包需要改为。6)导入主工程中,Embed 保持默认。2)添加 CocoaPods 的。

2023-03-29 18:53:58 571

原创 xcode13环境下iOS15兼容问题汇总

一、调用canOpenURL的差异通过xcode13运行的APP,在iOS15系统上会限制info.plist的scheme白名单个数,前50个scheme有效,如果超出50个,调用canOpenURL会一直返回NO,无论你的手机是否安装该URL Scheme的应用。苹果官网对canOpenURL方法的调整做了说明,希望APP内减少对scheme的依赖,通过Universal Link的方式去实现应用跳转。/// 手机安装了美团APP,如果imeituan添加在列表的第49个,isInstal

2022-01-18 23:15:26 4921

原创 Mac指令备忘

上传dysm:java -jar buglyqq-upload-symbol.jar -appid 968259478589 -appkey 68925796-3259-9986-5698-bd66dd99dd45d -bundleid com.base.phone -version 1.0.0 -platform IOS -inputSymbol /Users/mikazheng/Downloads/MKBase.app.dSYM。git clone Git地址 拉取Git仓库到本地。

2021-09-01 18:06:16 294

原创 基于SRWebSocket的WebSocket长连接

背景搭建稳定及轻量的长链接能力,应用于业务方的消息提醒、状态更新等即时任务,同时也方便web应用的快速接入。WebSocket是基于Http协议的,或者说借用了Http协议来完成一部分握手,在握手阶段与Http是相同的,握手成功后建立双向的socket通道。由于WebSocket的握手类似于Http协议,所以WebSocket的建联也支持常规的http配置,如请求头(包含cookie)、超时时长。...

2021-08-15 19:14:50 1704

原创 TCP粘包、拆包的场景与处理

1、发送端在每个包结尾处添加特殊字符,接收方根据此特殊字符接收相应的包数据。2、发送端给每个数据包添加包首部,首部中应该至少包含数据包的长度,这样接收端在接收到数据后,通过读取包首部的长度字段,便知道每一个数据包的实际长度了。3、发送端在包首部与包内容之间添加特殊字符,接收方先解析包头,获取包内容大小并接收包内容。/// 有数据-触发- (void)readDataWithTimeout:(NSTimeInterval)timeout tag:(long)tag;/// 读到相应长度的数

2021-07-02 16:35:31 363

原创 IOS审核常见问题汇总

APP信息与元数据不完整,或者是与APP实际内容不匹配,需要补充或更改APP信息与元数据。 审核元数据被拒,只需更新元数据并在解决方案中心回复审核人员,不需要重新打包提审。 APP没有接苹果IAP,审核期间不允许出现虚拟商品,或者金融属性的商品(信贷、借呗)。 方法命名存在歧义,或者是一些奇怪的命名,有可能被认为是隐藏性功能或者代码混淆(talkingData)。 APP预览图需要与APP内容呈现一致,能够清楚的呈现APP的用途,而且必须区分全面屏与非全面屏。 ..

2021-01-27 12:50:10 1027

原创 xcode12环境下iOS14兼容问题汇总

1、UIProgressView高度问题/* Xcode12-IOS14的兼容 */if (@available(iOS 14.0, *)) { CGAffineTransform transform = CGAffineTransformMakeScale(1.0f, 1.0f); transform = CGAffineTransformMakeScale(1.0f, 0.5f); _progressView.transform = transform;}2、获取I

2020-12-09 12:36:15 1594

原创 IOS-Flutter页面的展示与通讯

从main函数配置routeChannel,实现路由切换。创建FlutterViewController。初始化FlutterBridge,实现通知的监听。通过routeChannel配置路由信息。FlutterBridge的具体实现。FlutterPlugin的具体应用。MyAppPage代码示例。初始化Engines。

2020-05-31 01:06:33 1317

原创 IOS WKWebView与Cookie问题梳理

解决方案2对比跳转URL与页面URL的host,如果为跨域且未做处理,拦截该跳转,重新配置request的cookie信息,再loadRequest一下。html资源加载一般是不会去判断登录态的,WKWebView在加载同域名的第一个html文件时,没有带cookie信息,所以直接在加载html的时重定向去判断登录态就会有问题。解决方案1对比跳转URL与页面URL的host,如果为跨域,通过WKUserScript在注入cookie信息(document.cookie)。...

2020-01-16 18:26:30 8202

原创 H5资源本地化策略 - iOS

取决于前端打包能力是否支持,结构图如下(webFast | module | js、css、image、font)​。

2019-12-29 21:31:44 2155

原创 IOS项目接入Flutter及依赖库

具体实现流程1)在IOS工程同级目录上创建flutter_module独立的项目$ flutter create -t module flutter_module2)在IOS项目的Podfile中添加以下代码,给工程target配置flutter相关的podstarget "AppTest" do flutter_application_path = '../flutter...

2019-12-26 22:41:18 1201

原创 APP-Log日志采集

JSAPI日志[模块] jsapi_action-- 方法名-- json:参数[h5-bridge] jsapi_handle--openUrl -- json:{url : http://www.baidu.com}[h5-bridge] jsapi_callback --openUrl -- json:{result : true}[weex-bridge] jsapi_handle-- openSysBrower -- json:{url : http://www.bai...

2019-11-18 17:13:19 1521

原创 iOS-逆向/反编译

根据 Crypt ID 来判断是否已经砸壳,AppStore 下载的 ipa 包 Crypt ID 为1,需要先砸壳才能进行静态分析、动态调试等操作。用 Mac 自带 “归档使用工具” 解压 ipa 文件,生成 Payload,打开文件夹,右键点击 app,显示包内容。3、取出 arm64 架构中的具体 API 定义。查看 Mach-O 的文件结构。2、导出 arm64 架构。1、查看静态库的支持信息。

2019-09-02 18:16:52 494

原创 Dart基础语法

数据类型Dart是强类型语言,与JavaScript有所区别,类型不匹配无法编译。int、double、boolint year = 27;double percent = 0.333;int stringInt = int.parse('27');double stringDouble = double.parse('0.333');var var_year = 27;...

2019-07-17 18:07:59 794

原创 Flutte环境配置(Mac)

Mac运行环境MacOS和Xcode升级到最新版本 安装VS Code,添加Flutter拓展 安装或更新HomeBrew(brew install、brew update) 安装CocoaPods(brew install cocoapods、pod setup) 安装Dart(brew tap dart-lang/dart、brew install dart)备注:An exce...

2019-07-12 00:10:48 332

原创 define用法补充

1)字符串的常量用法。

2019-05-17 17:00:32 274

原创 Xcode编译报错 & 上传ipa异常

Xcode编译报错1)clang: error: linker command failed with exit code 1 (use -v to see invocation)​​​​​​​需要右键点击Reveal in Log才能查看具体的报错原因2) dyld: Library not loaded:dyld[15027]: Library not loaded: @rpath/HappyDNS.framework/HappyDNSTARGETS > Gener...

2019-05-15 17:20:22 949

原创 CSS-基础

CSS属性padding:内边距; margin:外边距;padding | margin: top&bottom&left&right;padding | margin: top&bottom left&right;padding | margin: top right&left bottom;padding | marg...

2019-05-08 19:13:24 406

原创 H5标签

代码示例<!DOCTYPE html> <!-- html中空格键只能显示一个,可以用&nbsp半空格显示多个 --><titlt>&nbsp;&nbsp;标题&nbsp;&nbsp;</title><!-- meta 关键字 "description":页面描述 "generator":编...

2019-04-29 16:48:33 280

原创 Javascript-基础

数据类型Array方法splice(索引, 删除个数, [newObject]) [newObject]:可选参数;arr.splice(0, 1)arr.splice(0, 1, 'a')sort()排序;var arr = ['a', 'd', 'c', 'b']arr.sort()indexOf(item) 索引,-1为不存在;var obj...

2019-04-29 01:35:48 346

原创 Vue-基础

元素相关ifv-if="条件" => v-if="arr.length>0" v-else-if="条件" v-else<div class="a_class" v-if="arr.length>0"><div class="b_class" v-else-if="arr.length=0"><div class="c_...

2019-04-29 01:34:17 413

原创 通用链接-Universal Link

前言通用链接与URL Scheme的用途类似,主要是实现从外部唤醒App,并执行某些操作(如:打开指定页面)。由于使用URL Scheme(wechat://path?quary)从当前App唤醒自己的应用时,需要添加应用的URL Scheme到当前App的白名单中,限制该方法的灵活性,使用Universal link刚好可以解决这样的问题 (https://域名/path)。应用链接必须是https协议,且在webView打开链接时为跨域的方式(与当前域名不同),才会被作为通用链接唤起。

2019-04-24 19:56:22 5884 6

原创 TestFlight应用

一、内部测试与外部测试的区别内部测试只能添加100名成员不需要beta审核(beta审核:通过审核未发布上线),外部测试能添加10000名成员需要beta审核。二、内部测试构建1、在App Store Connect的App详情页中,选择TestFlight的栏目2、测试员和群组 > App Store Connect用户 > 测试员 > ⊕3、点击“用户和职能”添加测试员4、填写测试员信息,设置测试员的权限;邀请后apple ID邮箱会收到对应的邮件,

2019-04-24 17:14:43 7951

原创 HTML DOM 详解

目录DOM的简介...1DOM节点... 2DOM方法... 3DOM属性... 4DOM访问... 5DOM – 修改... 6DOM - 元素... 7DOM - 事件... 8DOM的简介HTML DOM 是:HTML 的标准对象模型 HTML 的标准编程接口 W3C 标准HTML DOM 定义了所有 HTML 元素的对象和属性,以及...

2019-04-22 16:43:41 1175

原创 IOS工程多环境配置

前言项目工程里总是会配置几个不同的环境,或是后台环境的各异,或是不同bundleID,每次都要去修改项目配置,不仅麻烦耗时,也不符合项目规范化管理。接下来说一下两个配置多环境的方法。目录利用Build Configuration来配置多环境 利用Targets来配置多环境 两者的对比一、利用Build Configuration来配置多环境1、首先复制一个现有的Configu...

2018-11-01 18:28:44 548

原创 GCD的简介及应用

iOS提供了三种多线程的调用,分别是NSThread、NSOperationQueue、及GCD,三者使用的轻重度依次是GCD、NSOperationQueue、NSThread,这里就不详细对比。GCD这要是采用C语言语法配合Block实现,可以实现同步、异步操作;运行并行、串行队列;同步锁,单例、延时等。

2018-09-05 13:06:22 831

原创 IOS音视频编解码-笔记

音视频采集及编解码一、硬编码与软编码的区别软编码:使用CPU进行编码 硬编码:使用非CPU进行编码,如显卡GPU、专用的DSP、FPGA、ASIC芯片等 软编码:实现直接、简单,参数调整方便,升级易,但CPU负载重,性能较硬编码低,低码率下质量通常比硬编码要好一点。 硬编码:性能高,低码率下通常质量低于硬编码器,但部分产品在GPU硬件平台移植了优秀的软编码算法(如X264)的,质量基...

2018-08-30 10:13:14 1253

原创 APP安全相关

JWT(JSON Web Token):登录后返回acces_token、及refresh_token,请求携带access_token做验证身份,每次用access_token判断其是否过期,如果以过期失效,用refresh_token请求接口刷新access_token。cer文件包含了数字签名信息和公钥,为二进制文件,pem为Base64文件,P12文件包含了cer文件(数字证书)和私钥,为Base64文件。以AFNetworking为例,实现bundle-cer数字证书校验。

2018-08-30 10:12:52 304

原创 Xcode开发调试

2、定位unrecognized selector错误,设置symbol断点,添加"-[NSObject(NSObject) doesNotRecogizeSelector:]"5、通过Xcode - Window - Devices and Simulators - View Device Logs,查看设备的Crash日志。4、通过Xcode - Window - Organizer - Crashes,查看用户上报的Crash日志。6、通过控制台 - 选择设备 - 点击开始,查看NSLog日志。

2018-08-30 10:11:45 272

IOS性能优化-扩展图.xmind

IOS性能优化-扩展图

2021-10-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除