iOS进阶专栏- 总目录(持续更新)

文章目录

  • 引言
  • I 、 网络
    • 1.1 通信
    • 1.2. IPC
  • II 、支付解决方案
    • 2.0 支付相关的基础知识
    • 2.1 消息推送后台语言播报(包括app处于杀死状态)
    • 2.2 收银app必备模块:收银台、电子签名
      • 2.2.1计算器
      • 2.2.2 电子签名
    • 2.3、商户交易风控
    • 2.4 处理用户输入内容(金额/手机号码等)
    • 2.5 商品详情页
    • 2.6 反馈页面
    • 2.7 微信支付
    • 2.8 封装银联接口协议
    • 2.9 OCR
    • 2.10 商户交易汇总表
  • III、效率
    • 3.1 架构模式
      • 3.1.0 MVC、MVVM
      • 3.1.1 链式编程
      • 3.1.2 路由:接口控制app跳任意界面
    • 3.2 持续集成
      • 3.2.1 代码管理: CocoaPods
      • 3.2.2 根据 debug / release 类型自动更改配置
    • 3.3实用工具
      • 3.3.1. 用户输入处理工具
      • 3.3.2 图片压缩
      • 3.3.3 提高开发效率的工具
    • 3.4 封装SDK
      • 3.4.1 自定义相机
  • IV、 渲染
    • 4.1 常用动画
  • V、 解决方案汇总
    • 5.1 布局
    • 5.2 常用功能解决方案
      • 5.2.1 蓝牙打印
      • 5.2.2 本地化
  • VI 、 app上架指南
    • 6.1 上架流程指南
    • 6.2 ASO
  • see also

引言

欢迎大家来到#公众号:iOS逆向的《iOS进阶》专栏

本文列出学习大纲,同时这也可以作为大家学习《iOS进阶》这个专栏的索引。
文中的蓝字都是传送门,点击进入即可

I 、 网络

iOS网络请求指南

https://kunnan.blog.csdn.net/article/details/115175707
在这里插入图片描述

1.1 通信

  • 进程间的实时通讯方案: local socket(解决扩展和容器应用的实时通讯问题)

1.2. IPC

iOS AppStore Search optimize【Inter process Communication】之 去掉对rocketbootstrap的Depends依赖

1、下载地址:https://download.csdn.net/download/u011018979/15744262
2、文章:https://kunnan.blog.csdn.net/article/details/114693546
3、目的:是想在自己的deb 自带rocketbootstrapd,避免每次部署都从bigBoss 源更新。
4、相关文章:iOS AppStore Search optimize【 ASO项目使用的技术】之 Inter process Communication By Rrocketbootstrap
————————————————
版权声明:本文为CSDN博主「#公众号:iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/z929118967/article/details/114694914

II 、支付解决方案

2.0 支付相关的基础知识

  • 1、支付知识及调试测试技巧:【支付流程 & 预授权& 银行卡验证&反洗钱】2、安全设计Checklist(短信验证码、图形验证码、密码管理、身份验证、会话安全、敏感信息、接口安全)

2.1 消息推送后台语言播报(包括app处于杀死状态)

  • iOS NotificationServiceExtension实现VoiceBroadcast【app处于后台/被杀死的状态仍可进行语言播报】iOS12.1以上在后台或者被杀死无法语音播报的解决方案

  • iOS 实现消息推送退出登陆后无法收到推送功能【以极光推送为例子,退出登陆时删除别名的即可。】(递归设置和删除别名)

2.2 收银app必备模块:收银台、电子签名

2.2.1计算器

  • 计算器: 表达式的精准计算(计算字符串数学表达式)MathStringExpression

iOS计算器:采用NSDecimalNumber 进行表达式的精准计算(计算字符串数学表达式)【案例:折扣计算器(完整demo源码)】
从csdn资源下载demo源码:https://download.csdn.net/download/u011018979/14038508

2.2.2 电子签名

  • 电子签名上篇【核心原理: 旋转特定的屏幕】应用场景:采集电子签名,支持签名界面为横屏其余页面都是竖屏、清除重写、灵活控制提示语信息、以及查看商户协议等

  • 电子签名下篇【 只旋转自己想要旋转的屏幕(内含demo源码)】 关键步骤:1、viewWillAppear设置横屏2、viewWillDisappear 进行设置竖屏

2.3、商户交易风控

  • 商户交易风控之"限制境外定位" :【判断目标经纬度是否在大陆】

1、盗刷拒付风险
2、疑似欺诈、电诈、套现风险
3、赌博、异常大额、异常测试:
4、跨境风险
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.4 处理用户输入内容(金额/手机号码等)

  • iOS文本长度计算【中文占1,英文等能转ascii的占0.5】常常应用于对文本输入框的个数限制

  • iOS处理语言的强大工具CFStringTransform : 智能地处理用户的输入内容,经典应用场景【索引】

  • iOS用户输入处理之【从字符串中提取数字(手机号)】应用场景:登录界面“请输入手机号“文本框,对粘贴内容进行手机号码提取

  • iOS金额的格式转化处理

  • 使用NSPredicate优化从数组搜索数据效率

2.5 商品详情页

  • UICollectionView的自适应案例详解:【商品详情页】(核心原理:按照图片的原宽高比例进行显示图片全部内容,并自动适应高度)完整demo源码

1、原理文章:https://kunnan.blog.csdn.net/article/details/112976838
2、应用场景:商品详情页以及需要展示大量图片的界面
3、核心原理
3.1)按照图片的原来宽高比进行缩
3.2)UICollectionView的高度自适应

2.6 反馈页面

  • iOS 监听物理截图来自动生成截图并跳转到反馈页面进行显示(截图内容包括系统的弹框视图UIAlertController和UIAlertView)

2.7 微信支付

  • 开发能力说明文档(private)

关注公众号:【iOS逆向 】进一步交流

2.8 封装银联接口协议

iOS网络请求指南之 【封装银联接口协议】(提交和返回数据都为XML格式)案例:对接条码支付综合前置平台被扫支付订单申请退款(退款查询)

https://kunnan.blog.csdn.net/article/details/115084885

2.9 OCR

iOS13扫描证件&银行卡信息识别;身份证识别 (正反) ;矩形边缘识别 ;自定义证件相机 (含demo源码)

https://blog.csdn.net/z929118967/article/details/111197419

2.10 商户交易汇总表

使用tab滑块进行切换/筛选不同级别的代理商数据

III、效率

  • 提高前后台联调效率

提前根据约定好的接口,使用Charles进行模拟数据

  • 重复写的代码自动生成:根据 JSON 自动生成 Model 文件

接口返回的Dto数据模型使用工具生成

  • 优化启动耗时
  • 提高线上问题发现和排查的效率

3.1 架构模式

  • 代码组织的架构模式

MVC / MVVM (解耦和抽象)、组件化、路由

  • 改变编写代码方式的架构

响应式编程、链式编程、单向数据流

3.1.0 MVC、MVVM

  • 【MVC思想】(视图不依赖于具体的数据类型,而是依赖于遵守特定协议的数据源。M 和V 是不存在依赖关系。)

  • iOS MVVM(Model-View-ViewModel) 1、 数据绑定的实现方式(KVO、block、Delegate、Notification、RAC)2、RAC的信号机制

3.1.1 链式编程

  • 【封装富文本API,采用block实现链式编程】(block 的妙用:结合block和方法的优点实现iOS的链式编程)

磨刀不误砍柴功:编写代替自己工作的自动化工具

3.1.2 路由:接口控制app跳任意界面

  • 运行时API应用:1、实现路由(接口控制app跳任意界面 )2、获取修改对象的成员属性3、动态添加/交换方法的实现4、属性关联
    在这里插入图片描述

3.2 持续集成

  • 自动化构建(重复做的事都应该自动化,以提高开发效率)

其中涉及代码管理(git / svn),编译流程,证书和签名机制,自动化测试,打包发布。
其中还会有一些自定义的自动化流程(自动生成代码,根据 debug / release 包类型自动更改配置)

3.2.1 代码管理: CocoaPods

  • CocoaPods 使用手册:1、基础应用 2、高级用法: podspec.json、tweak 集成CocoaAsyncSocket、采用 pod lib 开发并打包iOS静态库

  • 【采用 pod lib 开发并打包iOS静态库(比我之前自己搭建的模板更方便)及利用iOS CocoaPods私有库实现组件化】

  • iOS代码管理之【Xcode Build版本号自增的解决方案】(通过配置脚本让xcode 在每次Build打包时自动对CFBundleVersion加一)

3.2.2 根据 debug / release 类型自动更改配置

  • 发布模式关闭NSLog

3.3实用工具

3.3.1. 用户输入处理工具

  • iOS处理语言的强大工具CFStringTransform : 智能地处理用户的输入内容,经典应用场景【索引】

  • iOS用户输入处理之【从字符串中提取数字(手机号)】应用场景:登录界面“请输入手机号“文本框,对粘贴内容进行手机号码提取

3.3.2 图片压缩

  • 【解决压缩之后图片模糊的问题】

3.3.3 提高开发效率的工具

  • iOS 效率工具【根据 JSON 自动生成 Model 文件(数据模型)】省去了复制粘贴的环节。支持 YYModel / MJExtension 的自动映射. 灵活拓展和定制(名字、头文件注解)

  • iOS进阶:【封装富文本API,采用block实现链式编程】(block 的妙用:结合block和方法的优点实现iOS的链式编程)

磨刀不误砍柴功:编写代替自己工作的自动化工具

  • iOS测试:通过GPX文件修改经纬度信息(模拟iOS设备的位置)

  • iOS App thinning【( 通过 LinkMap、mach-o寻找优化点)】1、段迁移rename_section减小__TEXT 段大小(需关闭 Bitcode)2、查无用方法/类/宏/图

  • 在这里插入图片描述

3.4 封装SDK

3.4.1 自定义相机

  • 手持证件照相机:【拍身份证裁剪大小,截图截出所需大小】(带拍摄区域边框及半透明遮罩层)
  • 1、iOS13 documentCameraViewController 扫描证件(demo源码)2、身份证识别 (正反) 3、矩形边缘识别 4、自定义相机: 加一个长方形的框框并裁剪身份证照片
    在这里插入图片描述
    在这里插入图片描述

IV、 渲染

4.1 常用动画

  • iOS常用动画 【 定点缩放弹窗】利用锚点anchorPoint进行实现

在这里插入图片描述

在这里插入图片描述

  • iOS Horizontal Popup View 【 横向(水平方向)弹出菜单视图】例子:商品列表支持弹出菜单进行下/上架商品、打印商品价签、编辑商品信息、同步网店等操作popover

在这里插入图片描述

V、 解决方案汇总

5.1 布局

  • iOS UITableView reloadData之后导致cell中的控件失去焦点的解决方案:使用UITableView 的beginUpdates和endUpdates来修改Cell的高度;

  • Masonry进阶 :【MASConstraint的安装与移除】- 应用场景:灵活控制视图的展示与隐藏

例子:入库单详情界面未审核状态时展示审核按钮,否则隐藏审核按钮

  • iOS上传图片【支持删除和添加】(使用UICollectionViewCell、UITableViewCell 及Masonry。采用MVVM实现。)

在这里插入图片描述

5.2 常用功能解决方案

5.2.1 蓝牙打印

  • iOS蓝牙状态的处理【蓝牙关闭及未授权的处理】

  • 因app中的蓝牙功能隐蔽而导致上架被拒绝的解决方案

  • iOS 【打印价格标签的模板及打印小票的模版、 实现自动连接最近使用的打印机】 (针对佳博GP-2120TU型号) 包含完整的 demo 源码

在这里插入图片描述

  • iOS蓝牙打印价签:【商品条码、品名、零售价、规格信息等】(商品名称支持换行显示)

在这里插入图片描述

  • 蓝牙权限设置细节:bluetooth-central和bluetooth-peripheral

5.2.2 本地化

  • 解决部分英文国际化没有生效的问题- APP(iOS版)存储国际化英文字符串的.string文件长度受限,需修改逻辑拆分子文件存储。

  • iOS本地化字符串指定参数顺序(应用场景:app内的多语言切换)

  • 【iOS APP 内的国际化切换】1、字符串的本地化、2、自定义解析本地化字符串的工具类LanguageManager、3、例子:登录界面切换中英文。

  • iOS TextViewHyperLink 文字超链接: 《用户协议及隐私政策》弹框(支持本地化,包含demo源码)

VI 、 app上架指南

6.1 上架流程指南

  • iOS上架前的准备、上架技巧(不更新版本的情况下删除App Store非主语言的方法)、常见上架问题及解决方案(上传ipa包被吃掉、已上架app在AppStore搜不到)、app上架后的事项(ASO)

  • iOS代码管理之【Xcode Build版本号自增的解决方案】(通过配置脚本让xcode 在每次Build打包时自动对CFBundleVersion加一)

  • 【codesign】1、重签名2、搜索本机的证书、查看签名证书、3、打包脚本

6.2 ASO

see also

  • 本博客精品文章汇总(持续更新)

腾讯云+社区专栏:https://cloud.tencent.com/developer/column/90774
我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2necijmv018gc

更多iOS技术文章,请关注 “iOS逆向” 公众号,一起学习,一起进步。

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部