关于ios:iOS支付项目实践专栏-总目录持续更新

2次阅读

共计 10834 个字符,预计需要花费 28 分钟才能阅读完成。

[toc]

引言

欢送大家来到 # 公众号:iOS 逆向 的《iOS 领取我的项目实际》专栏

本文列出学习纲要,同时这也能够作为大家学习《iOS 领取我的项目实际》这个专栏的索引。
文中的蓝字都是传送门,点击进入即可

本专栏以实战为线索,逐渐深刻 iOS 开发各个环节,把握领取 APP 罕用的根底性能(均含 demo 源码),打造残缺 native 客户端工作流,晋升工程化编码能力和思维能力。

适宜 iOS 入门同学,在开发领取类 app 场景将应用到的根底性能

本专栏的整体纲要模块

1、界面搭建(收银台、电子签名、购物车、计算器、商品详情页、《用户协定及隐衷政策》弹框、反馈页面)

2、收付款(语音播报、参数签名)

3、OCR(自定义相机进行银行卡 / 身份证信息辨认)

4、封装银联接口协议、网络申请平安优化、敏感逻辑的爱护计划

5、解决用户输出内容(金额 / 手机号码等)

6、【封装富文本 API,采纳 block 实现链式编程】(block 的妙用:联合 block 和办法的长处实现 iOS 的链式编程)

7、代码治理:CocoaPods

8、图片压缩:【解决压缩之后图片含糊的问题】

9、iOS 测试:通过 GPX 文件批改经纬度信息(模仿 iOS 设施的地位)

10、iOS 罕用动画【定点缩放弹窗】利用锚点 anchorPoint 进行实现

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

12、Masonry 进阶:【MASConstraint 的装置与移除】- 利用场景:灵便管制视图的展现与暗藏

13、iOS 上传图片【反对删除和增加】(应用 UICollectionViewCell、UITableViewCell 及 Masonry。采纳 MVVM 实现。)

14、蓝牙打印:iOS【打印价格标签的模板及打印小票的模版、实现主动连贯最近应用的打印机】(针对佳博 GP-2120TU 型号) 蕴含残缺的 demo 源码

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

鄙人简介

xxx 信息技术服务有限公司,iOS 高级工程师,负责xxxnative 客户端外围组件开发。善于 iOS,有 iOS8 年开发教训,曾参加中国移动和包我的项目的开发。

I、视图

1.1《用户协定及隐衷政策》弹框

  • iOS 自定义视图:《用户协定及隐衷政策》弹框(蕴含超链接属性)【demo 源码反对中英文切换】

    1、原理文章:https://blog.csdn.net/z929118967/article/details/103902362

    2、性能应用:点击 demo 的右上架文字进行中英文切换

    3、《用户协定及隐衷政策》弹框的实现步骤:

    3.1、自定义 TextView,采纳富文本属性进行内容设置 attributedText(包含下划线 NSUnderlineStyleSingle、超链接 NSLinkAttributeName、色彩 NSForegroundColorAttributeName 等信息)

    3.2、实现代理办法 textView:shouldInteractWithURL:inRange,解决点击超链

1.2 电子签名

  • iOS 电子签名上篇【外围原理:旋转特定的屏幕】利用场景:采集电子签名,反对签名界面为横屏其余页面都是竖屏、革除重写、灵便管制提醒语信息、以及查看商户协定等

    1、原理文章:https://kunnan.blog.csdn.net/article/details/104796781

    2、性能:采集电子签名,反对签名界面为横屏其余页面都是竖屏、革除重写、灵便管制提醒语信息、以及查看商户协定

    3、外围原理:只旋转特定的屏幕

    4、外围步骤:1、viewWillAppear 设置横屏 2、viewWillDisappear 设置竖屏

    5、用法简略:采纳 block 回调电子签名图片

1.3 商品详情页

  • [UICollectionView 的自适应案例详解:【商品详情页】(外围原理:依照图片的原宽高比例进行显示图片全部内容,并主动适应高度)残缺 demo 源码
    ](https://download.csdn.net/dow…

    1、原理文章:https://kunnan.blog.csdn.net/article/details/112976838

    2、利用场景:商品详情页以及须要展现大量图片的界面

    3、外围原理

    3.1)依照图片的原来宽高比进行缩

    3.2)UICollectionView 的高度自适应

1.4 上传图片视图的封装【反对删除和增加】

demo 源码下载:https://download.csdn.net/download/u011018979/15868813

1、文章:https://kunnan.blog.csdn.net/article/details/106814250

2、利用场景:上传和展现多张图片的场景,比方危险商户解决、公布商品图片

3、效果图:

4、技术特点:应用 UICollectionViewCell、UITableViewCell 控件进行搭建,应用 Masonry 框架布局,采纳 MVVM 构造。

5、我的其余相似 SDK pod ‘KNPodlib’

1.5 查看危险商户的证实资料,图片反对滑动切换

[video(video-farK5uUD-1616404131406)(type-csdn)(url-https://live.csdn.net/v/embed… 查看大图浏览器)]

从 CSDN 下载 Demo 源码:https://download.csdn.net/download/u011018979/16039540

  • 利用场景:查看多张大图,比方查看危险商户的证实资料,图片反对滑动切换
  • 文章:https://blog.csdn.net/z929118967/article/details/115077471
  • 次要性能:进入查看器之后,可左右滑动查看上 / 下张,并反对下滑视图退出查看器

1.6 iOS 罕用动画【定点缩放弹窗】

iOS 开发中罕用的动画(定点缩放弹窗)的利用场景:

1、会员详情的右侧下拉操作菜单

2、浏览器的右侧下拉菜单

3、原文:https://kunnan.blog.csdn.net/…
4、demo 下载地址:https://download.csdn.net/download/u011018979/16092830
csdn 仓库 demo 地址
github 仓库地址
5、相干文章:利用锚点 anchorPoint 进行实现

1.7 iOS 抽奖转盘:概率抽奖算法 & 转盘算法 & 转盘主视图的实现思路

[video(video-K3T78OB0-1618275489033)(type-csdn)(url-https://live.csdn.net/v/embed… 概率抽奖算法 & 转盘算法)]
iOS 抽奖转盘:概率抽奖算法 & 转盘算法 & 转盘主视图的实现思路(从 CSDN 下载残缺 Demo)https://download.csdn.net/download/u011018979/16651799

文章:https://kunnan.blog.csdn.net/article/details/115653905
原理:利用 CoreGraphics 进行自定义转盘的绘制
视频:https://live.csdn.net/v/158749

1.8 自定义相机(银行卡 / 身份证辨认 OCR、矩形边缘辨认)

  • iOS 身份证正反面相机(带拍摄区域边框、半透明遮罩层、反对点击屏幕对焦、主动裁剪出所需大小)_身份证复印边框不显著

    1、资源下载:https://download.csdn.net/download/u011018979/14045495

    2、原理文章:https://kunnan.blog.csdn.net/article/details/112309871

  • 矩形边缘辨认

    iOS Document Scanner:矩形边缘辨认(边缘检测)CIDetectorTypeRectangle
    从 CSDN 下载 Demo 源码:https://download.csdn.net/download/u011018979/19260280
    1、利用场景:为了晋升用户体验,在 OCR 辨认场景都将利用到边缘检测

    2、原理:采纳原生 CoreImage 框架下 CIDetector 可进行边缘检测,辨认到边缘之后应用 CAShapeLayer 将边缘绘制并显示

    3、原理文章:https://kunnan.blog.csdn.net/article/details/117367345

  • 身份证辨认

    从 CSDN 下载 Demo 源码:https://download.csdn.net/download/u011018979/19265912

    1、性能:可主动疾速读出中国二代身份证上的信息(姓名、性别、民族、住址、身份证号码)并截取到身份证图像

    2、利用场景:身份证号码采集: 信用卡网申、商户进件、实名认证

    3、原理:
    3.1、自定义相机并利用第三方库 SDK libexidcardios 进行辨认

    3.2、增加自定义的扫描界面(两头有一个镂空窗口和来回挪动的扫描线)

    3.3、人脸小框检测: 人脸区域是否在这个人脸小框内,若在,阐明用户确实将身份证头像放在了这个框里,那么此时这一帧身份证图像大小正好适合且残缺,接下来才捕捉该帧,就取得了残缺的身份证截图。

    4、原理文章:https://kunnan.blog.csdn.net/…

  • 扫描银行卡辨认信息:

    从 CSDN 下载 Demo 源码:https://download.csdn.net/download/u011018979/19268420
    1、性能:扫描银行卡辨认信息(银行名称、银行卡号)并截取银行卡图像

    2、利用场景:疾速填充银行卡号的场景,比方商户进件、实名认证

    3、原理:

    3.1、自定义相机并利用第三方库 SDK libexbankcardios.alibbexbankcard.a进行辨认 (辨认 次数有限,收费 )

    3.2、增加自定义的扫描界面(两头有一个镂空窗口和来回挪动的扫描线)

    4、原理文章:https://kunnan.blog.csdn.net/article/details/117421214
    5、如果无奈下载 Demo,请关注公众号:【iOS 逆向】,进行获取

iOS 自定义相机进行银行卡 / 身份证信息辨认计划

1、从 CSDN 下载 demo 源码 https://download.csdn.net/download/u011018979/19359759

2、原理:自定义相机采集银行卡图片,调用 SDK/API 进行 OCTR 辨认

3、文章地址:https://kunnan.blog.csdn.net/article/details/117445677

4、利用场景:实名认证、银行卡绑定、信用卡网申

5、思路

5.1、自定义相机辨认银行卡 / 身份证信息的付费计划思路:
将 CVImageBufferRef 转 UIImage 之后,可间接调用第三方接口进行 OCR
https://kunnan.blog.csdn.net/article/details/117362305

5.2、自定义相机辨认银行卡 / 身份证信息的收费计划思路:
间接利用 libexbankcardios.a 和 l ibbexbankcard.a 第三方库的 API 解析 CVImageBufferRef 中的银行卡号信息,进而依据卡并规定获取银行名称

1.9 收银 app 必备模块:iOS 折扣计算器

采纳 NSDecimalNumber 进行表达式的精准计算(计算字符串数学表达式)

1、原理文章:https://kunnan.blog.csdn.net/article/details/84769730

2、背景:之前应用 NSExpression 进行表达式的计算,发现一个问题:无奈精准小数点位数(1+65 和 65+1 的精度就不一样)

3、解决方案: 采纳的是 NSDecimalNumber 进行计算

4、下载地址:https://download.csdn.net/download/u011018979/14038508

1.10 通讯录

iOS 解决语言工具 CFStringTransform:智能地解决用户的输出内容,经典利用场景【索引】

  • 从 CSDN 下载通讯录 demo 源码

    https://download.csdn.net/download/u011018979/19088189
    1、原理:通过对用户输出内容,利用 CFStringTransform 变换,能够轻松实现实现一个通用的搜寻 index

    2、特色:搜寻内容能够是多语言的

    3、文章:https://kunnan.blog.csdn.net/article/details/109603377

1.11 限定文本输入框输出特定的字符个数

  • 从 CSDN 下载 demo:https://download.csdn.net/download/u011018979/15842447

    1、原文:https://kunnan.blog.csdn.net/…

    2、次要性能:限定文本输入框输出特定的字符个数,
    文本长度计算规定:中文占 1,英文等能转 ascii 的占 0.5

    3、特色性能:iOS 限度联想字符串输出,汉字占 2 个字符,英文占 1 个字符,解决的中英文切换输入法联想导致的 bug

    4、demo 需要:危险商户解决界面提供 状况阐明 输入框,限度输出 100 个字符

    5、private repositories : https://github.com/zhangkn/RestrictedInputDemo
    6、demo 我的项目采纳 MVVM 进行实现

1.12 iOS 商品类目抉择视图

[video(video-fWYLiH0s-1624340333311)(type-csdn)(url-https://live.csdn.net/v/embed… 商品 / 经营类目抉择视图)]

下载地址:https://download.csdn.net/download/u011018979/19775162

文章地址:https://kunnan.blog.csdn.net/article/details/106553175
视频地址:https://live.csdn.net/v/167208
商品经营类目抉择视图的利用场景:
1、公布商品时抉择商品类目
2、商户进件抉择经营类目
3、购物类 app 下单界面的商品类目筛选

在公布商品的时候,抉择类目界面的要求视图分为高低局部。

1、上局部:展现曾经抉择的类目信息,并清晰的从上倒下列举对应层级类目信息(悬浮), 点击类目标时候,下局部的展现的类目信息切换为同级类目信息供选择。

2、下局部:展现可供选择的类目信息(反对滚动选中类目)

反对清空数据性能

II 语音播报 & 国际化

2.1 iOS12.1 以上在后盾或者被杀死无奈语音播报的解决方案

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

————————————————
版权申明:本文为 CSDN 博主「# 公众号:iOS 逆向」的原创文章,遵循 CC 4.0 BY-SA 版权协定,转载请附上原文出处链接及本申明。
1、原文链接:https://blog.csdn.net/z929118…

2、CSDN 资源下载源码:https://download.csdn.net/download/u011018979/14026303

2.2 APP 内的国际化切换

从 CSDN 下载【iOS APP 内的国际化切换】demo 源码:https://download.csdn.net/download/u011018979/19089505

文章:https://kunnan.blog.csdn.net/article/details/103733872
原理:

1、自定义解析本地化字符串的工具类 LanguageManager

2、利用内切换语言失效的技术实现: 采纳销毁根控制器,从新进入一次

3、本地化字符串指定参数程序

III 蓝牙打印商品价格标签、交易小票

  • 【打印商品价格标签及打印交易小票】demo 源码:https://download.csdn.net/download/u011018979/14920529

    1、利用场景:打印商品价格标签、打印交易小票

    2、特色性能:实现主动连贯最近应用的打印机、对立解决蓝牙状态

    3、原理文章:https://kunnan.blog.csdn.net/article/details/85684014

    4、解决的问题:人民币¥符号乱码的问题
    private

IV、iOS 平安资源

4.1 参数签名

iOS app 侧对申请参数进行签名:【申请参数依照 ASCII 码从小到大排序、拼接、加密】(递归的形式进行实现)

1、从 CSDN 下载 demo 地址:https://download.csdn.net/download/u011018979/15483107

2、文章:https://kunnan.blog.csdn.net/article/details/108195721

3、利用场景:避免申请参数被歹意批改

4.2 敏感逻辑的爱护计划

案例:js 依据 key 从本地办法获取设施及签名信息(残缺 demo)

在 OC 本地办法封装签名办法,签名办法采纳 C 语言实现,并把函数名暗藏在构造体里, 以函数指针成员的模式存储,这样编译后,只留了下地址,去掉了名字和参数表,进步了逆向老本和攻打门槛.

2021-04-14 17:28:28.762113+0800 SignWithjsKey[23919:2084235] getGyqAppParams: {"api_version":"v1.1.4","appid":"3","time":"1618392508","operator":"中国电信","user_id":"https:\/\/kunnan.blog.csdn.net\/","vn":"1.0","device_id":"b8eeff0f1612d4b9fba63ba7b47dbf27","channel":"default","device_name":"iPhone8,1","os":"iOS","sign":"b2ad581d2e30730f3aed506fc7593957","openudid":"0dce01d7424ac836d33ef49e20019e920e847e96","token":"# 公众号:iOS 逆向","root":"1","idfv":"-D089-4021-82A9-65D8E400C711","height":"1334","width":"750","xyz":"0.006973,0.007675,-1.009369","os_version":"14.0","network":"no_network","vc":"1","idfa":"-3693-4940-BEAD-93C59E53FA55"}

从 CSDN 下载 Demo:https://download.csdn.net/download/u011018979/16751837

1、利用场景:签名函数

2、原理:为了进步代码的安全性,能够采纳把把函数名暗藏在构造体里, 以函数指针成员的模式存储。编译后,只留了下地址,去掉了名字和参数表,进步了逆向老本和攻打门槛.

3、文章:https://kunnan.blog.csdn.net/…

4.3 基于 NSURLProtocol 拦挡所有网络申请

从 CSDN 下载 demo 资源:https://download.csdn.net/download/u011018979/16768533

1、文章:https://kunnan.blog.csdn.net/…

2、利用场景:

2.1、自定义申请头的 HTTPHeaderField

2.2、针对 NSURLSessionConfiguration 设置代理 IP 和端口,让一些非凡的申请走自定义的隧道 IP 和端口

2.3、对网络申请的数据进行报文级别的加密:应用 NSURLProtocol 来主动监听 HTTP 申请并加密解密。
通过[NSURLProtocol registerClass: [NetworkInject class]]; 注入了自定义的 NSURLProtocol 类

3、原理:利用 NSURLProtocol 拦挡 HTTP 申请
基于 NSURLProtocol 实现 iOS 利用底层所有网络申请拦挡(含网页 ajax 申请拦挡【不反对 WKWebView】);

4、特色性能:http-dns 解决办法,无效避免 DNS 劫持。
会间接从本地或特定服务器地址进行 DNS 解析,是一种防止 DNS 劫持的措施
https://github.com/zhangkn/KNURLProtocolDemo

V、逆向

5.1 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/z929118…

5.2 剖析如何调用的 ptrace,并 hook ptrace

从 CSDN 下载残缺 Demo: https://download.csdn.net/download/u011018979/15834414

1、https://download.csdn.net/download/u011018979/15834414

2、private 仓库

3、文章:https://blog.csdn.net/z929118967/article/details/78233844

4、去掉 ptrace 的思路:

4.1、当程序运行后,应用 debugserver *:1234 -a BinaryName 附加过程呈现 segmentfault 11
时,个别阐明程序外部调用了 ptrace。

4.2、为验证是否调用了 ptrace 能够 debugserver -x backboard *:1234 /BinaryPath(这里是残缺门路),而后下符号断点 b ptrace,c 之后看 ptrace 第一行代码的地位,而后 p $lr 找到函数返回地址,再依据
image list -o -f 的 ASLR 偏移,计算出原始地址。最初在 IDA
中找到调用 ptrace 的代码,剖析如何调用的 ptrace。

4.3、开始 hook ptrace。

5.3 过程间的实时通信计划

local socket(解决扩大和容器利用的实时通信问题)

1、下载地址:https://download.csdn.net/download/u011018979/15137188

2、原理文章:https://blog.csdn.net/z929118967/article/details/109616038
采纳 Local Socket 计划(TCP)创立服务端和客户端从而达到通信成果。

3、利用场景:解决扩大和容器利用的实时通信问题

VI、iOS 中 tabBar 按钮再次点击实现界面刷新

  • video

    https://live.csdn.net/v/156107

[video(video-zkepGWfX-1614648823294)(type-csdn)(url-https://live.csdn.net/v/embed… 中 tabBar 按钮再次点击实现界面刷新)]

  • 本文首发 CSDN

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

  • 本文的 demo 案例性能:

    1、当进入首页时提醒用户再次点击 tabBar 可刷新界面数据
    2、刷新数据当同时旋转 tabbar 的图片

  • 从 CSDN 下载残缺地址 demo:https://download.csdn.net/download/u011018979/15504711

    1、文章地址:https://kunnan.blog.csdn.net/…

    2、利用场景:实用于购物类 app 的首页 tabBar,以及购物券类 app 的首页 tabBar

    3、特色性能:在更新数据期间旋转 tabbar 的 icon

  • blink

    https://blink.csdn.net/details/1175811

VII、HTML 字符串与富文本互转

HTML 字符串与富文本互转(加载本地 html) demo 源码

1、下载地址:https://download.csdn.net/dow…

2、文章:https://kunnan.blog.csdn.net/…

3、、利用场景:应用原生视图 UILabel 显示服务端返回的带有 HTML 标签的内容

VIII、iOS 开发效率工具

8.1 封装富文本 API

【封装富文本 API,采纳 block 实现链式编程】(block 的妙用:联合 block 和办法的长处实现 iOS 的链式编程)

1、原理文章:https://kunnan.blog.csdn.net/…
block 的妙用:联合 block 和办法的长处实现 iOS 的链式编程
2、性能:次要针对段落款式 NSMutableParagraphStyle 和富文本 NSMutableAttributedString 进行封装,晋升开发效率
3、下载地址:https://download.csdn.net/download/u011018979/14038715

see also

CSDN 博客专家(挪动开发畛域新星创作者 ):https://kunnan.blog.csdn.net/
公众号:iOS 逆向(code4iOS)


正文完
 0