iOS开发
文章平均质量分 84
ZFJ_张福杰
一个有产品思想的程序猿,技术栈:iOS、Flutter、Python、小程序、Vue、Web
展开
-
【iOS】APP IM聊天框架的设计(基于第三方SDK)
在开发社交聊天类型的APP的时候,IM是必不可少的功能,而且很多公司的IM服务都是接的第三方的,很少用自研的,国内的IM厂商也都很成熟,本文所有的方案也都是基于第三方SDK的基础上开展的;本人用过自研、腾讯、环信、融云、声网的IM服务。APP IM框架需要有以下几个优点,或者说要优先考虑一下几个点:1、对业务场景有完美的支持;2、扩展性要强(能力、UI),可以应对产品经理的各种“刁难”;3、第三方IM SDK 与APP业务纠缠小,可以随时替换;4、本地化数据存储方便,一般是用户信息、聊天记录;原创 2023-02-14 17:37:00 · 1604 阅读 · 3 评论 -
【工具】iOS代码混淆工具-iOS源码混淆
ZFJObsLib是专业的iOS源码混淆工具,具体功能有方法混淆、属性混淆、类名混淆、关键字混淆、添加垃圾代码、自动创建垃圾类、删除注释、修改资源文件Hash值、加密字符串、翻新资源名、模拟人工混淆、混淆文件名、混淆文件目录、混淆词库、混淆日志、映射列表、敏感词过滤、图片压缩、爬虫服务、修改项目名、翻新项目UUID、自动备份混淆项目、自定义忽略属性、自定义忽略函数、自定义忽略类名、界面颜色魔改等等!针对源码比较少逻辑比较简单的项目,软件可以为已有类添加垃圾代码并自动引用,还能创建垃圾类并自动实例化调用!原创 2023-02-03 16:40:53 · 1723 阅读 · 0 评论 -
iOS-自定义弹窗管理封装组件ZFJPopManager
有个小伙伴给我几百块钱,让我帮他写个弹窗管理的功能,然后我就利用闲暇时间做好了,完美的交付给他了,晚上我就拿钱美美的去吃顿火锅了🍲🍲🍲闲来无事我又把我写的ZFJPopManager开源给大家,给大家白嫖,估计给我钱的那个小伙子看到了,心里有一百头曹尼玛在奔腾😱😱😱ZFJPopManager支持五种弹窗展示动画,使用起来非常方便🐣🐣🐣。原创 2022-10-15 23:52:15 · 1301 阅读 · 0 评论 -
【声网SDK】集成声网RTC和RTM的SDK编译时报错Redefinition of enumerator
错误描述在同时集成RTC和RTM的时候,编译的时候会报错,报错的原因是”Redefinition of enumerator“,应该是枚举类型的重复,截图如下:相关搜索的关键词如下:Redefinition of enumerator ‘AgoraAreaCodeCN’Redefinition of enumerator ‘AgoraAreaCodeNA’Redefinition of enumerator ‘AgoraAreaCodeEU’…解决方案在官网已经有这个问题的解决方案了,但是原创 2022-05-24 14:46:34 · 1340 阅读 · 0 评论 -
算法-LRU存储算法(OC、Python)
需求场景数据缓存或者持久化一般分为磁盘缓存和内存缓存,如果从读写速度上我们当然希望数据读取的书读越快越好,所以内存缓存倍受青睐,但是内存缓存由于成本限制,我们不能把全部的数据放在内存缓存里,我们该如何取舍呢?LRULRU是Least Recently Used的缩写,意思是最近最少使用的数据,也就是最近使用的数据在未来的一段时间内任然被使用,已经使用很久的数据在未来的一段时间内任然不会变使用。基于这个理念我们可以在内存中保留常用的数据!就是我们定义一个指定容量的list,每次新加的数据我们都会放在原创 2020-05-22 16:44:37 · 740 阅读 · 0 评论 -
ZFJObsLib-iOS马甲包多语言自动翻译软件
前言我们在上架多语言的包的时候,需要把关键词和描述翻译成多语言,然后填写进去,如下图:要是自己一个一个去翻译也是很麻烦的!ZFJObsLib翻译助手输入你的关键词和描述中文版的,自动翻译成各语言的关键词和描述,截图如下:下载地址ZFJObsLib(iOS代码混淆工具)详细说明:https://zfj1128.blog.csdn.net/article/details/95482...原创 2020-03-09 14:03:45 · 852 阅读 · 3 评论 -
ZFJObsLib-iOS代码混淆软件使用问答(Q&A)
一、账号1.账号、密码、卡密在哪获取?卡密咨询软件作者获取,账号密码自己注册使用;2.账号密码忘记了怎么办?关注微信小程序《ZFJ小站》,在个人中心有账号查询功能,输入卡密即可查询你的账号密码以及到期信息;3.软件支持在多台设备上登录吗,如果不支持我想换设备了怎么办?软件只支持在注册设备上登录使用,其他的设备无法登录使用;如果用户想换设备,可以咨询作者进行换设备操作;4.账号过期了如...原创 2020-02-20 17:35:16 · 2377 阅读 · 0 评论 -
APP-细说APP网络深度优化与网络安全
前言本篇博文主要讲啥???- 网络优化!!!网络优化有哪些点???- 流量、质量、速度、安全!!!为什么要网络优化???- 闲的蛋疼!!!流量流量对于大部分用户来说还是比较敏感的...原创 2021-08-08 20:32:37 · 6587 阅读 · 0 评论 -
iOS-WKWebView缓存并保证实时性
前言说到WKWebView的缓存,我之前也写过一篇关于UIWebView的缓存的,文章地址如下:《iOS-UIWebview缓存并保证实时性》但是这个方法对于WKWebView就失去了效果,后来公司的项目全部改为WKWebView,至于WKWebView的好处,这边就不过多叙述了;上面的方法要是在WKWebView上就失效了,后来我也修改了新的方案,自己的闲暇时间一直在维护自己的几款软...原创 2020-01-16 17:47:20 · 5665 阅读 · 1 评论 -
iOS各类马甲包被拒解决方案,iOS过包技巧
一、总结性表格从开始提审App到每一次被打回,到最终通过审核过程的记录,包括App内容、打回原因、打回时间、修改内容、重提时间,上架时间,下次提交后的反馈等。一份代码可以混淆以后上多次、可以在不同的账号上进行打包上架,降低上架成本;iOS代码混淆请看我的另一篇博客《ZFJObsLib-iOS代码混淆工具-马甲包混淆工具(Python脚本混淆iOS工程)》有的是公司为了引流,把主AP...原创 2020-01-03 18:53:02 · 6003 阅读 · 0 评论 -
iOS-ZFJRedisLib-超便捷的键值对存储方案,Sqlite数据模型存储库,APP缓存解决方案
前言本人以前写过一个数据模型存储方法,是我在上上家公司做缓存框架的时候写的,具体也就是在FMDB的基础上封装,直接对数据模型进行存储操作,如下:《iOS-基于FMDB的操作封装,模型对象的增删改查》最近本人也不是很忙,加之在Python项目中用到Redis和在APP中用到NSUserDefaults,我就想做一个便捷的基于数据库的键值对存储方案,当然这个方案并不比Redis优秀,我们也知道R...原创 2020-01-02 14:45:59 · 954 阅读 · 0 评论 -
算法-青蛙跳-斐波那契数列(OC、Swift、Python)
前言我们在面试的过程中,经常会有一些面试官会问到算法,当然’青蛙跳????‘也是会被问到比较多的一种算法(笔者今年面试就被问过两次,让我在白板和白纸上手写代码,虽然我非常讨厌手写代码,但是我还是用伪代码写出来了????),青蛙跳也叫做斐波那契数列,我们在上学的时候也学过;一般面试题目如下:????题目:一只青蛙一次可以条一级台阶也可以一次跳两级台阶,如果有n级台阶青蛙有多少种跳法?????分析1级:1种跳法,跳法...原创 2019-12-18 14:04:34 · 1186 阅读 · 2 评论 -
Python-编写Python脚本处理Excel事件列表生成iOS代码
前言公司的项目,需要对项目中事件上报进行重新处理和封装,方便调用和自动上报!自己花了半天时间全部封装搞好,如下图:其中ASLogsEventName类是存放约定好的事件字段的,但是APP中有四百个事件上报的点,要是一个一个手写上去,估计手要残了,事件Excel列表如下图:所以肯定不能手写啦????????????自动化脚本这里我使用Python脚本,自动读取Excel表格,然后生成iOS...原创 2019-12-06 18:55:28 · 879 阅读 · 0 评论 -
APP上架被拒原因—持续更新
APP上架被拒原因—持续更新一、赌博竞赛方面1.条款:20.2 - Official rules for sweepstakes and contests must be presented in the App and make it clear that Apple is not a sponsor or involved in the activity in any mann原创 2016-01-11 11:21:31 · 1156 阅读 · 0 评论 -
iOS-OC-监听蓝牙是否开启(打开状态)
1.导入头文件#import 2.申明对象@property(strong,nonatomic)CBCentralManager* CM;3.遵守代理方法CBCentralManagerDelegate4.初始化对象,设置代理self.CM = [[CBCentralManageralloc] init原创 2016-02-17 11:59:50 · 12934 阅读 · 0 评论 -
iOS-开发使用 iBeacon 的 iOS 7 应用
开发使用 iBeacon 的 iOS 7 应用本文翻译自 http://www.raywenderlich.com/66584/ios7-ibeacons-tutorial原作者:Chris Wagner译者:@nixzhu你是否希望过你的手机能够显示你在一栋大楼里的位置?例如商场或棒球场。诚然,GPS 能够告诉你你在建筑的哪一边。但要在这些钢筋混凝转载 2016-02-17 16:10:34 · 850 阅读 · 0 评论 -
iOS-MultipeerConnectivity框架开发(一)
英文原文:Understanding Multipeer Connectivity Framework in iOS 7 – Part 1Multipeer Connectivity Framework 是iOS 7 推出的众多新框架的一种,它拓宽了操作系统中应用的范围。其目的是使开发者可以创建通过Wi-Fi或蓝牙在近距离建立连接的应用。是在近距离设备间建立互动,交换数据和翻译 2016-03-07 15:26:18 · 1526 阅读 · 2 评论 -
iOS-OC-监听键盘的高度 隐藏和出现
1.注册检测键盘的通知[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardWillShowNotification object:nil]; //注册键盘隐藏通知 [[NSNotificationCenter d原创 2016-03-21 11:39:34 · 2586 阅读 · 0 评论 -
iOS-获取手机唯一标识符(获取苹果手机IMEI,获取苹果手机MAC)
一、iOS7以后不能获取手机IMEI iOS 2.0版本以后UIDevice提供一个获取设备唯一标识符的方法uniqueIdentifier,通过该方法我们可以获取设备的序列号,这个也是目前为止唯一可以确认唯一的标示符。好景不长,因为该唯一标识符与手机一一对应,苹果觉得可能会泄露用户隐私,所以在iOS5之后该方法就被废弃掉了,因此iOS5以后不能获取手机IMEI,但是也是可以通过私有API获...原创 2016-01-13 11:40:04 · 38984 阅读 · 8 评论 -
iOS-OC根据时间戳获取距离现在的状态(刚刚,分钟前,今天,昨天)
- (NSString *)distanceTimeWithBeforeTime:(double)beTime{ NSTimeInterval now = [[NSDatedate]timeIntervalSince1970]; double distanceTime = now - beTime; NSString * distanceStr原创 2016-01-08 14:42:28 · 7711 阅读 · 0 评论 -
iOS-OC防止按钮重复点击
前言我们在开发的过程中,比如点击一个按钮进行网络请求,或者发送验证码,如果用户连续点击可能导致事件连续调用,验证码会多次发送,在实际开发中我们可以使用enabled来控制,但是在项目中如果对大量的UIButton做控制,这样显然比较麻烦;我们可以考虑通过runtime个UIButton添加一个属性来控制;自定义一个中转方法来接收系统方法,然后我们在自定义的事件接收方法里面来判断是否需要响应,这...原创 2016-01-13 15:11:26 · 1633 阅读 · 0 评论 -
UIWebView设置图片的宽度适应屏幕的大小
#import "ViewController.h"@interface ViewController ()UIWebViewDelegate>@property (weak, nonatomic) IBOutletUIWebView *webView;@end@implementation ViewCon原创 2016-01-08 14:16:29 · 2761 阅读 · 0 评论 -
iOS-OC-APP开场动画
//// AppDelegate.m// 开场动画demo//// Created by ZFJ_APPLE on 16/1/25.// Copyright © 2016年张福杰. All rights reserved.//#import "AppDelegate.h"@interface A原创 2016-01-25 14:37:48 · 1994 阅读 · 0 评论 -
iOS-OC一句话设施UIButton倒计时(获取验证码)
//获取验证码按钮- (IBAction)getButtonClick:(UIButton *)sender;#pragma mark - 获取验证码- (IBAction)getButtonClick:(UIButton *)sender{ //正常状态下的背景颜色 UIColor *mainColor原创 2016-01-13 14:24:19 · 3443 阅读 · 3 评论 -
UIWebView实现自动登陆(存储、读取Cookie)
1.在AppDelegate中键入这几句代码- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application la原创 2016-01-12 14:47:26 · 6105 阅读 · 0 评论 -
iOS App集成Apple Pay教程(附示例代码)
苹果在本周一发布了iOS 8.1版本,并正式开放了Apple Pay支付系统。Apple Pay是一个基于NFC的支付系统,不久将被数以万计的线下零售商店予以支持。即便这项科技并不是彻底的突破性进展,但它足以推动许多公司和零售商来支持这种支付方式,并成为苹果又一项成功的投资。Apple Pay还给开发者带来了处理支付的新渠道,用户将期望在应用中使用它,因为它将验证和交易极端简化,仅需手指轻转载 2016-02-25 16:11:55 · 624 阅读 · 0 评论 -
去掉navigationBar下面的一条横线
1.第一种方法 [[UINavigationBarappearance] setBackgroundImage:[[UIImagealloc] init]forBarPosition:UIBarPositionAnybarMetrics:UIBarMetricsDefault]; [[UINavigationBarappearance] setSha原创 2016-04-12 13:52:59 · 3174 阅读 · 0 评论 -
iOS-一步一步实现iOS微信自动抢红包(非越狱)
微信红包前言:最近笔者在研究iOS逆向工程,顺便拿微信来练手,在非越狱手机上实现了微信自动抢红包的功能。题外话:此教程是一篇严肃的学术探讨类文章,仅仅用于学习研究,也请读者不要用于商业或其他非法途径上,笔者一概不负责哟~~好了,接下来可以进入正题了!此教程所需要的工具/文件yololibclass-dumpdumpdecryptediOSOpenDeviTo转载 2016-03-28 14:26:59 · 3498 阅读 · 0 评论 -
iOS-OC-本地推送和取消本地推送服务
1.添加本地推送// 设置本地通知+ (void)registerLocalNotification:(NSInteger)alertTime alertBody:(NSString *)alertBody userDict:(NSDictionary *)userDict{ UILocalNotification *notification = [[UILocalNotifica原创 2016-05-24 12:07:33 · 5603 阅读 · 1 评论 -
iOS-OC-3DES加密和解密
+ (NSString*)TripleDES:(NSString*)plainText encryptOrDecrypt:(CCOperation)encryptOrDecrypt{ const void *vplainText; size_t plainTextBufferSize; if (encryptOrDecrypt == kCCDecrypt)//解原创 2016-05-24 12:11:26 · 3584 阅读 · 1 评论 -
iOS-OC-合并视频(两个视频和成一个视频)
说明:两个视频合并成一个视频,左边一部分,右边一部分,可以同时播放;类似于软件Sing,仿Sing视频合并+ (void)convertWithLocalVideoUrl1:(NSURL *)url1 videoUrl2:(NSURL *)url2 half:(BOOL)half progress:(void (^)(CGFloat prog))progress resultURL:(void原创 2016-05-24 13:12:42 · 8669 阅读 · 8 评论 -
iOS-OC-启动图加载动态Gif
// 设定位置和大小 CGRect frame = CGRectMake(50,340,[UIScreen mainScreen].bounds.size.width / 2,[UIScreen mainScreen].bounds.size.height / 2); frame.size = [UIImage imageNamed:@"640gif.gif"].size;原创 2016-05-24 14:57:45 · 5946 阅读 · 1 评论 -
iOS-OC-UITableViewCell分割线自定义
一,使UITableViewCell分割线靠左,不要留间距;方法一:-(void)viewDidLayoutSubviews { if ([_tableview respondsToSelector:@selector(setSeparatorInset:)]) { [_tableview setSeparatorInset:UIEdgeInsetsZero];原创 2016-05-24 14:50:52 · 2838 阅读 · 0 评论 -
iOS-OC-tableview SDWebImage加载多张图片内存警告(received memory warning)
我们在做类似于朋友圈的列表的时候,我们在每个cell上加载多张图片的时候,我们快速的滚动列表,会收到内存警告,并且会出现闪退的状况;我做了下面的操作解决了问题;1.加载小的缩略图;现在很多公司的图片服务器选择第三方的,比如阿里云,七牛等等,他们都有自己方法来获取缩略图,当然你们公司如果有自己的服务器,也可以自己做缩略图;例如,以七牛为例原图URL:http://7xpx8n.c原创 2016-06-08 17:24:00 · 4490 阅读 · 0 评论 -
iOS-OC-通过融云APPKey和AppSecret获取融云Token
RCIMAppKey:融云appKeyKAppSecret:融云appSecret以下是基于AFNetWorking的请求方法+ (void)requestRCIMDataBaseWithURL:(NSString *)urlStr parameters:(id)parameters completed:(void(^)(id responseObject))com原创 2016-05-19 11:40:30 · 3444 阅读 · 0 评论 -
iOS-OC-图片水印,图片裁剪和屏幕截图
1.图片水印- (void)getnewImage { UIImage *bgImage = [UIImage imageNamed:@""]; //创建一个位图上下文 UIGraphicsBeginImageContextWithOptions(bgImage.size, NO, 0.0); //将背景图片画入位图中 [bgImag原创 2016-07-22 17:32:51 · 2517 阅读 · 0 评论 -
关于iOS多线程,你看我就够了
在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项。当然也会给出几种多线程的案例,在实际使用中感受它们的区别。还有一点需要说明的是,这篇文章将会使用Swift 和 Objective-c 两种语言讲解,双语幼儿园。OK,let's begin!概述这篇文章中,我不会说多线程是什么、线程和进程的区别、多线程有什么用,当然我也不会说什么是串行、什么是并行转载 2016-06-16 13:44:39 · 962 阅读 · 0 评论 -
iOS-OC-DrawRect使用小谈
1.将一张图片通过画图画到背景视图上,如果背景图片比图片大图片会铺开;UIImage *bgimage = [UIImage imageNamed:@"ec.jpg"]; [bgimage drawAsPatternInRect:self.bounds];//将图像作为一个CGPattern2.将一张图片通过画图画到背景视图上,图片会铺满整个viewUIImage *bgima原创 2016-07-18 12:57:40 · 1106 阅读 · 0 评论 -
iOS-OC-监听网络状态,有网时数据自动刷新
我监听网络状况用的是AFNetNetWorking,你可以用其他的方法,原理都一样;我所有的控制器都继承于基类控制器;1.监听网络#pragma mark - 监测网络状态- (void)monitorNetworkState{ AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager shared原创 2016-08-18 12:49:09 · 5322 阅读 · 0 评论 -
iOS-OC-新浪微博登录报错redirect_uri_mismatch
我在用第三方登录的时候报错了,提示redirect_uri_mismatch,截图如下:原因是我在新浪开发平台新建APP后,没有修改回调url,回调url要和APP中设置的回调url一致;代码如下:[UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:XinLangKey secret:XinLangSerect RedirectUR原创 2016-08-23 15:18:42 · 5609 阅读 · 0 评论