![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS
培根芝士
相看两厌,不若相忘于江湖
展开
-
App ICP备案获取iOS和Android的公钥和证书指纹
依照《工业和信息化部关于开展移动互联网应用程序备案工作的通知》,向iOS和安卓平台提交App时需要先提交ICP备案信息。原创 2024-02-02 11:15:29 · 2892 阅读 · 0 评论 -
cocoapods 常用命令
删除本地xxx spec库(可以是cocoapods的master库,删除之后,使用pod set up安装;把自己的xxx.podspec文件推送到cocoapods 的spec仓库。执行pod install 但不升级本地cocoapods spec库。执行pod update 但不升级本地cocoapods spec库。在你的工程目录下执行之后,工程目录之下会多一个podfile文件;在工程第一次使用或者中间有添加,删除,更新库的时候使用。更新所有pod 库到podfile指定的最新版本。原创 2024-01-22 14:51:40 · 937 阅读 · 0 评论 -
iOS使用CXCallObserver监听电话接听与拨打
iOS使用CXCallObserver监听电话接听与拨打原创 2023-12-25 18:41:46 · 875 阅读 · 0 评论 -
使用Swift Package Manager (SPM)实现xcframework分发
Swift Package Manager (SPM) 是苹果官方提供的用于管理 Swift 项目的依赖关系和构建过程的工具。它是一个集成在 Swift 编程语言中的包管理器,用于解决在开发过程中管理和构建包依赖项的需求。原创 2023-12-21 18:32:59 · 1282 阅读 · 0 评论 -
iOS将framework转为xcframework
先把framework拷贝到两个文件夹下边,这里只需要armv7、arm64、x86_64。把iphonesimulator中的除模拟器之外的指令集删除。把iphoneos中的模拟器指令集删除。使用xcodebuild 进行合成。原创 2023-12-20 10:35:30 · 1391 阅读 · 0 评论 -
iOS加密CoreML模型
Xcode将模型加密密钥文件保存在与原始模型文件相同的文件夹中,并使用其基名与.mlmodelkey扩展名。例如,名为Classifier.mlmodel模型的加密密钥是同一目录中的Classifier.mlmodelkey。通过双击模型的条目打开模型的编译器标志编辑器。必须在Xcode的Preferences的Accounts页面登录Apple ID,才能在Xcode中生成模型加密密钥。在Xcode中打开模型,单击Utilities选项卡,然后单击“Create Encryption Key”按钮。原创 2023-12-13 20:21:27 · 884 阅读 · 1 评论 -
Swift制作打包framework
Buliding Settings -> Architectures -> Build Active Architecture Only 设置为NO。Buliding Settings -> Linking -> Mach-O Type 设置为Static Library。Buliding Settings -> Linking -> Dead Code Stripping 设置为NO。运行脚本,生成的framework会在项目根目录的Products文件夹下。创建打包合并framework脚本。原创 2023-11-14 20:15:45 · 1008 阅读 · 1 评论 -
iOS使用NSURLSession实现后台上传下载
NSURLSession后台上传的基本逻辑是:首先创建一个后台模式的NSURLSessionConfiguration,然后通过这个configuration创建一个NSURLSession,接着是创建相关的NSURLSessionTask,最后就是处理相关的代理事件。原创 2023-11-06 11:04:39 · 724 阅读 · 0 评论 -
iOS获取当前国家名称
项目中遇到一个需求是获取当前所在国家,最开始想的方案是先获取经纬度,然后反地理位置编码拿到国家名。但是这样有些问题,如果用户拒绝授权,则拿不到经纬度,无法进行后续的流程。原创 2023-11-02 15:17:11 · 749 阅读 · 0 评论 -
iOS使用AVCaptureSession实现音视频采集
AVCaptureVideoDataOutputSampleBufferDelegate和AVCaptureAudioDataOutputSampleBufferDelegate音视频处理。初始化AVAssetWriter,将音视频保存到视频文件。初始化AVCaptureSession。原创 2023-10-30 18:30:23 · 1285 阅读 · 0 评论 -
iOS使用CMMotionActivityManager获取用户状态
CMMotionActivityManager在CoreMotion框架下,用于获取用户当前所处的状态,如在自行车、车里或徒步行走等。原创 2023-10-26 18:13:19 · 186 阅读 · 0 评论 -
iOS UIImage和CVPixelBuffer、CMSampleBuffer互相转换
CMSampleBuffer转UIImage。UIImage转CVPixelBuffer。CVPixelBuffer转UIImage。原创 2023-10-12 11:17:28 · 1274 阅读 · 0 评论 -
iOS添加Mapbox地图库
要使用SPM添加Mapbox Maps SDK,你需要配置你的环境以从Mapbox下载它,请确保你已将秘密令牌添加到你的.netrc文件中。要配置你的公共访问令牌,请打开项目的Info.plist文件,并添加一个MBXAccessToken密钥,其值是你的公共访问令牌。要使用你的秘密令牌,你需要将其存储在主目录(而不是项目文件夹)的.netrc文件中。你创建的令牌是一个秘密令牌,这意味着你将只有一次机会将其复制到安全的地方。在创建令牌页面上,为你的令牌命名,并确保。从你帐户的tokens页面中,单击"原创 2023-09-18 10:48:12 · 870 阅读 · 0 评论 -
Swift数据类型String、Int、Float、Double转换
【代码】Swift数据类型String、Int、Float、Double转换。原创 2023-09-10 18:13:17 · 957 阅读 · 0 评论 -
Swift使用编解码库Codable
Codable代表一个同时符合 Decodable 和 Encodable 协议的类型,即可解码且可编码的类型。Codable从 Swift 4 开始引入,包含了 Encoder 和 Decoder 协议和他们的两个实现 JSONEncoder、JSONDecoder 和 PropertyListEncoder、PropertyListDecoder。其中 Codable 及其相关协议放在了标准库中,而具体的 Encoder、Decoder 类放在了 Foundation 框架中。原创 2023-09-08 14:27:26 · 1131 阅读 · 0 评论 -
Swift报错:“Return from initializer without initializing all stored properties”
修饰符使其变成Optional类型,或者赋初始值,或者在init()中进行赋值。原创 2023-09-08 11:48:52 · 302 阅读 · 0 评论 -
Swift的可选类型Optional
如果命中Some(T)的Case,就会得到一个“包装”后的值(a wrapped value),如果想要拿到真正的value,就需要“拆包”,否则你会得到的是Optional(value)。Optional其实是个枚举(enum)(严格来讲:应该是enum和泛型为基础的高阶抽象类型),分别是None和Some(T),如果可选类型为nil就会命中None的Case。如果包含就自动解包,把值赋给一个临时的常量(let)或者变量(var),并返回true,否则返回false。原创 2023-09-08 11:20:36 · 798 阅读 · 0 评论 -
Swift报错:“‘nil‘ is incompatible with return type ‘User‘”
上述代码报了一个错误:“'nil' is incompatible with return type 'User'”,表示“nil”与返回类型“User”不兼容。原创 2023-09-08 11:08:44 · 723 阅读 · 0 评论 -
iOS UIDevice设备信息
UIDeviceBatteryState电池供电的设备状态。原创 2023-09-05 19:23:43 · 735 阅读 · 0 评论 -
iOS CoreMotion获取传感器数据
attitude:通俗来讲,就是告诉你手机在当前空间的位置和姿势。gravity:重力信息,其本质是重力加速度矢量在当前设备的参考坐标系中的表达。userAcceleration:加速度信息。rotationRate:计时的旋转速率,是陀螺仪的输出。//翻滚//偏航//俯仰//重力加速度在各个方向的分量.gravity.x;.gravity.y;.gravity.z;print("重力X:%f -- Y:%f -- Z:%f", gX, gY, gZ);//检测到晃动。原创 2023-09-05 17:07:44 · 1430 阅读 · 0 评论 -
Swift使用PythonKit调用Python
打开Xcode项目。然后选择“File→Add Packages”,然后输入软件包依赖链接:Python-iOS包允许在iOS应用程序中使用python模块。PythonKit是与Python交互的Swift框架。原创 2023-08-30 17:11:48 · 1606 阅读 · 2 评论 -
Swift的NSClassFromString转换
在swift 中使用NSClassFromString 从string 转换到 对象,报了Segmentation fault: 11 错误。原创 2023-08-30 14:30:35 · 1241 阅读 · 0 评论 -
Swift创建单例
Objective-C使用GCD 中的dispatch_once_t 可以保证里面的代码只被调用一次,以此保证单例在线程上的安全。但是在Swift 中由于废弃了原有的Dispatch once方法,因此无法使用once 进行单例的创建。我们可以使用struct 存储类型变量,并且使用let保证线程安全的方式。原创 2023-08-30 11:23:39 · 1530 阅读 · 0 评论 -
使用BeeWare实现iOS调用Python
我们现在将创建一个虚拟环境——一个“沙盒”,如果我们将软件包安装到虚拟环境中,我们计算机上的任何其他Python项目将不会受到影响。这个架构实际上是一个功能齐全的应用程序,没有添加任何其他内容。src目录包含应用程序的所有代码,tests目录包含初始测试用例,pyproject.toml文件描述了如何打包应用程序进行分发,包含刚刚提供给BeeWare的配置详细信息。完成后,我们将有一个build/helloworld/ios/xcode目录,其中包含Xcode项目,以及应用程序所需的支持库和应用程序代码。原创 2023-08-21 15:01:07 · 1249 阅读 · 0 评论 -
解决H5在iOS中视频播放自动全屏问题
在iOS端的Web控件上使用video标签播放视频时,视频会自动全屏播放。原创 2023-08-02 12:02:57 · 2236 阅读 · 1 评论 -
安卓和ios调用vue中定义的方法
安卓和ios调用vue中定义的方法原创 2023-05-10 20:37:48 · 525 阅读 · 0 评论 -
Xcode14报错“Type ‘ChartDataSet‘ does not conform to protocol ‘RangeReplaceableCollection”
升级Xcode 14.3之后项目打包报错:Type ‘ChartDataSet‘ does not conform to protocol ‘RangeReplaceableCollection原创 2023-05-10 19:54:02 · 469 阅读 · 0 评论 -
Xcode14报错“PhaseScriptExecution failed with a nonzero exit code...”
Xcode14报错“PhaseScriptExecution failed with a nonzero exit code...”原创 2023-05-10 19:30:33 · 259 阅读 · 0 评论 -
Xcode瘦身
这个文件夹中保存的是Xcode的缓存文件,曾经在Xcode跑过的所有项目的索引、build的信息等都会保存在这里。删除后在下次打开项目编译的时候将会重新生成。每个文件夹里包含的就是一个特定系统版本的设备的数据。每个文件夹对应哪个设备可以在其下device.plist中查看。每次把一个设备接入电脑进行真机调试之前,电脑会对设备建立索引,也在此文件夹下生成对该设备系统的支持文件。每次打包App的dSYM等数据就保存在这里。同上,把没用的删了。原创 2022-10-09 10:38:48 · 954 阅读 · 0 评论 -
苹果开发者企业账号续费过程
今年的续费页面与往常不同,点击"Provide Details"按钮进入审查的页面,需要填写一些信息供苹果审查。原创 2022-08-25 10:48:23 · 4298 阅读 · 0 评论 -
解决报错Command CompileSwiftSources failed with a nonzero exit code
Xcode编译时报错“Command CompileSwiftSources failed with a nonzero exit code”。应该是项目中的Socket.IO-Client-Swift这个pod导致的。在Build Setting里添加一条user-defined。属性为SWIFT_ENABLE_BATCH_MODE,值为NO。原创 2022-08-09 21:28:52 · 9711 阅读 · 0 评论 -
Xcode控制台调试常用命令
当遇到crash时,查看线程栈,只能看到栈帧的地址,使用imagelookup–address地址可以方便的定位到这个地址对应的代码行。命令可以打印出线程的堆栈信息,该信息比左侧的DebugNavigator看到的还要详细一些。在调试时,动态的修改变量的值,这在调试想要让应用执行异常路径(如执行某个else情况)很有用。命令类似,所以也是可以打印常量、变量,打印表达式返回的对象等。在控制台执行该命令,可以在不修改代码,不重新编译的情况下,修改界面上的视图。命令是打印所有线程的堆栈信息。......原创 2022-08-01 11:05:07 · 1870 阅读 · 0 评论 -
解决发布报错“ERROR ITMS-90087: “Unsupported Architectures”
发布应用到Appstore时报错:这个错误是因为第三方framework中包含了x86_64, i386,这个是苹果不允许的。解决办法:先查看一下framework 包含的平台。剔除掉x86_64, i386这两个架构,只保留armv7和arm64。用lipo -info 查看一下,这样就得到了去除i386 和 x86_64 的framework 了。.........原创 2022-07-12 15:25:28 · 1265 阅读 · 0 评论 -
解决“Include of non-modular header inside framework module”错误
在一个framework的头文件中引入另一个framework时报错:Xcode在默认情况下是不允许在framework中的头文件引入一个不属于任何Module的头文件。方案1:把 target 下的 Build Settings 中的 Allow Non-modular includes in Framework Modules 设置成YES。方案2:将#import "**.h" 第三方库写在 .m文件中,而不是放在.h文件中。...原创 2022-06-07 12:36:49 · 7843 阅读 · 0 评论 -
iOS集成twitter分享
有个新项目中需要用到twitter分享,按照从前的经验,注册了一个推特账号,然后申请开发者,之后创建app,得到API Key,API Key Secret,Bearer Token,然后集成友盟SDK,通过友盟来调用twitter分享。意外的发现分享失败了。************Share fail with error Error Domain=TwitterAPIErrorDomain Code=453 "Request failed: forbidden (403)" UserInfo=原创 2022-05-10 14:45:49 · 3514 阅读 · 0 评论 -
解决问题“The App ID ‘XXXXX‘ appears to be in use by the App Store, so it can not be removed at this ti”
iOS 开发者账号删除App ID 时提示错误:The App ID 'XXXXX' appears to be in use by the App Store, so it can not be removed at this time.原因:在App Store Connect 创建过相关AppID的app,需要先移除掉App。不过尝试删除掉对应的app,但依然提示错误。解决方案:在App Store Connect 中将app对应的套装ID改为其他的,然后再删除AppID。原创 2022-05-07 16:34:16 · 4409 阅读 · 2 评论 -
UIDocumentInteractionController对文件预览或分享
UIDocumentInteractionController本地查看文件实例化一个UIDocumentInteractionController对象并遵守其delegate@interface FileReviewController () <UIDocumentInteractionControllerDelegate>@property (nonatomic, strong) UIDocumentInteractionController *DIController;@en原创 2021-11-19 18:13:07 · 2117 阅读 · 0 评论 -
iOS中H5视频默认全屏播放问题解决
问题描述:iOS中视频在H5页面播放时会自动切换至全屏模式解决方法:IOS10及以后,在 video标签页中只包含webkit-playsinline 是不够的,需要再增加playsinline.H5端重点代码:x5-video-player-type='h5' x5-video-player-fullscreen='true' playsinline webkit-playsinline说明:iOS10以上H5视频不自动全屏播放识别playsinline这个属性 iOS10以下...原创 2021-11-18 13:47:06 · 1958 阅读 · 0 评论 -
iOS 开发者证书打包项目未包含最新的UDID
登录开发者账号,添加完新的UDID,重新编辑开发者证书Profiles,要确认包含所有的UDID。然后下载mobileprovision并重新打包,将打出的包上传到fir或者蒲公英,看下最新打包是否有包含最新UDID。如果打包采用Automatically manage signing,添加完新的UDID后会自动更新mobileprovision。如果测试设备还是不统一的,那就是Xcode内部开发者证书是旧的,新的开发者证书没有更新到,所以下面要做的就是更新Xcode 本地的相关项目中的开发者证原创 2021-11-17 11:53:55 · 2349 阅读 · 0 评论 -
iOS相机权限设置
摄像头权限未开启时弹框跳转到设置页面 AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];//读取设备授权状态 if (authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied) { UIAlert.原创 2021-10-29 10:44:13 · 3452 阅读 · 0 评论