自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Rey的技术博客

专注移动ios平台的软件开发,多年的一线研发经验,实战经验丰富,只为你呈现有价值的信息。

  • 博客(183)
  • 资源 (4)
  • 收藏
  • 关注

原创 ios 开发问题小集 [持续更新]

iOS开发中遇到的问题整理, 短篇的介绍问题出现的原因及解决方案

2023-11-09 09:16:20 1669 6

原创 ios 实现PDF,Word,Excel等文档类型的读取与预览

最近正在研发的项目有一个需求: 允许用户将iCloud中的文档上传,实现文件的流转。以前接触的项目对于资料类的上传大多是仅限于图片与视频的。对于文档类(Word, Excel, PDF, Text等), 因苹果的沙箱环境限制,想要读取文件是无法实现的。目前虽然可以支持选择文件,但只能通过访问iCloud上的云文档来实现。所以,要在应用中对文档类进行上传流转,首先需要将本地文档存储到你的iCloud中,再通过读取iCloud的云文档来获取。

2023-10-18 11:45:23 2413 1

原创 ios 三方库的使用之 MJExtension

调用接口从服务端拿数据 (数据获取)拿到数据进行数据模型转换 (数据加工)将转换后的数据模型通过UI控件展示 (数据展示)即:数据获取->数据加工->数据展示数据加工)的过程是其中的重要一环。iOS开发中的模型指的是数据模型,是用来存放数据的对象。

2023-09-17 20:53:18 819 2

原创 UITextField & UITextView 使用小技巧

本文总结了在使用 UITextField & UITextView 时遇到的一些问题及场景,以及对应的解决方案。目前覆盖的面可能不太全,后面会持续更新…

2023-09-12 10:21:30 605 1

原创 ios apns推送 离线锁屏语音播报

公司正在研发的一款App,需要在进行消息推送时支持语音播报。 具体要求:- 离线:App在用户未打开时,可收到消息推送- 锁屏:用户在设备锁屏状态下,仍可收到消息推送- 语音播报:收到消息推送时可同时进行语音播放苹果的APNs消息推送, 支持在应用未打开及设备锁屏状态下收到推送。 而同时进行语音播报,则需要做一些特殊处理。 目前语音播报的场景有两种: 一种是固定音频的播放, 一种是需要动态合成后的音频播放。如支付宝或微信收款的消息提醒: “支付宝/微信成功收款100元” 。

2023-04-24 14:23:26 787 5

原创 graphhopper-ios 编译过程详解

GraphHopper 是一个快速且高效的路径规划引擎,它默认使用和GTFS数据, 也可以导入其他数据源。它可以用作java库或独立的web服务器,去计算两个或多个点之间的线路的距离,时间,转弯指令和许多道路属性。除了“A-to-B”的路径规划能力之外,它还支持“snap to road”、等时线计算、移动导航等。是的oc版本,它使用j2objc将.java源代码转换为代码, 以供iOS平台的开发者来使用。该库在成功编译后会生成一个的静态库文件。接下来介绍该库在终端命令行模式下的编译过程。

2022-10-27 17:06:23 1408 6

原创 如何在.podspec 文件中添加对本地库的依赖

说明在使用cocoapods来管理库时, 当前库想要添加一个本地库的依赖, 尝试在.podspec 文件中设置如下依赖:s.dependency = 'my pod', :path => ''尝试后发现是不可行的。 .podspec 中不支持 :path => 或者 :git => 的方式来引入本地库。那么有办法可以解决吗 ?方案通过查资料,终于找到了合适的方案。 首先,我们不能向上面那样在.podspec中设置pod的依赖, 但可以在Podfile文件中指明pod 的sour

2022-04-18 17:24:22 3471

原创 uniapp ios原生插件开发 (framework,cocoapods)

已知UniApp的插件开发方式有两种, 第一种 Xcode Framework的方式,这种方式是官方指定的方式。 这种方式的优点就是简单直接, 但也有不足,比如当插件需要引入一些三方库时,操作起来就不是那么方便。 而使用Cocoapods则可以很方便的引入三方库。 接下来,本文探索使用Cocoapods的方式来进行UniApp插件开发。

2022-03-02 14:47:24 6995 28

原创 iOS 集成WebRTC各知识点小集

介绍iOS端 使用WebRTC做音视频通讯时的各知识点及问题点的总结

2022-01-17 16:33:53 4700 1

原创 使用pod package打包framework 实现组件的二进制化

随着项目的多次迭代,功能越来越多,项目也越来越大,相应的编译时间也越来越长。 亟需要方案来解决项目日益变大,模块变多,功能藕合变紧密的问题。 对项目进行模块化,组件化迫在眉睫。可见,组件化是项目变大后的必经选择。那组件化能给项目带来哪些优势,又有哪些不足呢? 接下来本文会就组件的拆分,组件的创建,组件的二制化来介绍项目组件化的整个过程。组件化是不是所有的项目都适用组件化 ?答案是否定的。 只有当项目到了一定规模,各功能模块日趋增多,此时可考虑对项目进行组件化的重构。我们先来了解一下组件化到底有哪些

2022-01-07 18:26:12 2932 3

原创 iOS WebRTC集成时遇到的问题总结 (声音默认输出由听筒改为扬声器、视频镜像、远端视频全屏等比填充等)

WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,简而言之它是一个支持网页浏览器进行实时语音对话或视频对话的技术。它为我们提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,mac,android,iOS。它在20.

2021-12-23 15:15:54 3250 5

原创 ios animation 动画学习总结

动画一直是 iOS 开发中很重要的一部分。设计良好,效果炫酷的动画往往能对用户体验的提升起到很大的作用,在这里将自己学习 iOS 动画的体会记录下来,希望能对别人有所帮助。iOS 的动画框架,即 CoreAnimation,本身十分庞大和复杂,这里暂时分两个部分进行介绍,分别是 UIView 动画 和 CALayer 动画。1、UIView Animation简单动画对于 UIView 上简单的动画,iOS 提供了很方便的函数:+ animateWithDuration:animations

2021-12-11 12:47:55 1853

原创 iOS操作本地视频 - 获取,压缩,取第一帧

现在大多数应用都涉及到对本地视频的相关处理, 比如社交类,短视频类应用等等。本文通过视频选取,视频的压缩,视频的处理的操作流程来说一下视频处理过程中常用到的功能 。1.通过PHAsset获取AVURLAsset对视频操作的第一个步骤肯定是视频的选取。视频的选取可以通过调用系统提供的UIImagePickerController 控件或三方库来处理。目前市面上用的比较多的三方库诸如:TZImagePickerController, HXPhotoPicker 等,功能上也都相似。三方框架提供的功能相

2021-12-04 23:12:53 4727

原创 ios 自制Framework 获取指定bundle并读取里面的资源

应用中某些模块需要组件化,组件化后的工程最后会做二进制化处理,打包成.framework文件。 今天简单聊一下在主工程或其他组件中是如何访问自制组件.framework中的bundle,及其中资源的。访问应用资源我们知道苹果应用是基于沙盒机制, 打包生成.ipa后的资源会被放到沙盒的根目录下。通常在主工程中我们是这样访问资源的:NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"plist"]

2021-12-02 13:48:22 2918

原创 ios 组件化实施过程

组件化的拆分组件与组件之间如何进行通讯(路由)从Cocopods拉取代码的过程远程索引库里很多的.spec文件,该文件记录了很多内容,如用户名,框架名称,描述,框架的地址Podfile 文件是拉取框架源码的配置文件, pod install 命令会根据Podfile中配置来拉取框架源码Pod setup 命令会把远程索引库拷贝到本地,在本地还有一个检索文件执行pod search命令过程,并不是直接从远程索引库查找,它是从本地的检索文件,该检索文件是以键值对

2021-11-29 11:44:38 896

原创 ios 三方库的使用之 YYTextView

在进行社交类应用开发时,要求内容除了基本的文本内容外,还需要包含话题、邮箱、链接、用户 等信息,而且需要在录入时就能进行区分。 所以单纯的使用UITextView控件已经不再满足当前的需求, 经过技术调研,发现YYTextView控件完全满足所有的需求。 故而方案就选择了YYTextView控件。 如下要罗列介绍的就是在本人在开发过程中遇到的场景,以及这些场景使用YYTextView控件是如何进行实现的。

2021-11-16 09:22:59 1434

原创 iOS 微信、支付宝、银联、Paypal 支付组件封装

移动支付为人们的生活提供了便捷,越来越多的应用也都开始集成了移动支付功能。国内目前的几大支付平台分别有微信、支付宝、银联,国际的有Paypal, ApplePay等。 大部分的电商应用基本上对时下这几个支付平台都有集成,为用户下单支付提供更多的便利及选择。本人目前所从事的旅游行业也是要与电商结合,会在线销售全球不同目的地的景点门票,酒店等产品。所以也免不了涉及到移动支付这一块。 在使用各家平台的iOS sdk时必然会碰到很多集成上的问题,但所幸都一一解决。早就想找个时间把集成时碰到的问题写下来,一来

2021-11-16 09:15:19 2395

转载 项目经理必备管理工具

转眼就来到了2022下半年了,相信大家多少也有些蠢蠢欲动。最近老原这增加了不少新的粉丝朋友,有想要入行或是转行项目管理的,大家关心的问题无非就是怎么才能入行/转行,需要做哪些准备?老原的回答也是一如既往的简单:第一:PMP证书必须拿到;第二:掌握项目管理工作流程、工具、方法(其实这部分,在你学完PMP的时候,就会有一个基本的框架了)关于PMP认证,老原今天就不细说了。想要详细了解的同学,可以私信老原。不管有没有在项目经理这个岗位的人,都会觉得它的工作很复杂、繁琐,但其实在老原看来也就那么一回事。

2024-07-12 17:53:19 5

原创 iOS开发中用到的自定义UI库

本文中的UI组件,是作者在移动应用开发中都用到过的。 确实,找到对的三方库可以快速帮助我们构建App, 极大程度上提高了生产力。 如果你也有不错的三方库要推荐,不仿在评论区给我留言。 如果在其中能找到你想要的库,也欢迎你的收藏,点赞。 thx

2024-06-27 17:55:25 339

原创 JXCategoryView的使用总结

可以在初始化时指定 titles属性赋值, 如果需要动态显示titles, 则可以在处理后,通过 reloadData 进行重载。根据协议声明来看, listView需要协议的实现者必须 实现才可以。的对象(一般是viewcontroller)这个回调需要返回实现了。

2024-06-25 09:57:29 404

转载 “无为而治”的 PM

如果把麦当劳的炸薯条放在项目管理方面来看,那真是一个活生生的“栗子”:一包薯条经历多高的油温、烹炸几分钟、中途多少秒的时候要嘚瑟嘚瑟,甚至撒盐的手势都有严格的指示。中国历史上著名的优秀项目经理姓唐,当时是佛学系的在读博士,读书期间就悟出了管理学真谛,干取经项目的时候发挥了管理方面的才能,充分挖掘孙悟空、猪八戒、沙僧各自的优势,深得下属的衷心归顺甚至敌人的倒戈,依靠“无为而治”最终到达西天,修成正果。项目经理的大部分时间是用来做沟通的,资源永远是不够的、时间永远紧张的、需求永远是变化的、客户永远是青春的……

2024-06-24 11:40:24 20

转载 如何分析 iOS 中的 Crash logs

当你收到不可读的崩溃信息时,你可以在 Xcode 的帮助下对崩溃日志进行符号化。作为开发者,识别符号并确保能够修复这个崩溃至关重要。我们很多开发者常用一些在线平台来统计和解决崩溃,比如 Firebase 和 Bugly 平台,它们将上报我们的线上崩溃信息日志。但是,在某些情况下,我们可以从控制台提取对应的崩溃文件,比如 IPS 文件,在读取这些日志之前,需要对符号进行符号化。今天就来讲讲相关的内容。

2024-06-21 09:45:34 35

原创 ios symbolicatecrash 符号化crash

是十六进制函数地址映射信息的中转文件,调试的symbols会包含在这个文件中,symbols即类名、函数名等。文件夹里,右键 xxx.app 文件 -> Show in Finder -> 就能找到。输出路径之后,找到该文件,在桌面创建一个。通过Archives打包上传时获取。文件后,还有一项工作要做就是检查。在.crash中查找这个udid。拷贝到 crash 文件夹中。打包时,应该保存每个正式版的。文件,以备定位线上问题使用。导出符号化crash 文件。文件了,在项目工程的。.dSYM的uuid。

2024-03-22 10:50:43 331 2

转载 ios 开发中使用Masonry设置极限约束以及优先级

某个控制器上的view上有两个label,左、右两边各一个,两者之间的间距为10pt,左、右两边label的宽度最少为100,但当两个label上的文字都很多的时候首先左侧的label上展示的文字更多。对某个控制器上的view上的label进行布局,要求其右侧至少与view水平方向的中心处对齐,宽度随着文字的增加逐渐变宽,但其右侧距离view右侧至少10pt.使用Masonry对UILabel进行约束,设置其宽度的最小约束和距离右侧的最大距离。这是需要使用Masonry设置UILabel抗压缩的优先级。

2024-02-29 15:47:59 529

原创 UICollectioView 使用集合

我们在做滚动数据展示时,常用到的UIKit库中的控件就是如下几种:。其中与都是直接继承自在未出现之前,我们的应用程序中基本都在使用控件,它使用简单易上手。对于纵向的数据展示,使用控件完全可以轻松满足我们的需求, 但对于横向的数据展示,我们只能选择使用UIScrollView来实现。这种情况在控件出现之后得以解决。除了支持纵向布局外,还可以横向布局,也能实现左右表格高度不同的流式布局,同样也能复用表头和表脚非常的强大。可以说就是为了代替而生。允许定制的布局可能非常复杂(例如:每个单元的大小不同)

2023-09-04 09:54:07 419 3

原创 ios 声网agora 音视频直播场景下的集成总结

项目中需要用到音视频会议/直播的场景, 自研比较耗时,且没有技术积累,实现难道较大。所以第三方成为当前选型的首选。通过调研,目前支持这类型技术的三方,诸如:阿里、腾讯、anyRTC、声网RTC。每月1w分钟的免费用量, 对于项目初期,这个免费量应该够用支持更多的使用场景更完善的集成文档与demo几行代码即可完成接入,SDK使用比较友好。

2023-08-22 10:34:00 1074 3

转载 Mac 电脑下载 AppStore 中的 ipa 软件包详细流程

包的软件,点击添加,然后等待安装,如果你手机上没有这个软件,那么会直接安装成功,但是需要的是安装冲突,也就是你手机上有这个软件,然后再通过这个操作去安装触发冲突弹窗,这个时候下载软件的。,到了个人文件夹之后,需要找到资源库,但是资源库是隐藏文件夹,所以需要显示隐藏文件夹,显示隐藏文件夹的快捷按键是。5、这边也是第一次安装成功,然后再次添加,触发了安装冲突,停留在这里,不要去点任何按钮,点了。2、电脑连接手机,并信任,在所有设备中,选中设备,然后点击顶部的加号,选中。,那就等等,或者换个好点的网。

2023-07-25 11:57:04 1107

原创 声网 Agora音视频uniapp插件跑通详解

在使用声网SDK做音视频会议开发时, 通过声网官方论坛了解到,声网是提供uniapp插件的,只是在官方文档中不是很容易找到。Agora音视频插件Agora音视频插件(JS)本文讲解如何跑通演示示例。

2023-07-10 14:13:43 1789

原创 uniapp ios原生插件开发之module

在文章《uniapp ios原生插件开发 (framework,cocoapods)》中我们已经介绍了Module 类型的插件及其创建过程, 却没有深入的介绍Module类型插件开发过程中所涉及到的技术点。本文呢就将重点放在对这些技术点的使用上进行详解,算是是对上篇文章的一个补充与扩展。module:不需要参与页面布局,只需要通过 API 调用原生功能,比如:获取当前定位信息、数据请求等功能,通过扩展module的方式来实现;component。

2023-07-09 22:51:50 1554 1

原创 java 阿里云直播配置及推拉流地址获取

2、首次进入会提示开通服务,点击“开通服务”,然后选择计费方式,同意服务协议,然后立即开通。完成了推流域名与播流域名的配置后, 可以通过阿里提供的工具来进行推/播流的生成了。4、配置完上一个步骤后,返回域名管理,稍等几分钟解析生效后会看到域名状态已经是。确定完成之后,基本上我们的推流域名与播流域名就配置完成了。3、返回“域名管理”,会看到刚才添加的推流域名,把域名右侧的。2、按下图示例,根据自己的实际填写,然后提交。前四步与接入推流域名的过程类似,就不再赘述。配置,按下图示例填写,然后提交。

2023-07-05 14:58:40 4074

转载 App内跳转到百度、高德第三方地图导航

项目里遇到根据经纬度跳转第三方导航的需求,在网上找了一下,发现都是千篇一律的文章,而且不能正确显示目的地地址,无果后去百度和高德地图官网查找,位置十分隐蔽,给大家分享下。

2023-06-29 17:55:59 1951

原创 NSURL请求中含有中文的解决方法

要解决这个问题就需要对包含中文字符的地址先进行url encode编码。网上有很多解决的方法,但都是老版本的方法,现在已被iOS作废了,所以有必要更新一下代码。当对含有中文的url字符串,进行NSURL对象包装时,是不能被识别的。不会得到期望的NSURL对象,而是返回一个nil 值;在对含有中文的url字符串进行NSURL对象包装时, 先进行中文编码.再通过编码后的url地址创建NSURL对象。

2023-06-28 15:21:40 1174

转载 iOS 屏幕旋转的实践解析

iOS 屏幕旋转的实现涉及到一堆枚举值和回调方法,对于没有做过旋转相关需求的开发来说,可能一上来就晕了,所以我们先动手,让屏幕转起来吧。实现旋转的方式主要有两种,跟随手机感应旋转和手动旋转,接下来对这两种方式进行逐一介绍。

2023-06-26 10:20:56 413

原创 使用UICollectionView实现聊天列表的细节整理

一、初始进入聊天界面,数据加载完成后,默认滚动到底部二、发送消息后,新消息在底部显示三、下拉加载更多历史消息四、键盘弹出时,调整聊天内容列表的显示位置

2023-06-08 14:12:37 178

转载 Swift 最佳实践之 Property Wrapper

如上介绍的 RGBValue,日常开发中有很多值有有效取值区间,如:RGB、age、 weekday、fps 等。关于 Property Wrapper 的应用,「只有想不到,没有做不到」,是一个充满想象力和创造力的地方!通过 Property Wrapper 可以很好地将这些逻辑封装起来,极大简化了业务上的处理。合理的封装 Property Wrapper ,可以提升代码的复用性,以及简化业务使用。如上,定义了一个最简单的 Property Wrapper。

2023-06-05 11:58:27 431

转载 理解Swift中的 some 不透明返回类型

为什么SwiftUI的返回类型?some View?为什么不能只返回常规协议?什么是不透明类型?不透明返回类型是Swift 5.1中添加的一项功能,它是新SwiftUI框架功能的重要组成部分。它最终解决了协议使用和Swift API设计的基本问题,为创建和使用公共API开辟了新的可能性。

2023-05-29 11:28:04 623

原创 finallshell mac SSH工具

FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求.

2023-05-22 09:23:08 2442

原创 在 Xcode 中使用 Swift Package

以前在 macOS/iOS 开发中,我们通常使用CocoaPods或Carthage等非官方工具来管理项目中的三方库依赖。但现在我们又多了一种方式,它就是苹果官方提供的。苹果从Xcode11以后 增加了的功能, 用来添加和管理依赖的三方库。在使用Swift Package 时,只需要输入第三方库的git地址, 其他的会自动完成,非常方便。(Swift 包管理器,一般简称SwiftPM或者SPM)是苹果官方提供的一个用于管理源代码分发的工具,旨在使分享代码和复用其他人的代码变得更加容易。

2023-05-17 15:29:36 848

原创 xcode历史版本下载

较早之前做过一个项目,当时使用swift 3.x开发。 项目结束后就没再有新需求与更新。 但最近呢需要对项目的某些功能进行调整,项目又重新被拾了起来。 我们知道现在的swift 版本已经到了 5.x, 相应的语法上较 3.x版本也有了不小的变化。使用最新版本的xcode都已经不支持swift 3.x的 swift version. 所以目前面临两种方案: - 升级项目到swift 5.x (成本较大)- 开发工具xcode降版本

2023-04-26 13:41:35 1366

原创 我的创作纪念日 2023

以前的CSDN产品相比现在没那么完善,“混迹”坛子里的经历也早以成为过往,偶尔也会从记忆的深处翻出来怀念一番。带着这种“情怀”, 再依托于CSDN现有的成熟产品,致力于将自己所学与工作中遇到的问题与大家分享交流。连接人脉的方式有两种:一种是你主动去连接,另一种则是被动连接–即别人来连接你,写作就是高效进行被动连接的绝佳手段。

2023-04-21 11:37:44 74

ios开发工具库toolKit

资源是本人10多年ios开发过程中整理归纳的工具库, 其中包含了常用的扩展及工具库。为你的ios开发提供助力 - Category : 常用分类扩展 - Utils : 工具类

2024-07-03

ios 选取图片、视频、文件 的选择器

该选取组件除了支持图片,视频的选择外,还支持选择文件,如word,excel, pdf等格式。 文件的选择需要iCould的支持,通过使用该组件可以让你的应用实现文件的流转

2024-03-06

ios 路径规划静态库 libgraphhopper.a

graphhopper 的 ios版本的静态库,方便iOS开发者也能使用到graphhopper库的能力。

2022-10-27

iOS支付组件封装(微信,支付宝,银联)

本人在iOS开发过程中,通过对微信,支付宝,银联等三方支付库的集成的经验。总结并进行了二次的抽象与封装,将三种支付方式封装为统一的支付接口并提供给客户端来使用。

2022-03-26

工作中整理的前后端技术文档与代码规范

工作中整理的前后端代码规范及说明 ,可作为手册来使用。 文档包含: iOS代码规范 Android代码规范 Api接口格式 Git命令使用手册 PHP代码规范 PHP性能规范 SQL注入

2022-03-22

iOS开发你需要知道的

此资源是本人从事iOS开发以来,实际工作中遇到的问题及坑点的总结。皆在为后来者提供一种思路或解决方案, “授人以鱼,不如授人以渔”就是这个道理。 希望我的这些开发中的工作经验能真正的帮助到你, 此为本人分享之初衷。 此专栏包含了如下几个方面 支付方案:微信,支付宝,贝宝集成及二次封装 即时通讯方案:融云IM集成 组件化方案: 组件化实施过程,二进制化方案 常用富文本框架YYKit的使用总结(YYTextView,YYLabel) 苹果集成登录 自制Framework的封装及资源的访问 UINavigationBar 的iOS15下的适配 SFSafariViewController与oc 的功能交互 UICollectionView的设置 header二种办法 iOS 操作本地视频 (获取,压缩,第一帧) iOS面向切面编程AOP 框架 Aspects库的使用 Swift技术相关 oc底层技术解密 iOS 动画相关

2022-03-22

生成静态页面的一个小例子

用IhttpHandler,IHttpModule处理页面请求,重定向url

2008-03-07

空空如也

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

TA关注的人

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