IOS

ios的签名机制详解

2021-04-23
前言 iOS 签名机制挺复杂,各种证书,Provisioning Profile,entitlements,CertificateSigningRequest,p12,AppID,概念一堆,也很容易出错,本文尝试从原理出发,一步步推出为什么会有这么多概念,希望能有助于理解 iOS App 签名的原理和流程. 目的 先来看看苹果的签名机制是为了做什么.在 iOS 出来之前,在主流操作系统(Mac/Windows/Linux)上开发和运行软件是不需要签名的,软件随便从哪里下载都能运行,导致平台对第三

iOS实现摄像头实时采集图像

2021-04-21
本文实例为大家分享了iOS实现摄像头实时采集图像的具体代码,供大家参考,具体内容如下 新接到一个实时获取摄像头当前照片的需求,在设定的时间内需要保持摄像头处在开启状态并可以实时回调到当前的图片数据信息: 此次结合 AVCaptureDevice.AVCaptureSession.AVCaptureVideoPreviewLayer 将其与 UIView.UIImageView 和 UIImage 相结合: Github 具体实现 code 如下: #import <UIKit/UIKit.h>

关于ios配置微信config出现验签失败的问题解决

2021-04-18
在开发中,出现了一个关于微信配置的问题. 使用的开发工具以及开发框架为 uniapp , JSSDK为 jweixin 使用uniapp进行公众号开发,需要在进入某个页面时候进行微信配置来达到更改分享信息的效果. 问题描述: 请求后台获取了微信配置参数并配置了微信参数后 在ios手机上显示验签失败,功能无法使用. 在微信开发者工具.安卓端验签成功,功能正常. 经测试,ios端刷新页面后,验签即正常,所以,配置参数没有问题. 解决方案: 1.(不推荐) 通过jweixin.error监听失败事件,

详解IOS判断当前网络状态的三种方法

2021-04-13
在项目中,为了好的用户体验,有些场景必须线判断网络状态,然后才能决定该干嘛.比如视频播放,需要线判断是Wifi还是4G,Wifi直接播放,4G先提示用户.获取网络状态的方法大概有三种: 1. Reachability 这是苹果的官方演示demo中使用到的方法,我们可以到苹果官方文档里下载Demo(点击左上角Download Sample Code 即可下载),然后把Demo里的Reachability.h和.m考到自己项目中,并在Build Phases 的 Link Binary 添加Syst

讨论在线教室 iOS 端声音问题综合解决方案

2021-04-13
背景介绍 在线教室场景下,声音是最重要的内容传输渠道之一,保障声音的稳定可靠,是在线教室质量非常重要的一环.同时在线教室里许多功能模块都与声音有关联,如何处理好各个模块间的声音冲突成为一个重要话题. AVAudioSession 在 iOS 端,说到声音的话题就绕不开 AVAudioSession.AVAudioSession 的作用是管理音频这一唯一硬件资源的分配,通过调优合适的 AVAudioSession 来适配我们的 APP 对于音频的功能需求.切换音频场景的时候,需要相应的切换 AVA

怎样优化今日头条IOS安装包

2021-04-13
前言 今日头条 iOS 端从 2016 年起就关注到了安装包大小的问题,并启动了包大小优化.2017 年,我们将当时的经验发表为技术文章 <干货|今日头条iOS端安装包大小优化-思路与实践>[1]. 如今三年过去了.今日头条在继续探索包大小优化时实践了更多思路,包括构建配置.图片压缩.__TEXT 段迁移.二进制段压缩等.这些优化项在业务入侵较少的前提下给今日头条带来了显著的包大小收益.同时,整个业界在包大小优化上也产出了更多方案.因此我们更新文章,期待与大家共同交流包大小优化这件事. 表格:

iOS实现圆角箭头视图

2021-04-13
在APP中实现类似聊天内容背景图时,需要绘制圆角及箭头.很多人会选择使用图片(这也是最省事的一种方法),但是对于在视图中对内容做约束布局的话,我们无法准确的知道箭头的偏移量.下面就来介绍一下利用CGContextRef怎样绘制吧. 先来看看效果图吧! 代码实现: - (void)drawRect:(CGRect)rect { float lw = 2; // 边线宽度 float aw = 4;// 箭头宽 float ah = 5;// 箭头高 float r = 3;// 圆角角度 // 需

如何在IOS中使用IBeacon

2021-04-12
什么是iBeacon? iBeacon 是苹果公司2013年9月发布的移动设备用OS(iOS7)上配备的新功能.其工作方式是,配备有低功耗蓝牙(BLE)通信功能的设备使用BLE技术向周围发送自己特有的 ID,接收到该 ID 的应用软件会根据该 ID 采取一些行动. 从个人的角度看: iBeacon向四面八方不停地广播信号,就像是往平静的水面上扔了一块石子,泛起层层涟漪(俗称水波),波峰相当于 iBeacon 的RSSI(接受信号强度指示),越靠近中心点的地方波峰越高(RSSI 越大),这个波峰的

iOS横屏弹键盘的高度错误异常解决

2021-04-12
问题:横屏下第一次弹出键盘高度异常 - (void)handleKeyboardWillShowNotification:(NSNotification *)notification { NSTimeInterval animationDuration = 0; CGRect keyboardFrame = CGRectZero; NSDictionary *userInfo = [notification userInfo]; [[userInfo objectForKey:UIKeyboar

如何在IOS上使用ReplayKit与RTC

2021-04-12
在日益繁多的直播场景中,如果你也是某位游戏主播的粉丝的话,有一种直播方式是你一定不陌生的,那就是我们今天要聊的屏幕分享. 直播场景下的屏幕分享,不仅要将当前显示器所展示的画面分享给远端,也要将声音传输出去,包括应用的声音,以及主播的声音.鉴于这两点需求,我们可以简单分析出,进行一次屏幕分享的直播所需要的媒体流如下: 一条显示器画面的视频流 一条应用声音的音频流 一条主播声音的音频流 ReplayKit 是苹果提供的用于 iOS 系统进行屏幕录制的框架. 首先我们来看看苹果提供的用于屏幕录制的 R

IOS接入facebook详解

2021-04-12
facebook 接入 1.在 facebook 后台 配置 ios 平台, 获取 fb appid store id 可以先随便找一个已存在的填入进去. 2.CocoaPods 引入几个核心库 pod 'FBSDKCoreKit', '~> 9.0.1' pod 'FBSDKLoginKit', '~> 9.0.1' pod 'FBSDKShareKit', '~> 9.0.1' pod 工程构建出 静态库丢到 /Users/XXX/Library/Developer/Xcode/De

如何使用IOS自动化测试工具UIAutomation

2021-04-12
xcode中自带的Instuments工具可以用来进行APP的自动化测试, 以及用于进行内存泄露, 文件读写操作等的性能分析. 第一部分: 熟悉Instruments的UIAutomation. 首先, 选取xcode->Open Developer Tool->Instruments打开Instruments工具, 然后在左上角可以选取设备及被测APP(如下图): 在这里, 我选取了iPhone 5s的一个模拟器, 以及之前编写的一个简单的知乎日报APP. 刚开始接触UIAutomation

如何在IOS中使用Cordova插件

2021-04-12
一.准备 插件功能:打开IOS相机 1:创建插件 plugman create --name [插件名称] --plugin_id [插件ID] --plugin_version [插件版本号] plugman create --name CameraDemo --plugin_id cordova-plugin-camerademo --plugin_version 1.0.0 2:添加IOS平台 plugman platform add --platform_name ios 3:创建pac

IOS中判断卡顿的方案总结

2021-04-11
FPS FPS (Frames Per Second) 是图像领域中的定义,表示每秒渲染帧数,通常用于衡量画面的流畅度,每秒帧数越多,则表示画面越流畅,60fps 最佳,一般我们的APP的FPS 只要保持在 50-60之间,用户体验都是比较流畅的. 监测FPS也有好几种,这里只说最常用的方案,我最早是在YYFPSLabel中看到的.实现原理实现原理是向主线程的RunLoop的添加一个commonModes的CADisplayLink,每次屏幕刷新的时候都要执行CADisplayLink的方法,所

IOS开发之多线程NSThiread GCD NSOperation Runloop

2021-04-11
IOS中的进程和线程 通长来说一个app就是一个进程 ios开发中较少的运用进程间的通信(XPC),绝大多数使用线程. 在ios开发中,为了保证流畅性以及线程安全,所有与UI相关的操作都应该放在主线程,所以有时候主线程也叫UI线程. 影响UI体验,耗时时间较长的操作,尽量放到非主线程中.比如网络请求以及和本地的IO操作. 在IOS开发中有关于多线程的知识点主要包括:NSThread.GCD.NSOperation和Runloop NSThread NSthread就是一个线程,它的底层是对pth

如何使用IOS实现WIFI传输

2021-04-10
问题 业务场景上存在需要将手机里的文件.图片传递给其他的设备, 不仅仅局限于传书.资料啥的都有可能传递 方案 最base的方法:设备之间加个云,设备上传资料到云,云同步资料到各个设备,适用于多设备之间,这个没讲的必要 如果是两设备之间,忽略服务器,怎么搞?联想到图书App中的WiFi传书,貌似没云端概念的,怎么做到的? 上菜 采用框架GCDWebServer,通过CocoaPods引入 pod "GCDWebServer", "~> 3.0" 设置本地接收目录

使用IOS AirPrint实现打印功能详解

2021-04-10
内容 1.什么是AirPrint 其实就是将iOS(iphone,ipad)上的内容,使用支持AirPrint的打印机打印出来.打印过程无线控制, 非常方便. 2.第一手资料 学习iOS, 第一手资料肯定非苹果官方文档莫属. here. (我下面叙述的内容基本上是对文档的总结, 英语可以的建议直接看文档...) 3.Printer Simulator,使用打印模拟器进行测试 既然涉及打印功能,那么就需要有一台支持AirPrint 功能的打印机进行测试喽,你没有?没关系!苹果已经为我们准备好了模拟

iOS tableView多输入框如何获取数据

2021-04-07
前言 难得有点空暇的时间,写写文章,一壶小茶,惬意.扯远了,言归正传. 大家在做App开发的时候,肯定遇到过在一个列表中有多个让用户填写资料的情况,类似于这样的界面: iOS 如果一个tableView中有很多的输入框,而且cell是复用的,这个还有个提交功能 我的设计思路是这样的 1.建立一个Model对象,包含要输入的所有字段, 2.在建立一个cell,有个label和textField, 3.在初始化cell的地方,根据不同的indexRow,显示cell上不同的label,例如昵称.邮箱

详解Objective-C中的语法糖@{}究竟是什么

2021-04-06
最近在技术群里有一个群友提出了一个问题,就是为什么下面代码打印的结果不一样? NSMutableDictionary *mDic1 = [NSMutableDictionary dictionaryWithDictionary:@{@"a":@1, @"a":@2}]; //'a': 1 NSMutableDictionary *mDic2 = [NSMutableDictionary dictionary]; [mDic2 setObject:@(1) forKe

iOS UIBezierPath实现饼状图

2021-03-18
本文实例为大家分享了iOS UIBezierPath实现饼状图的具体代码,供大家参考,具体内容如下 首先看效果图: 代码: #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface CircleView : UIView @property (nonatomic, copy) NSArray<NSNumber *> *valueArray; @end NS_ASSUME_NONNULL_END // #define S_W