ios /安卓开发
软件开发工具包/Android原生开发工具包相关文档和高级学习教学。
1,468个主题在此版面
-
-
-
- 0 篇回复
- 22 次查看
-
-
当地时间10月31日至11月1日,美国协同其他35个国家,在华盛顿白宫举行了第二届国际勒索软件倡议(CRI)峰会,以研究如何更好地打击勒索软件攻击。 在会后由白宫发布的联合声明中,成员国一众表示,将巩固对勒索软件的集体抵抗能力,包括: 让勒索软件攻击者对其罪行负责,确保不为其提供避风港 通过对虚拟资产及其服务商施行反洗钱和打击资助恐怖主义(AML\CFT)措施,打击勒索软件攻击者从中获得非法利益 在每个合作伙伴的适用法律和相关机构允许的最大范围内,瓦解勒索软件及其组织的攻击行为,并将其绳之以法 酌情根据法律法规,分享有关因滥用基础设施发动勒索软件攻击的情报信息,确保国家基础设施网络安全 会议还计划建立基于自愿原则的国际反勒索软件工作组(ICRTF),开发跨部门工具和威胁情报交流网络,以提高预警能力,并整合政策和最佳实践框架。ICRTF计划编制关于工具、战术和程序的公开报告,在提高反勒索软件安全水位的同时鼓励相关私营部门与ICRTF开展合作。 这次会议标志着由美国拜登政府领导的国际反勒索软件倡议正式成立一周年,美国官员坚称,尽管勒索软件造成的严重破坏仍在持续,但在过去一年内对勒索软件攻击的打击仍然取得了进展。即便如此,根据美国财政部11月1日的统计结果,美国金融机构在 2021 年期间预支付的勒索软件赎金高达将近 12 亿美元。 此次参会的36个国家中也包括了乌克兰。在去年举行的首届会议上,一位高级政府官员表示虽然俄罗斯没有受到邀请,未来可能会视情况邀请,但这位官员在本次会议上否定了这种可能性。 本次与会的还有13家企业及组织…
-
- 0 篇回复
- 25 次查看
-
-
-
- 0 篇回复
- 17 次查看
-
-
-
- 0 篇回复
- 25 次查看
-
-
-
- 0 篇回复
- 20 次查看
-
-
image 更新:[2020-06-23 03:26:21] 注意:查看正文前,请先查看文末的评论,以确认是否有勘误。 本文提到的开发者测试版本(尝鲜版),今天就可以下载,普通用户等秋季吧。 https://github.com/ChenYilong iOS能否抢走微信小程序三分之一的用户? https://github.com/ChenYilong WWDC20苹果推出了一个新交互,在系统级别中提供三方应用的特定一部分,而无需完整安装应用。该功能将可以让用户扫描二维码就体验某款应用的部分功能。而这个功能和微信小程序极为相似,按照安卓与iOS 2:1 的比例,iOS 可能会抢走微信小程序三分之一的用户。 理由是 互联网现在的争夺战聚焦在了入口之争,Apple clips的优势就是相机入口优势。微信扫码比Apple clips 链路要长一点。 那么iOS能否办到? 如果做起来,仅仅是美团、饿了么等第三产业大厂支持的情况下,就可以办到。 iOS 已经布局了 Apple pay, 以及 Apple 账号登陆,基于此,微信有的优势,iOS系统全部都拥有。可别忘了,iOS是强制要求 app 支持了 Apple 登陆。 想象一个场景,饭店的桌角贴着 APPLE 家的二维码,打开iPhone扫一扫,不需要跳转到美团、微信就可以点餐,不需要手机号登陆,直接使用 Apple ID 就可以登陆美团,Apple Pay就可以付款。 也许可以说: 苹果要求6/30之前所有App都要支持苹果登录可能就是在给它铺路!…
-
- 0 篇回复
- 19 次查看
-
-
iOS 常见耗电量检测方案调研 本文对应 Demo 以及 Markdown 文件在 GitHub 仓库中,文中的错误可以提 PR 到这个文件,我会及时更改。 前言 如果我们想看下我们的 APP 或 SDK 是否耗电,需要给一些数据来展示,所以就对常见的电量测试方案做了一下调研。 影响 iOS 电量的因素,几个典型的耗电场景如下: 定位,尤其是调用GPS定位 网络传输,尤其是非Wifi环境 cpu频率 内存调度频度 后台运行 系统接口 iOS 10 系统内置的 Setting 里可以查看各个 App 的电池消耗。 enter image description here 系统接口,能获取到整体的电池利用率,以及充电状态。代码演示如下: //#import <UIKit/UIDevice.h> UIDevice *device = [UIDevice currentDevice]; device.batteryMonitoringEnabled = YES; //UIDevice返回的batteryLevel的范围在0到1之间。 NSUInteger batteryLevel = device.batteryLevel * 100; //获取充电状态 UIDeviceBatteryState state = device.batteryState; if (state == UIDeviceBatteryStateCharging || state == UI…
-
- 0 篇回复
- 20 次查看
-
-
避免使用 GCD Global队列创建Runloop常驻线程 本文对应 Demo 以及 Markdown 文件在仓库中,文中的错误可以提 PR 到这个文件,我会及时更改。 目录 避免使用 GCD Global队列创建Runloop常驻线程 GCD Global队列创建线程进行耗时操作的风险 避免使用 GCD Global 队列创建 Runloop 常驻线程 单一 Runloop 常驻线程 多个 Runloop 常驻线程 GCD Global队列创建线程进行耗时操作的风险 先思考下如下几个问题: 新建线程的方式有哪些?各自的优缺点是什么? dispatch_async 函数分发到全局队列一定会新建线程执行任务么? 如果全局队列对应的线程池如果满了,后续的派发的任务会怎么处置?有什么风险? 答案大致是这样的:dispatch_async 函数分发到全局队列不一定会新建线程执行任务,全局队列底层有一个的线程池,如果线程池满了,那么后续的任务会被 block 住,等待前面的任务执行完成,才会继续执行。如果线程池中的线程长时间不结束,后续堆积的任务会越来越多,此时就会存在 APP crash的风险。 比如: - (void)dispatchTest1 { for (NSInteger i = 0; i< 10000 ; i++) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ …
-
- 0 篇回复
- 19 次查看
-
-
前言: APNs 协议在近两年的 WWDC 上改过两次, 15 年 12 月 17 日更是推出了革命性的新特性。但在国内传播的博客、面试题里关于 APNs 的答案全都是旧的、错的。 导航: 对 APNs 的吐槽 APNs新闻一栏 新旧 APNs 协议工作示意图对比 反人类的旧APNs协议设计 基于 HTTP/2 的全新 APNs 协议 改进了,但仍需改进。还是有坑 对App开发的影响 如何创建 Universal Push Notification Client SSL 证书 结束语 对 APNs 的吐槽 APNs 是 Apple Push Notification service 的简称(注意 APNs 的大小写, s不需要大写)。 以下是我收集的一些关于 APNs 的吐槽,你先看下哪些吐槽比较“到位”: -- 被吐槽的内容 吐槽 1 使用第三方SDK接入推送服务,SDK提供商却告诉我,他们无法获知哪条消息成功发送给了APNs,哪些失败了,而且即使APNs接收了,APNs是否能保证投递成功,他们也无能为力。 我把消息交给你了,你告诉什么都保证不了?推送成功与否”基本靠猜“? 2 为什么我推了多条消息,APNs就只给我最后一条?! 3 推送内容只能是 256 字节 这也太小了,根本不够用啊! 4 生产环境推送证书、测试环境推送证书、tvOS推送证书、watchOS推送证书、VOIP推送证书。。 证书太多了,制作、切换证书太麻烦! 答案会穿插在下文中。 APNs新闻一栏 时间 新闻 参考文档 2014年6月 2014年6…
-
- 0 篇回复
- 28 次查看
-
-
有一种 Block 叫 Callback,有一种 Callback 叫 CompletionHandler 【引言】iOS10推送部分的API,大量使用了 CompletionHandler 这种命名方式,那么本文我们将对比下这种 Block 的特殊性,以便更好的理解和在自己的项目中实践 CompletionHandler 样式的 Blcok。 原文链接: 《有一种 Block 叫 Callback,有一种 Callback 叫 CompletionHandler》 正文 我们作为开发者去集成一个 Lib (也可以叫轮子、SDK、下文统一叫 Lib)时,我们会发现我们遇到的 Block, 按照功能的角度划分,其实可以分为这几种: Lib 通知开发者,Lib操作已经完成。一般命名为 Callback 开发者通知 Lib,开发者的操作已经完成。一般可以命名为 CompletionHandler。 这两处的区别: 前者是 “Block 的执行”,后者是 “Block 的填充”。 Callback vs CompletionHandler 命名与功能的差别,Apple 也没有明确的编码规范指出过,只不过如果按照“执行与填充”的功能划分的话,callback 与 completionHandler 的命名可以区分开来对待。同时也方便调用者理解 block 的功能。但总体来说,Apple 官方的命名中,“Block 填充“这个功能一般都会命名为 “completionHandler”,“Block 执行”这个功能大多命名为了“callback…
-
- 0 篇回复
- 32 次查看
-
-
image 在 《iOS面试题集锦(附答案)》 中有这样一道题目: 在block内如何修改block外部变量?(38题)答案如下: 38. 在block内如何修改block外部变量? 注:本题代码请在仓库中查看以 Demo38 开头的工程(公众号请点击原文查看 GitHub 仓库) 先描述下问题: 默认情况下,在block中访问的外部变量是复制过去的,即:写操作不对原变量生效。但是你可以加上 __block 来让其写操作生效,示例代码如下: __block int a = 0; void (^foo)(void) = ^{ a = 1; }; foo(); //这里,a的值被修改为1 这是网上常见的描述。你同样可以在面试中这样回答,但你并没有答到“点子上”。真正的原因,并没有这么“神奇”,而且这种说法也有点牵强。面试官肯定会追问“为什么写操作就生效了?” 实际上需要有几个必要条件: "将 auto 从栈 copy 到堆" “将 auto 变量封装为结构体(对象)” 我会将本问题分下面几个部分,分别作答: 该问题研究的是哪种 block 类型? 在 block 内为什么不能修改 block 外部变量 最优解及原理解析 其他几种解法 改外部变量必要条件之"将 auto 从栈 copy 到堆" 改外部变量必要条件之“将 auto 变量封装为结构体(对象)” 该问题研究的是哪种 block 类型? 今天我们讨论是 __NSMallocBlock__ (或者叫 _NSConcret…
-
- 0 篇回复
- 43 次查看
-
-
像AlertView一样简单,init后就能show,像TableView一样能玩出花样 项目地址:ChatKit-OC 上线第一天 Trending 排名第一: enter image description here 什么?很多人已造了类似轮子? Demo 太多,是时候该来一款 Lib 了; 闭源的太多,是时候来一款开源的了; 部分开源的太多,是时候来一款 100% 开源的了(iOS端); -手撕 Frame 的太多,是时候来一 AutoLayout 款了; 自定义能力太弱的太多,是时候来一款可高度自定义的了; iOS 端代码完全开源,你能看到完整的建立 Socket 连接,以及维持心跳的所有步骤。Masonry布局,支持 CocoaPods ,不需要改源码,不需要设 Delegate,不需要在代码里调整聊天气泡位置,这一切我都帮你想好了,要不要来试用一下? 你们先感受下: enter image description here http://ww1.sinaimg.cn/large/64dfd849jw1f77b510x7dg20nl0l74r6.gifenter image description here | http://ww2.sinaimg.cn/mw690/64dfd849jw1f77b3wfkuyg20br0krqve.gifenter image description here enter image description here enter …
-
- 0 篇回复
- 16 次查看
-
-
【使用 Heap-Stack Dance 替代 Weak-Strong Dance,优雅避开循环引用】Weak-Strong Dance这一最佳实践的原理已经被讲烂了,开发者对该写法已经烂熟于心。有相当一部分开发者是不理解 Weak-Strong Dance 的原理,但却写得很溜,即使没必要加 strongSelf 的场景下也会添加上 strongSelf。没错,这样做,总是没错。 有没有想过从API层面简化一下? 介绍下我的做法: 为 block 多加一个参数,也就是 self 所属类型的参数,那么在 block 内部,该参数就会和 strongSelf 的效果一致。同时你也可以不写 weakSelf,直接使用使用该参数(作用等同于直接使用 strongSelf )。这样就达到了:“多加一个参数,省掉两行代码”的效果。原理就是利用了“参数”的特性:参数是存放在栈中的(或寄存器中),系统负责回收,开发者无需关心。因为解决问题的思路是:将 block 会捕获变量到堆上的问题,化解为了:变量会被分配到栈(或寄存器中)上,所以我把种做法起名叫 Heap-Stack Dance 。 具体用法示例如下: (详见仓库中的Demo---文件夹叫做:weak-strong-drance-demo ) #import "Foo.h" typedef void (^Completion)(Foo *foo); @interface Foo () @property (nonatomic, copy) Completion completi…
-
- 0 篇回复
- 17 次查看
-
-
iOS网络缓存扫盲篇 --使用两行代码就能完成80%的缓存需求 下篇预告:使用80%的代码来完成剩下的20%的缓存需求 。敬请 star (右上角)持续关注。 目录 当我们在谈论缓存的时候,我们在谈论什么? GET网络请求缓存 80%的缓存需求:两行代码就可满足 控制缓存的有效性 文件缓存:借助ETag或Last-Modified判断文件缓存是否有效 Last-Modified ETag 总结 一般数据类型借助 Last-Modified 与 ETag 进行缓存 剩下20%的网络缓存需求--真的有NSURLCache 不能满足的需求? 由于微信、QQ、微博、这类的应用使用缓存很“重”,使一般的用户也对缓存也非常习惯。缓存已然成为必备。 缓存的目的的以空间换时间 这句话在动辄就是 300M、600M 的大应用上,得到了很好的诠释。但能有缓存意识的公司,还在少数。 只有你真正感受到痛的时候,你才会考虑使用缓存。 这个痛可能是: 服务器压力、客户端网络优化、用户体验等等。 当我们在谈论缓存的时候,我们在谈论什么? 我们今天将站在小白用户的角度,给缓存这个概念进行重新的定义。 缓存有不同的分类方法: enter image description here 这里所指的缓存,是一个宽泛的概念。 我们这里主要按照功能进行划分: enter image description here | 第一种 |第二种 -------------|-------------|------------- …
-
- 0 篇回复
- 23 次查看
-
-
IM 即时通讯技术在多应用场景下的技术实现,以及性能调优(iOS视角) (视频见评论区) 2016年9月份我参加了 MDCC2016(中国移动开发者大会), 2016年9月份我参加了 MDCC2016(中国移动开发者大会) 在 MDCC2016 上我做了关于 IM 相关分享,会上因为有50分钟的时间限制 ,所以有很多东西都没有展开,这篇是演讲稿的博文版本,比会上讲得更为详细。有些演讲时一笔带过的部分,在文中就可以展开讲讲。 图为我正在演讲 注: 本文中所涉及到的所有 iOS 端相关代码,均已100%开源(不存在 framework ),便于学习参考。 本文侧重移动端的设计与实现,会展开讲,服务端仅仅属于概述,不展开。 为大家在设计或改造优化 IM 模块时,提供一些参考。 我现在任职于 LeanCloud(原名 AVOS ) 。LeanCloud 是国内较早提供 IM 服务的 Paas 厂商,提供 IM 相关的 SDK 供开发者使用,现在采纳我们 IM 方案的 APP 有:知乎Live、掌上链家、懂球帝等等,在 IM 方面也积累了一些经验,这次就在这篇博文分享下。 采纳了我们IM方案和推送方案的APP IM系列文章 IM 系列文章分为下面这几篇: 《IM 即时通讯技术在多应用场景下的技术实现,以及性能调优(iOS视角)》 (本文) 《技术实现细节》 《有一种 Block 叫 Callback,有一种 Callback 做 CompletionHandler》 《防 DNS 污染方案》 本文是…
-
- 0 篇回复
- 28 次查看
-
-
CYLDeallocBlockExecutor【你好 block,再见 dealloc】 Hello block,byebye dealloc!一行代码代替dealloc完成“self-manager” pod-v1.0.0 Objective--C-compatible platform-iOS-6.0+ 导航 与其他框架的区别 使用CYLDeallocBlockExecutor 第一步:使用cocoaPods导入CYLDeallocBlockExecutor 第二步:一行代码搞定 第三步 运行Demo 应用场景 管理KVO与NSNotificationCenter的removeObserver操作 模拟weak修饰的property的生命周期 与其他框架的区别 - 特点 解释 1 轻量级、无污染 基于 NSObject 分类,无污染,适用于任何 Objective-C 对象,比基于子类化、继承的框架更加轻量级 2 高性能 使用 runtime 的对象关联(或称为关联引用)技术,随着关联对象的 dealloc,对应的 block 自发执行,性能消耗极低。 3 简单,无学习成本 一行代码完成,仅需使用 cyl_executeAtDealloc: 中的 block 代替 dealloc 即可。自动检测对象的 dealloc 的时机,执行 block。 4 将分散的代码集中起来 你可以使用 CYLDeallocBlockExecutor 将 KVO 或 NSNotificationCenter 的 a…
-
- 0 篇回复
- 25 次查看
-
-
CYLTableViewPlaceHolder【一行代码完成“空TableView占位视图”管理】 pod-v1.0.6 Objective--C-compatible platform-iOS-6.0+ 导航 与其他框架的区别 集成后的效果 使用CYLTableViewPlaceHolder 运行Demo 与其他框架的区别 - 特点 解释 1 轻量级、无污染 基于 UITableView 分类,无污染,比基于子类化、继承的框架更加轻量级 2 低耦合 自定义占位视图的可自行实现,通过协议传递,耦合性极低。 3 简单,无学习成本 一行代码完成,仅需使用 cyl_reloadData 代替 reloadData 即可。自动检测是否需要 addSubview 和 removeFromSuperview ,省去学习繁琐的 add 和 remove 的调用时机。 4 使用方法简单 CYLTableViewPlaceHolder 基于 dataSource 数据源,所以只需操作 dataSource 数据源,即可完成占位视图的 addSubview 和 removeFromSuperview 的时机,更加直观。搭配 MJRefresh 使用十分方便,demo 中也给出了搭配使用方法。 5 支持CocoaPods 容易集成 (学习交流群:523070828) 集成后的效果 集成后的效果 使用CYLTableViewPlaceHolder 三步完成: 第一步:使用cocoaPods导入…
-
- 0 篇回复
- 17 次查看
-