关于ios:送码IOS付费榜92名春节不打烊功德加倍攒

整体成果概览图 船新玩法,换个姿态攒功德竞品玩法过于简略:都是敲敲,而后设置里换换木鱼款式、音色等本APP玩法功德上云:敲击之后,会将所积攒的功德上传至fo祖云端功德可视化:每日功德、3D功德地球仪、功德排行榜,高深莫测 功德菩提树:可通过破费功德,与亲朋好友一起种下菩提树,独特积德,独特采摘菩提树成长进去的功德果实弱小的卡片零碎:您能够应用卡片,来减少本人的功德积攒速度,甚至能够通过卡片取窃取好友的功德齐备的勋章零碎:您能够通过实现一些特定的工作,来取得勋章,勋章是一种功德积攒路上的永恒认可将来布局数据可视化:功德往来图在1个名为【事实】的元宇宙中,每个人都是一个节点,咱们靠着人情往来维系着彼此的关系,而在在1个名为【电子木鱼 - 看得见的功德】的功德元宇宙中,咱们能够通过数据可视化的形式,展现出每个人之间的功德往来图,让人们看到本人的功德是如何在这个世界中流动的。 功德du桌上量子du桌,享孤注一掷。 季度、年度、任意时间段的功德报告一般来说,一般APP只有年度报告,而咱们能够提供季度、年度、任意时间段的功德报告,让用户能够更加清晰的理解本人在各个时间段的功德积攒状况等。 送激活码933W6M4Y3PLM WR6KM6KNJRNJ RKF6L6H9YRME AJETXHFMYWA3 R4AXNH676MEL RR67ME3J9R74 FR4T6PLYW9W4 M6AJMFX67636 FWJ63YARHHLN FR3NHLWRH9KT E3HPNX3H3JNN 9967X3LKJEFH NPN43EFRH6XN 4LN3JAL6LWEM 76MXR6KA996K JWMHRFFNT6HJ YANNFETFR939 7A3KE36NTKXP WE9RXLTYH9MF NXE9L6P6YFPR NL7WX3AT4RPA 顺祝大家早日功德圆满~

February 16, 2024 · 1 min · jiezi

关于ios:CocoaPods-在iOS开发中养活了这么多项目它到底是个啥-京东云技术团队

对于iOS开发者而言,CocoaPods并不生疏,通过pod相干的命令操作,就能够很不便的将我的项目中用到的三方依赖库资源集成到我的项目环境中,大大的晋升了开发的效率。CocoaPods作为iOS我的项目的包管理工具,它在命令行背地做了什么操作?而又是通过什么样的形式将命令指令申明进去供咱们应用的?这些实现的背地底层逻辑是什么?都是本文想要探讨开掘的。 一、Ruby是如何让零碎可能辨认曾经装置的Pods指令的?咱们都晓得在应用CocoaPods治理我的项目三方库之前,须要装置Ruby环境,同时基于Ruby的包管理工具gem再去装置CocoaPods。通过装置过程能够看进去,CocoaPods实质就是Ruby的一个gem包。而装置Cocoapods的时候,应用了以下的装置命令: sudo gem install cocoapods装置实现之后,就能够应用基于Cocoapods的 pod xxxx 相干命令了。gem install xxx 到底做了什么也能让 Terminal 失常的辨认 pod 命令?gem的工作原理又是什么?理解这些之前,能够先看一下 RubyGems 的环境配置,通过以下的命令: gem environment 通过以上的命令,能够看到Ruby的版本信息,RubyGem的版本,以及gems包装置的门路,进入装置门路 /Library/Ruby/Gems/2.6.0 后,咱们能看到以后的Ruby环境下所装置的扩大包,这里能看到咱们相熟的Cocoapods相干的性能包。除了安装包门路之外,还有一个 EXECUTABLE DIRECTORY 执行目录 /usr/local/bin,能够看到领有可执行权限的pod文件,如下: 预览一下pod文件内容: #!/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby## This file was generated by RubyGems.## The application 'cocoapods' is installed as part of a gem, and# this file is here to facilitate running it.#require 'rubygems'version = ">= 0.a"str = ARGV.firstif str str = str.b[/\A_(.*)_\z/, 1] if str and Gem::Version.correct?(str) version = str ARGV.shift endendif Gem.respond_to?(:activate_bin_path)load Gem.activate_bin_path('cocoapods', 'pod', version)elsegem "cocoapods", versionload Gem.bin_path("cocoapods", "pod", version)end依据文件正文内容能够发现,以后的可执行文件是 RubyGems 在装置 Cocoapods 的时候主动生成的,同时会将以后的执行文件放到零碎的环境变量门路中,也即寄存到了 /usr/local/bin 中了,这也就解释了为什么咱们通过gem装置cocoapods之后,就立马可能辨认pod可执行环境了。 ...

September 21, 2023 · 14 min · jiezi

关于ios:百度APP-iOS端包体积50M优化实践六无用方法清理

一、前言百度APP包体积通过一期优化,如无用资源清理,无用类下线,Xcode编译相干优化,体积曾经有了显著的缩小。然而优化后APP包体积在iPhone11上仍有350M的空间占用。与此同时百度APP作为百度的旗舰APP,业务迭代十分多且迅速,体积优化和防劣化依然是以后阶段的一个外围工作。因而百度APP开启了粒度更小,修复危险更高的无用办法清理相干工作。冀望通过无用办法清理,无效升高百度APP的包体积,同时删除我的项目中的无用办法,冗余代码,进步代码的整洁度。 百度APP iOS端包体积优化实际系列文章回顾: 《百度APP iOS端包体积50M优化实际(一)总览》《百度APP iOS端包体积50M优化实际(二) 图片优化》《百度APP iOS端包体积50M优化实际(三) 资源优化》《百度APP iOS端包体积50M优化实际(四) 代码优化》《百度APP iOS端包体积50M优化实际(五) HEIC图片和无用类优化实际》二、计划调研针对无用办法清理,调研了各家厂商目前已颁布的计划,支流计划基于Mach-O + LinkMap文件的剖析,然而次要存在以下问题: 1.准确度低 2.针对零碎办法须要手动过滤 3.针对load、initilize、attribute 相干调用无奈辨认 4.针对string反射调用无奈辨认,Target-Action 注册,Observer注册办法等无奈辨认 5.简单语法场景下无奈辨认,如继承链中的办法调用,子类实现父类办法等场景 6.零碎告诉等场景 因为目前已颁布计划存在如上有余,同时因为下线代码敏感度十分高,相干业务都很谨慎。因而推动相干无用办法清理,辨认准确度将十分重要,间接关系到相干业务下线无用代码的积极性,因而弃用了上述计划。 三、计划抉择针对第二局部计划不足之处进行剖析,能够看到其准确度低的外围问题是,针对产物进行剖析,拿不到所有须要的信息,或者说还没有发现无效的伎俩去获取所冀望取得的信息。而想要解决下面提到的问题,最佳路径就是获取到尽可能多的代码信息。既然从产物回溯不到所须要的,那么就能够思考从源头也就是源码层面找到咱们所须要的详细信息。 源码必定蕴含了所有的信息,然而针对源码如何剖析呢,次要有以下三种: 通过脚本间接剖析源码须要匹配源码的所有语法规定,才可能针对源码进行无效的剖析,相当于写一个源码解析器,所以这个计划放弃 通过脚本间接剖析AST(形象语法树)编译过程中产生的形象语法树(AST)蕴含了须要的所有信息,并且clang也提供了命令行,应用该命令行可能间接获取到AST数据。然而clang 命令获取AST数据是以单个类为维度的,类与类之间的关系很难获取到,如继承关系,分类和主类的关系是无奈获取的,所以这个计划同样放弃 通过libtooling 和 Swift Compiler自建编译套件剖析AST (Swift相干会在下一篇文章中介绍)既然通过clang命令生成的AST产物剖析依然不能满足需要,那么间接染指编译过程,从编译外部生成AST过程中获取须要的信息,最终这个计划被采纳。通过libtooling 和 Swift Compiler自建编译套件针对AST进行剖析,获取所须要的所有信息。 四、方案设计如上所述百度APP最终采纳了libtooling 和 Swift Compiler 动态剖析计划,那么上面就从原理和实现层面别离进行论述。 4.1 编译流程简介4.1.1 Xcode编译总体构造本节先简略聊一下编译器的构造,编译流程,和动态剖析是什么? △图 4-1 如图4-1 所示 LLVM 采纳如上三段构造(Three Phase Design),别离是编译前端(Frontend),编译优化模块,编译器后端(Backend)。那么这三段构造如何对应到Xcode呢,如图4-2所示: △图 4-2 日常应用Xcode编译时,Xcode调用了两个编译器前端,别离为Clang 和 Swift,通过两个编译器前端构建出通用的编译产物,而后对立通过LLVM后端编译器进行指标文件生成。 通过Xcode的编译log,能够看到针对Objective-C,C, C++ 应用了clang进行编译,针对上述三种不同语言别离用不同编译参数管制: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang针对swift 文件则采纳了swift编译器进行了编译: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend针对这两个可执行文件大家能够自行解包Xcode,进行命令行调用,也能够通过其 --help指令查看其反对哪些编译参数或者性能。Xcode 外部编译器实际上是苹果对LLVM 和 Swift 开源版本的定制化版本, 和开源版本有肯定的差异性。 ...

September 21, 2023 · 2 min · jiezi

关于ios:百度iOS端长连接组件建设及应用实践

作者 | 百度音讯中台团队 导读  在过来的十年里,挪动端技术飞速发展,挪动利用逐步成为次要的便捷拜访和应用互联网的形式,承接了越来越多的业务和性能,这也意味着对挪动端和服务器之间的通信效率和稳定性提出了更高的要求。为了实现更高效的实时通信和数据同步,长连贯逐步成为一种关键技术,通过维持客户端和服务器之间的长久连贯,实现了单方实时数据交换,防止了频繁的建连和断连开销,从而进步用户体验、服务稳定性、可靠性等方面的体现。 本文旨在探讨长连贯技术在挪动端的实际,针对百度iOS端在建设长连贯过程中的技术选型和整体架构逻辑将做重点开展。同时联合IM即时通讯案例的介绍和剖析,展现长连贯是如何在挪动应用领域为相似业务场景提供解决方案的。 本文将分为五个次要局部。首先,对长连贯技术进行概述,包含定义、与短连贯的比照以及在挪动互联网畛域的常见利用。接下来,会简略介绍百度长连贯服务,包含搭建的背景以及建成后提供的服务外围主流程。而后,将重点探讨百度iOS端长连贯SDK搭建过程中的挑战和解决方案,蕴含协定的抉择、DNS解析优化、长连贯保活机制的设计等。紧接着,以IM即时通讯场景中的长连贯实际为例,展现了长连贯SDK是如何为业务实现申请数据转发、接管服务器被动推送等性能的。最初,对本文的次要内容做了总结,以及对长连贯在挪动端利用中将来的发展趋势和前景进行了瞻望。 全文7193字,预计浏览工夫18分钟。 01 长连贯简介1.1 意识长连贯长连贯,指在一个连贯上能够间断发送多个数据包,在连贯放弃期间,如果没有数据包发送,须要单方发链路检测包。 1.2 长连贯与短连贯比照 1.3 长连贯在挪动互联网畛域的利用长连贯在挪动互联网畛域有宽泛的利用,特地是在实现实时通信和音讯推送等性能方面施展了关键作用。例如,常见的微信、QQ这样的即时通信软件,就是通过维持客户端和服务器的长连贯,实现即时传输信息的需要。又如一些网络游戏、定位服务、新闻推送等,也会应用长连贯,实时推送新的动静或者音讯给用户。这样,无论用户在何时何地,只有连贯到互联网,就可能接管到最新的信息,极大地晋升了使用者的体验度并且使得挪动互联网更加便捷。 总的来说,对实时性、数据传输效率、频繁通信等有强需要的利用,长连贯都是一个好的抉择。 02 百度长连贯服务简介2.1 搭建对立长连贯的背景此前,百度挪动端都是由各业务自运维的长连贯,往往搭建和保护老本都偏高,且可复用性不大,因而打算实现一套高并发、低时延、高触达的对立长连贯组件,可能更灵便高效地反对各业务接入,可能对百度系的各APP独立输入长连贯服务满足各业务的诉求,从而晋升服务质量,升高资源老本。 2.2 长连贯服务主流程图百度长连贯服务蕴含客户端的长连贯SDK和服务端的长连贯接入层两个局部,长连贯接入层又蕴含访问控制模块和接入模块,负责保护长连贯治理及业务数据转发。下图形容了长连贯建连及心跳保活过程,业务登录和登录后推送过程,以及最终长连贯SDK触发断连的过程。后文将针对iOS端长连贯SDK的具体实现解决方案,和长连贯SDK在百度APP中的业务利用落地进行更为具体的探讨。 03 百度iOS端搭建长连贯SDK的解决方案3.1 客户端搭建长连贯的挑战点概述客户端从0到1搭建一套残缺的长连贯SDK,这个过程波及到多个技术点的思考,包含但不限于:连贯的创立和保护,网络协议的抉择,应用加密传输、验证数据起源等形式保障长连贯的安全性,通过数据传输格局抉择、数据压缩等形式缩小数据量进步传输效率,谬误异样解决机制等,须要开发者依据理论状况进行最优实现计划的抉择。在这之中,最外围的能够拆解为以下两个局部: 1、连贯的创立:残缺建连流程的设计,网络协议的抉择,设计时须要思考长连贯建连的成功率、时延等外围指标; 2、连贯的保护:保障建连胜利是第一步,长连贯还须要放弃保护单方连贯才可达成继续通信的目标,这包含:在长时间无数据交互的状况下,须要定期发送心跳包进行连贯的保活,以及长连贯连贯断开后须要及时进行断线重连复原连贯在线状态。 3.2 外围逻辑一:连贯的创立长连贯建连即客户端与服务器建设连贯,是长连贯SDK要做的第一件事,所有业务方数据的传输(上下行)都要基于长连贯建连胜利的这个前提。长连贯建连并不是一个繁多简略的操作,而是一个分阶段进行的过程。本大节将次要探讨在设计开发长连贯建连模块之前,须要重点思考确认的几个技术点和实现计划,以及百度iOS端长连贯SDK最终实现的长连贯建连残缺过程的架构。 3.2.1 挑战①:协定的抉择问题点:UDP还是TCP 对于网络编程这个话题,应用哪种数据传输层协定来实现通信是一个十分根底但始终争论不休的问题。UDP和TCP各有各的利用场景,TCP能提供牢靠的数据传输,UDP则有更高的传输效率,此处不再赘述TCP与UDP的区别,最终抉择哪种协定实现,是一个见仁见智的问题,需联合整体利用场景、开发代价、部署和经营老本等方面综合思考。 解决方案:TCP为主,同时小流量摸索QUIC的后劲 百度iOS端长连贯SDK中现有两套数据传输计划: 计划一:在长连贯SDK建设初期,依据业内成熟技术计划选型的调研后果,及开发成本、保护便捷性的思考,第一个计划是参考CocoaAsyncSocket框架改写的,基于Socket原生开发,应用TCP协定,反对TLS/SSL平安传输,并且是线程平安的,该计划较为成熟,应用便捷,建连成功率较高。目前百度APP iOS端中90%的用户流量都是走的该计划实现的长连贯逻辑。 计划二:个别稳固网络传输都是通过TCP,但在网络基建自身曾经越来越欠缺的状况下,TCP一些设计自身的问题便裸露了进去,加之TCP是在操作内核和两头固件中实现的,因而对TCP进行重大更改简直是很难的事件,相似建连过程握手耗时长、队头阻塞等问题没有失去很好地解决,让咱们开始思考一些新的可能性。长连贯SDK后续引入了基于QUIC协定实现的第二套计划。QUIC协定是建设在UDP之上,并且实现了牢靠传输,相比HTTP2+TCP+TLS协定,QUIC具备不少长处:缩小了TCP三次握手及TLS握手工夫,改良了拥塞管制,并且没有队头阻塞的多路复用,反对连贯迁徙等。百度iOS长连贯SDK目前通过NWConnection引入了QUIC协定的实现。QUIC的协定尽管比拟先进,但这也意味着在工程实现方面有更多可优化的空间,目前计划二还处于小流量试验阶段,仍有很多优化工作有待后续进一步去落地。就以后放量所失去的数据来看,在长连贯建连成功率及时延指标上,QUIC实现计划都有较好的体现。 3.2.2 挑战②:DNS解析优化问题点:国内挪动端网络所面临的DNS疑难杂症 国内各ISP运营商的LocalDNS因为域名缓存、解析转发、LocalDNS递归进口NAT的起因,容易引起DNS被劫持造成服务不可用、DNS调度不精确导致性能进化等问题。DNS解析的效率和准确性,间接影响长连贯建连的品质,进而影响公司的业务。 解决方案:HTTPDNS 因而在百度iOS端长连贯SDK中,采纳以后业界比拟支流的解决方案:HTTPDNS,来代替LocalDNS解析。HTTPDNS是利用HTTP协定与DNS服务器进行交互,绕开了运营商的LocalDNS服务,无效避免了域名劫持,进步域名解析效率。 3.2.3 残缺解决方案:百度iOS端长连贯建连整体流程建连机会 在百度APP中,对立保护了一系列零碎事件和生命周期供各个组件监听。iOS长连贯SDK依据百度APP的业务个性,抉择在环境搭建实现事件后触发长连贯建连,即期待APP启动必要数据比方首页资源等加载实现后,开始触发长连贯建连。 建连残缺过程 下图展现了长连贯SDK建连的四个过程: 获取Token: 获取Token的意义:广义上Token指的是长连贯访问控制模块返回的access-token,后续随长连贯登录申请上行到长连贯接入层,由接入层向长连贯访问控制模块进行鉴权用。狭义上随此次Token申请下发的,还有传输协定及拜访点等数据,包含但不限于:长连贯协定应用QUIC还是TCP,是否优先ipv6,连贯域名和端口,日志打点小流量开关等。获取Token的机制:获取Token优先走本地缓存,当本地缓存无无效数据时,才收回网络申请,该申请是基于NSURLSession实现的短连贯申请;Token在服务端和客户端均有缓存,存在过期工夫,若Token过期,会在下图中阶段四通过长连贯登录申请失败体现,这时会清空本地Token缓存并触发从新建连。DNS域名解析:如前所述,长连贯SDK中应用HTTPDNS代替LocalDNS来避免DNS劫持、进步解析效率。同时在iOS Release环境下,为进步DNS解析效率,本地建设了缓存机制,HTTPDNS解析后果返回后会更新本地缓存,下次建连过程优先取缓存,缓存不非法才走网络申请。 建设Socket连贯:Socket建连过程波及到传输协定的抉择,依据后面介绍,iOS长连贯SDK目前是通过小流量试验的形式,10%的用户走QUIC建连,90%的用户走TCP建连。 长连贯登录申请:携带Token中获取的access-token上行申请实现鉴权,长连贯登录申请返回胜利意味着整个建连过程实现,业务层可开始失常应用长连贯进行通信,若登录返回报错,则会触发重连。 顺利完成这四个阶段后,长连贯会在该链路上继续发送心跳包进行连贯保活,在异样断连或压后盾等触发的被动断连之前,始终放弃连贯在线状态,为各个业务的数据传输提供通路。 3.3 外围逻辑二:连贯的保护3.3.1 保护连贯的意义上个大节介绍了长连贯连贯建设的全过程,长连贯建连胜利后,理论已处于可用状态,即各业务基于长连贯的通信曾经能够失常进行。但在此之后,放弃长连贯的可用性也是十分重要的。如果长连贯无奈很好地放弃,在连贯曾经生效的状况下服务端持续推送上行告诉而端却收不到,造成资源的节约,同时无奈及时从新建连,对业务造成损失。 3.3.2 保护长连贯的解决方案针对可能导致长连贯断开的几种次要起因,长连贯SDK建设了对应的机制来保障连贯的稳定性,可总结为两点:心跳保活和断线重连。 解决方案①:心跳保活 心跳保活的定义:实现长连贯保活的形式通常是采纳应用层心跳,通过心跳包的超时或报错等来执行重连操作。心跳个别是指某端(通常是客户端)每隔肯定工夫向另一端(通常是服务端)发送自定义指令,以判断单方是否存活,因其依照肯定距离发送,相似于心跳,故被称为心跳保活。 百度iOS端长连贯SDK心跳保活机制:长连贯登陆申请胜利后,解析返回数据,若服务端下发了心跳包的间隔时间,则以服务端下发的工夫距离继续发送心跳包进行连贯保活,若没有下发心跳包间隔时间,客户端会默认60s间隔时间来触发心跳包的发送。具体心跳保活过程见下图。 解决方案②:断线重连 断线重连原理:在长连贯可能被断开的场景(压后盾重进APP、网络状态变更等),检测长连贯的可用状态,监测到连贯不可用时,及时触发重连机制。 百度iOS端长连贯SDK断线重连机制:具体触发断线重连的机会见下图,iOS长连贯SDK外部保护有串行队列和对立的长连贯状态监测记录,不会导致反复建连的产生。 ...

July 13, 2023 · 1 min · jiezi

关于ios:轻量化的iOS动画框架实现

本文作者:有恒一、背景日常开发过程中,常常须要对视图做动画,如果须要对一个 view 进行动画操作:3s 淡入,完结后,1s 放大,很容易写出这样的代码: UIView.animate(withDuration: 3, animations: { view.alpha = 1}, completion: { _ in UIView.animate(withDuration: 1) { view.frame.size = CGSize(width: 200, height: 200) }})如果,是更多串行的动画须要实现呢? UIView.animate(withDuration: 3, animations: { ......}, completion: { _ in UIView.animate(withDuration: 3) { ...... }, completion: { _ in UIView.animate(withDuration: 3) { ...... }, completion: { _ in ...... } }})这样的回调天堂代码,很难保护也不优雅。 业界也有一些现成的动画库,比拟出名的有: Spring: 轻量级的、基于 Swift 实现的动画库,它提供了多种弹簧成果动画成果。毛病是性能绝对较少,不能满足所有的动画需要。Hero:一个高度可定制化的 iOS 动画库,它反对多种动画成果,如过渡动画、视图转场等。毛病是对于简单的动画成果可能须要编写大量的代码。TweenKit:一个轻量级的、基于 Swift 实现的动画库,它提供了多种动画成果,如突变成果、旋转成果等。TweenKit 的长处是易于应用,对于入门级的开发者很敌对,但毛病是性能绝对较少,不能满足所有的动画需要。以上动画库各有长处和毛病,总的来说都有书写绝对简单不够优雅的缺点,那有没有不便开发和保护的代码格局? 动画串行执行: view.at.animate( .fadeIn(duration: 3.0), .scale(toValue: 1.2, duration: 0.5))动画并行执行: ...

July 6, 2023 · 4 min · jiezi

关于ios:iOS-macho中LCFUNCTIONSTARTS

从内存中间接获取以后函数的起始地址(function_starts)可能会更加简单和艰难,因为该信息通常是在编译过程中生成的,并且在运行时不肯定间接可用。测试显示function_starts在debug运行的时候获取不到,只有打成release包的时候能力获取到,打成debug包的时候也获取不到.monkeydev 攻打他人线上包,打印function_starts是有的

June 16, 2023 · 1 min · jiezi

关于ios:iOS-单元测试之常用框架-OCMock-详解-京东云技术团队

一、单元测试1.1 单元测试的必要性测试驱动开发并不是一个很陈腐的概念了。在日常开发中,很多时候须要测试,然而这种输入是必须在点击一系列按钮之后能力在屏幕上显示进去的货色。测试的时候,往往是用模拟器一次一次的从头开始启动 app,而后定位到本人所在模块的程序,做一系列的点击操作,而后查看后果是否合乎本人预期。 这种行为无疑是对工夫的微小节约。于是有很多资深工程师们发现,咱们是能够在代码中结构一个相似的场景,而后在代码中调用咱们之前想要查看的代码,并将运行后果和构想后果在程序中进行比拟,如果统一,则阐明咱们的代码没有问题,由此就产生了单元测试。 1.2 单元测试的目标单元测试的次要目标是发现模块外部逻辑、语法、算法和性能谬误。 单元测试次要是基于白盒测试验证以下问题: 验证代码与设计相符度。发现设计和需要中存在谬误。发现在编码过程中引入的谬误。单元测试关注的重点有以下局部: []() 独立门路-对于根本执行门路和循环进行测试,可能的谬误有: 不同数据类型的比拟。“差1错”,即可能多循环或少循环一次。谬误或不可能的终止条件。不适当的批改了循环变量。部分数据结构-单元的部分数据结构是最常见的谬误起源,应设计测试用例以查看可能的谬误: 不统一的数据类型。查看不正确或不统一的数据类型。错误处理-比较完善的单元设计要能预感出错的条件,并设置适当的错误处理,以便在程序出错时,能对谬误从新做安顿,保证期逻辑上的正确性: 出错的形容难以了解。显示的谬误与理论的谬误不符。对谬误条件的解决不正确。边界条件-边界上呈现谬误是最常见的谬误景象: 取最大最小值产生谬误。控制流中的大于、小于这些比拟值常呈现谬误。单元接口-接口实际上就是输出和输入对应关系的汇合,要对单元进行动静测试无非就是给这个单元一个输出,而后查看输入是否和预期统一。如果数据不能失常输出和输入,单元测试就无从谈起,因而须要对单元接口进行如下的测试: 被测单元的输出、输入在个数、属性、程序是否和具体设计中的形容统一。是否批改了只做输出用的形式参数。约束条件是否通过形式参数来传送。-1.3 单元测试依赖的两个次要框架OCUnit(即用 XCTest 进行测试)其实就是苹果自带的测试框架,次要是断言应用,因为应用简略本次文章不过多介绍。 OCMock次要性能是模仿某个办法或者属性的返回值,你可能会纳闷为什么要这样做?应用模型生成的模型对象,再传进去不就能够了?答案是能够的,然而有非凡的状况,比方一些不容易结构或不容易获取的对象,此时你能够创立一个虚构的对象来实现测试。实现思维是依据要mock的对象的class来创立一个对应的对象,并且设置好该对象的属性和调用预约办法后的动作(例如返回一个值,调用代码块,发送音讯等等),而后将其记录到一个数组中,接下来开发者被动调用该办法,最初做一个verify(验证),从而判断该办法是否被调用,或者调用过程中是否抛出异样等。在单元测试开发中应用更多难点的也是对OCMock的应用形式不明确,本次文章次要讲的就是这个 OCMock 的集成和应用办法。 二、OCMock 的集成与应用2.1 OCMock 的集成形式我的项目集成 OCMock 第三方库,这个应用 pod 工具间接装置OCMock框架即可。若应用 iBiu 工具装置 OCMock 库需在 podfile 文件同级创立 Podfile.custom。 []() 应用一般的 pod 文件雷同格局增加 OCmock 如下: source 'https://github.com/CocoaPods/Specs.git'pod 'OCMock'2.2 OCMock 的应用办法(一)置换办法(存根):通知 mock 对象,当 someMethod 被调用,返回什么值 调用形式: d jalopy = [OCMock mockForClass[Car class]];OCMStub([jalopy goFaster:[OCMArg any] units:@"kph"]).andReturn(@"75kph");应用场景: 1. 验证 A 办法时,A 办法外部应用 B 办法的返回值然而 B 办法外部逻辑比较复杂,这时须要应用 stub 办法去存根 B 办法的返回值。代码实现相似上面代码实现固定 funcB 的返回值,做到在不影响源代码的条件下,获取满足测试须要的参数。 ...

June 16, 2023 · 3 min · jiezi

关于ios:Swift-的可选值优化

本文作者:苯酚nil 的语义在 Objective-C 中,nil 示意空对象,它实质是一个指向 0x00000000 的指针。但对于非指针的值类型,OC 中是无奈示意_没有值_这个概念的,比方 NSInteger,它能够是 0,也能够是其余任何值,但就是不存在_没有值_。 Swift 作为一种强类型的语言,它从一开始就引入了_没有值_这个概念,尽管还是用 nil 关键字,但理论语义上有所不同。比方 Int?,它能够是 nil,也能够是 0,0 是一个具体的值,而 nil 不是。然而,计算机作为一个二进制的机器,它内存中保留的非 0 即 1,如何示意_没有值_呢?换句话说,nil 在内存中到底是什么?咱们能够通过简略的代码找出它在内存中的假相。 nil 在内存中的示意/// 以下办法取 value 的地址,并从地址处向后取它在内存中的大小 size 个字节,转为对应的数组func bytes<T>(of value: T) -> [UInt8] { var value = value let size = MemoryLayout<T>.size return withUnsafePointer(to: &value, { $0.withMemoryRebound( to: UInt8.self, capacity: size, { Array(UnsafeBufferPointer( start: $0, count: size)) }) })}var int: Int? = 0bytes(of: int) // [0, 0, 0, 0, 0, 0, 0, 0, 0]int = nilbytes(of: int) // [0, 0, 0, 0, 0, 0, 0, 0, 1]从下面咱们能够得悉,可选的 Int? 类型比一般 Int 类型多占一个字节,用来示意是不是 没有值。如果这样的话,在 struct 或 class 中用可选类型岂不是会节约较多内存空间?因为内存对齐的缘故,多一个字节,就要节约剩下的 7 字节,比方: ...

June 16, 2023 · 2 min · jiezi

关于ios:iOS查看竞品内存占用情况

1.筹备一台关上开发模式的iPhone,连贯到xcode2.XCode运行一个测试程序到iPhone上3.关上instruments4.抉择正在运行的App,能够看到内存等应用状况。 留神:这一步很重要,要抉择本人的测试app,先让Instruments运行起来,而后就能够查看别的app的内存和cpu应用状况了。如果本人的app被杀掉了,监控就会进行。 Android查看竞品内存占用状况

June 7, 2023 · 1 min · jiezi

关于ios:百度APP-iOS端包体积50M优化实践三-资源优化

01 前言百度APP iOS端包体积优化系列文章的前两篇重点介绍了包体积优化整体计划、各项优化收益和图片优化计划,图片优化是从无用图片、Asset Catalog和HEIC格局三个角度做深度优化。本文重点介绍资源优化,在百度APP实际中,资源优化包含大资源优化、无用配置文件和反复资源优化。不论是资源优化还是代码优化,都须要剖析Mach-O文件,以获取资源和代码的援用关系,本文先具体介绍Mach-O文件。 百度APP iOS端包体积优化实际系列文章回顾: 《百度APP iOS端包体积50M优化实际(一)总览》 《百度APP iOS端包体积50M优化实际(二) 图片优化》 02 Mach-O文件详解2.1 简介Mach-O为Mach Object文件格式的缩写,用于记录可执行文件、指标代码、动静库和内存转储的文件格式,是使用于Mac以及iOS零碎上。 2.2 剖析Mach-O文件的工具2.2.1 MachOView剖析MachOView下载地址:http://sourceforge.net/projects/machoview/MachOView源码地址:https://github.com/gdbinit/MachOView用MachOView能查看MachO文件信息,启动MachOView,在状态栏中点击file,关上MachO文件,如下图所示。 2.2.2 otool命令查看mac自带otool工具,otool -arch arm64 -ov xxx.app/xxx,可获取所有我的项目的类构造及定义的办法,示例代码如下所示: Contents of (__DATA,__objc_classlist) section0000000100008238 0x100009980isa 0x1000099a8superclass 0x0 _OBJC_CLASS_$_UIViewControllercache 0x0 __objc_empty_cachevtable 0x0data 0x1000083e8flags 0x90instanceStart 8instanceSize 8reserved 0x0ivarLayout 0x0name 0x100007349 ViewControllerbaseMethods 0x1000082d8entsize 24count 11name 0x100006424 test4types 0x1000073e4 v16@0:8imp 0x100004c58name 0x1000063b4 viewDidLoad*****上面列举otool常见命令: 2.3 查看文件格式采纳file命令能够查看文件格式,lipo -info可查看该Mach-O文件反对的具体CPU架构。 ~ % file /Users/ycx/Desktop/demo.app/demo/Users/ycx/Desktop/demo.app/demo: Mach-O 64-bit executable arm64~ % lipo -info /Users/ycx/Desktop/demo.app/demoNon-fat file: /Users/ycx/Desktop/demo.app/demo is architecture: arm642.4 文件构造2.4.1 总体构造 ...

June 6, 2023 · 4 min · jiezi

关于ios:通过-SIL-看-Swift-的方法派发

本文作者:柯布一、SIL 介绍依据文档的形容,SIL (Swift Intermediate Language) 基于 SSA 模式,它针对 Swift 语言设计,是一门具备高级语义信息的两头语言。 SIL is an SSA-form IR with high-level semantic information designed to implement the Swift programming languageSwift 和 Objective-C 应用的雷同的编译架构 LLVM,LLVM 分为前端、中端和后端三局部,通过两头语言 LLVM IR 将前端和后端串联起来。swiftc 作为 Swift 语言的的编译器,负责 LLVM 前端的工作。swiftc 与其它编译器工作相似,进行词法剖析、语法分析、语义剖析后构建形象语法树(AST),而后生成 LLVM IR 交由 LLVM 的中端和后端。在这个流程当中,swiftc 相比 Objective-C 应用的 clang ,swiftc 在构建实现 AST 后,生成最终的 LLVM IR 之前,退出了 SIL。 SIL 具备更全的 Swift 语言信息,能更好的对代码进行优化。对于开发者,SIL 具备良好的可读性,能够作为理解 Swift 的底层细节的一个工具。 二、生成 SIL首先,将上面的代码,生成 SIL,来看看 SIL 里具体有什么。 ...

June 5, 2023 · 7 min · jiezi

关于ios:深度剖析-Runtime

做很多需要或者是技术细节验证的时候会用到 Runtime 技术,用了挺久的了,本文就写一些场景和源码剖析相干的文章。先问几个小问题: class_rw_t的构造是数组,数组外面的元素是数组,那它是二维数组吗?为什么16字节对齐的?有类对象、为什么设计元类对象?Super 原理的什么?浏览完本文,你会把握 Runtime 的原理和细节 动静语言Runtime 是实现 OC 语言动静的 API。 动态语言:在编译阶段确定了变量数据类型、函数地址等,无奈动静批改。 动静语言:只有在运行的时候才能够决定变量属于什么类型、办法真正的地址, 对象 objc_object 存了:isa、成员变量的值 类 objc_class: superclass、成员变量、实例变量 @interface Person : NSObject{ NSString *_name; }@property (nonatomic, strong) NSString *hobby;@endmalloc_size((__bridge const void *)(p)) // 24 isa占8字节 + _name 指针占8字节 + hobby 指针占8字节 = 24 class_getInstanceSize(p.class) // 32 ,零碎内存对齐 为什么零碎是由16字节对齐的? 成员变量占用8字节对齐,每个对象的第一个都是 isa 指针,必须要占用8字节。举例一个极其 case,假如 n 个对象,其中 m 个对象没有成员变量,只有 isa 指针占用8字节,其中的 n-m个对象既有 isa 指针,又有成员变量。每个类交织排列,那么 CPU 在拜访对象的时候会消耗大量工夫去辨认具体的对象。很多时候会取舍,这个 case 就是工夫换空间。以16字节对齐,会放慢访问速度(参考链表和数组的设计) class_rw_t、class_ro_t、class_rw_ext_t 区别?class_ro_t 在编译期间生成的,class_rw_t 是在运行期间生成的。 ...

May 18, 2023 · 28 min · jiezi

关于ios:云音乐中-InApp-Purchase-实践总结篇

本文作者:0linatan0IAP次要阐明内购我的项目开发者接入 IAP 时,须要依照苹果提供的标准,依据 App 提供商品的性能和类型来抉择不同的内购我的项目类型,进行创立商品。相当于在咱们业务服务端有一份商品列表,苹果 AppStoreConnect 也有一份商品列表与之对应。目前 IAP 中内购我的项目分为四类: Consumable products (消耗型商品) 比方:Look 直播中的音符同一个 AppleID 能够购买屡次,即买即用Non-consumable products (非消耗型商品) 比方:解锁App中性能关卡同一个 AppleID 只能购买一次,再次购买会提醒"已购买", 永恒无效Auto-renewable subscriptions (主动续期订阅) 比方:云音乐中黑胶会员间断包月同一 Apple ID 在购买时会查看是否购买过,如果购买过并且还在续期权限中,零碎会提醒已购买而无奈再购买;如果购买过之后勾销过,则能够再次购买Non-renewable subscriptions (非续期订阅) 比方: 月度/季度/年度 会员同一 Apple ID 能够购买屡次,能够再次购买,权利受期限限度 创立治理IAP商品抉择商品类型后,AppStore Connect 中创立商品,以消耗型商品创立为例,须要提供如下信息: product identifier : 标识商品的ID 在此利用下是惟一的,只有创立过即便删除也会存在price : 依据苹果提供的价格等级,不能随便填写金额 会呈现同一等级对应不同国家的 AppleID 账号价格换算差别大商品形容 反对多种语言,会依据 AppleID 所在地区展现截图&操作门路【送审须要】具体操作手册参见Create in-app purchases 我的项目实现IAP购买开发者须要接入零碎库 StoreKit,苹果在 WWDC21 推出新的 StoreKit2 反对购买,但其须要 iOS15 及以上才反对,目前咱们我的项目中还是应用老的 StoreKit 。 对于 IAP 购买领取的过程是苹果零碎解决,只是在交易实现之后,更新本地的交易票据信息并回调 App (票据能够了解为蕴含交易领取相干信息的加密数据),而对于这份数据是可能会反复或者伪造;须要对其进行验证,苹果提供两种形式:本地验证和服务端验证;个别出于安全性和性能思考会选用服务端验证。服务端会拿着这份票据再去申请苹果服务端,获取交易领取的详细信息,依据信息判断解决履约状况。 流程图整体流程构造如下图: ...

May 17, 2023 · 3 min · jiezi

关于ios:在Bamboo上怎么使用iOS的单元测试-京东云技术团队

作者:京东批发 吴滔 本教程将应用北汽登录模块为例,一步一步和大家一起搭建单元测试用例,并在Bamboo上跑起来,最终测试后果和代码覆盖率会Bamboo上汇总。 模块名称:BQLoginModule,是通过iBiu创立的一个模块工程 一 建设单元测试BundleProductName: BQLoginTests 二 测试代码编写1 配置文件同步如果咱们要在测试代码应用咱们在Pod里的类,须要同步 Targets Support Files/Pods-BQLoginTests/Pods-BQLoginTests.debug.xcconfig 文件的内容到 Targets Support Files/Pods-BQLoginUITests/Pods-BQLoginUITests.debug.xcconfig,间接内容copy就成了,只是每次用iBiu装置过后都要做这个操作,后续应用脚本实现同步: 2 测试代码编写具体的编写我这里就过多介绍了,网上教程一大篇,这里就不多说了,如果没有做性能测试,这里能够把主动生成的 testPerformanceExample 屏蔽掉。 三 运行单元测试用 command+u,或者菜单(product->test)执行,就能取得后果 后果在这里看: 实现以上操作,根本的单元测试就OK了 上面咱们用命令行来跑下单元测试,首先进入工程目录: cd BQLoginModule/Example执行如下命令: xcodebuild test -UseModernBuildSystem=NO -configuration=Debug -workspace './BQLoginModule.xcworkspace' -scheme "BQLoginModule_Example" -destination 'platform=iOS Simulator,name=iPhone 8,OS=13.2.2' 请大家留神将 workspace/scheme /模拟器信息 批改为本人工程对应信息,就能够看到后果 四 代码覆盖率1 单元覆盖率在XCode关上覆盖率统计,咱们只关上咱们的库做代码笼罩就成了,Xcode 12.4在如下中央: 在Pod外面BQLoginModule设置 BuildSettings 查找 "cov" ,把 以下2项都设置为YES; 而后咱们跑下单元测试,就能够看到覆盖率后果了: 2 Bamboo报告因为咱们须要在Bamboo上汇总覆盖率报告,这里咱们应用iBiu的一个高级个性:用 Podfile.custom 文件加载通用cocoapods的外网库来应用,具体见图: ...

May 11, 2023 · 2 min · jiezi

关于ios:使用Swift快速集成环信IM-iOS-SDK并实现单聊

本文介绍如何应用swift疾速集成环信即时通讯 IM iOS SDK 实现单聊。 前提条件• Xcode (举荐最新版本)。• 装置 iOS 10.0 或更高版本的 iOS 模拟器或 Apple 设施。• CocoaPods 1.10.1 或更高版本。• 无效的环信即时通讯 IM 开发者账号(注册环信账号)和 App Key,见 环信即时通讯云治理后盾。• 如果你的网络环境部署了防火墙,请分割环信技术支持设置白名单。 集成形式应用CocoaPods来增加环信SDK,具体步骤如下: platform :ios, '9.0'use_frameworks! target 'YourTarget' do pod 'HyphenateChat', '~> 4.2'end 而后在终端中运行pod install,即可将环信SDK增加到我的项目中。 因为环信sdk是OC的代码,所以须要创立桥接文件(Bridging Header)来让Swift能够调用Objective-C的代码和库。上面是创立桥接文件的步骤: 1. 创立桥接文件在Xcode我的项目中,抉择File -> New -> File...,在弹出的对话框中抉择iOS -> Source -> Header File,而后给该文件起一个名字,例如YourProjectName-Bridging-Header.h 2.配置桥接文件选项在桥接文件的属性中,设置Objective-C Bridging Header选项。具体操作如下:• 选中我的项目,在Xcode菜单中选择Build Settings• 在搜寻框中输出bridging header,找到Objective-C bridges Header选项• 双击该选项,而后在弹出的对话框中输出桥接文件的门路,例如$(SRCROOT)/YourProjectName/YourProjectName-Bridging-Header.h 3.导入Objective-C头文件// YourProjectName-Bridging-Header.h#import <HyphenateChat/HyphenateChat.h>4.初始化环信SDK在AppDelegate.swift文件中的application(_:didFinishLaunchingWithOptions:)办法中初始化环信SDK。以下是初始化代码示例: let options = EMOptions(appkey: "yourappkey#demo")let error = EMClient.shared().initializeSDK(with: options) if error == nil { //初始化胜利 } else { //初始化失败 }5.登录环信服务器EMClient.shared().login(withUsername: "yourUsername", password: "yourPassword") { (aUserName, aError) in if aError != nil { //登录失败解决 print("\(aUserName) login fail") }else { //登录胜利解决 print("\(aUserName) login success") } }6.发送音讯let chatText = "Hello, World!"let message = EMChatMessage(conversationID: "yourConversationID", from: "yourFrom", to: "yourTo", body: EMTextMessageBody(text: chatText), ext: ["yourKey": "yourValue"])message.chatType = EMChatTypeChat // 设置为单聊音讯EMClient.shared().chatManager?.send(message, progress: nil) { (aMessage, aError) in if let error = aError { // 发送失败解决 } else { // 发送胜利解决 }}至此,即时通讯的基本功能曾经集成完,如果您在集成中遇到问题能够随时分割环信技术支持或IMGeek社区发问。 ...

April 27, 2023 · 1 min · jiezi

关于ios:百度APP-iOS端包体积50M优化实践二-图片优化

一、前言在上一篇文章,咱们介绍了包体积优化的必要性、安装包组成部分和生成过程、国内外大厂APP包体积剖析、百度APP包体积优化技术计划及各项收益,本文重点讲述图片优化,解压IPA包后发现,百度APP中asset和bundle外面图片共有94M,这是咱们重点优化的对象。 本系列文章目录如下: 《百度APP iOS端包体积50M优化实际(一)总览》(点击题目即可跳转) 百度APP采纳如下形式对不同的图片资源进行了优化: 第一、无用图片优化,解决的是随着版本迭代,一些图片曾经没有了援用关系,但还在IPA包中保留,开掘这部分图片并删除,这个优化是所有包体积优化我的项目中ROI最高的,影响范畴局限在单个组件内,品质可控,要害是进步查找无用图片的准确度; 第二、Asset Catalog优化:应用Asset Catalog治理的图片能被App Store工具App Thinning解决,解决后用户只会下载匹配其设施分辨率的图片资源,从而升高了用户下载的包体积; 第三、HEIC图片优化:跟PNG、JPEG、WebP相比,HEIC图片编码格局体积缩小最小,从解码效率角度来说,跟WebP相比,HEIC硬解码效率高。 二、无用图片优化2.1 计划综述首先获取所有图片资源,而后开发工具获取Objective-C、Swift、xib、storyboard、html、js、css、json、plist文件可能援用图片的动态字符串,接着后面两个汇合做diff即可排查未援用的图片,最初针对字符串拼接的常见case做二次过滤,笼罩的case越多准确度越高,当然也要思考ROI。 2.2 获取所有图片开启每个库的源码,用脚本检测所有图片及图片所属关系,为后续散发及落地优化提供方便。如果不开源码应用二进制库或者ipa包会带来很多麻烦,如获取asset.car外面的图片资源比拟艰难,同时只能晓得图片名称,不能间接获取图片属于哪一个库。开启每个库的源码后,用脚本递归遍历可获取所有图片,从图片门路可晓得所属关系,参考代码如下所示:`def findAllPictures(path): pathDir = os.listdir(path)for allDir in pathDir: child = os.path.join('%s%s' % (path, allDir)) if os.path.isfile(child): # 获取读到的文件的后缀 end = os.path.splitext(child)[-1] if end == ".png" or end == ".webp" or end == ".gif" or end == ".jpeg" or end == ".jpg": print("文件" + child + " 后缀 " + end) else: # 递归遍历子目录 child = child + "/" findAllPictures(child)`2.3 获取可能援用图片动态字符串在这个环节,咱们重点是要找到在代码中可能会援用图片的字符串汇合,如在Objective-C的.m文件中,咱们常常用如下代码去加载图片account\_login来创立一个UIImageView对象, 针对Objective-C的.m文件内容,用正则过滤,匹配表达式为 @"(.*?)",即可获取所有可能加载图片的字符串汇合。 ...

April 25, 2023 · 2 min · jiezi

关于ios:知名直播App被苹果商店下架或涉及侵权问题

近日,某出名互动直播平台在苹果商店无奈搜寻,官网回应进入产品优化降级期,由此引发业内猜想。据知情人士走漏,该平台可能是触发了苹果的4.3及2.3.1协定才受到下架。苹果商店的4.3协定与反复App无关,假如开发者为App创立多个套装ID,就有可能触发4.3协定。另外的2.3.1协定的目标之一是为了避免侵权,一些带有「视频嗅探、音乐/视频下载」性能的软件就很容易触发2.3.1协定。图源CSDN网络资源下载模块很容易涉及版权问题,对于这点,苹果商店的审核始终很严格,CSDN上有不少用户分享过本人遭逢苹果审核2.3.1的开发过审经验,能够参考。一般而言,波及版权应用的App上架AppStore都须要受权协定证实,代表该App获得了相干受权。因而,软件开发中很重要的一环就是防止侵权问题,须要获得受权协定的要在产品上架前就实现受权事宜。HIFIVE能够为单干客户出具版权方音乐受权协定帮助客户上架AppStore。 随着各行各业对知识产权问题的器重,以及政策调整,无论是影视还是音乐畛域,版权需要都越来越强烈。不同定位的产品、不同的我的项目、不同的场景等对音乐内容有不同的需要。作为业余的版权音乐服务商,【HIFIVE音加加】领有顶尖的音乐内容,与寰球三大音乐团体中的环球和索尼制作音乐单干。领有国内规模最大的商用曲库,高达百万首,和数百家出名厂牌、上万名音乐人单干,每周新歌上架。残缺作品版权,版权权利可笼罩:短视频BGM、K歌、现场表演、聊天背景乐、直播间播放、品牌宣传、剪辑、编辑、创作应用、线下公播等。 通过SDK/API接入,或者可间接应用的小程序和PC端播放器产品,企业能够通过全新的灵便生产模式,可疾速实现短视频 、视频编辑、K歌性能的集成,反对ios、Android接入,凋谢能力自由组合,满足开发者丰盛利用玩法晋升用户活跃度的同时,可大幅节约研发工夫和老本。

April 25, 2023 · 1 min · jiezi

关于ios:iOS文件操作

文件操作沙盒门路NSHomeDirectory()tmp 长期门路,随时会被删除Documents 会备份,不容许存储缓存信息 Librarycaches 缓存文件Preferences 偏好设置,能够用来保留账号 获取文件信息let cachesDictionary = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)[0]let dist = cachesDictionary.appendingPathComponent("a/b/c.txt")let fileManager = FileManager.defaultdo { let attributes = try fileManager.attributesOfItem(atPath: dist) let fileSize = attributes[.size] as! UInt64 // 获取文件大小 print("File size: \(fileSize) bytes")} catch { print(error)}获取某个文件的所有子门路let subPaths = fileManager.subpaths(atPath: "path")判断是否是文件夹var isDirectory: ObjCBool = falselet isExist = fileManager.fileExists(atPath: "path", isDirectory: &isDirectory)

April 17, 2023 · 1 min · jiezi

关于ios:iOS16新特性灵动岛适配开发与到家业务场景结合的探索实践

作者:京东批发 姜海 灵动岛是苹果在iPhone 14 Pro和iPhone 14 Pro Max上首次提出的全新UI交互模式,创新性的让虚构软件和硬件的交互变得更为晦涩。当有复电、短信等告诉时,灵动岛会变动状态,以便让用户可能更直观地接管到这些信息。 而在用户应用一些利用App,比方音乐,并将其切换到后盾时,灵动岛也能以另一种状态来显示这些软件,还能够通过轻点,重按等来实现的操作,比方切换歌曲。 苹果在iOS16.1系统对第三方凋谢了灵动岛的API,并容许开发者基于灵动岛开发相应软件,越来越多的APP开始基于灵动岛的交互进行设计和开发,本文将简略介绍灵动岛开发的流程和将其与业务场景相结合的思考。 接入灵动岛如果我的项目之前开发过widget小组件,曾经增加过Widget Extension,并有WidgetBundle文件,那么能够间接基于其进行扩大开发。但要留神的是,灵动岛开发用到的是Live Activity,次要包含锁屏告诉,顶部告诉等款式: 而并不是widget开发用到的Time Line模式,两者在UI状态上根本毫无关系,只是须要在WidgetBundle中实例化。如果之前没有开发过widget,能够参见另一篇文章:《Widget开发以及动静配置》 首先给工程增加Widget Extension: 勾选Live Activity: 建设Extension当前,零碎会主动生成三个文件,除了widget开发用到的TimeLine相干内容的文件和WidgetBundle文件外,还会生成一个专门用来开发灵动岛Live Activity的文件: 文件中曾经主动生成了局部代码纲要,能够间接查看成果并基于其上进行开发: struct DJDynamicIslandAdvanceLiveActivity: Widget { var body: some WidgetConfiguration { ActivityConfiguration(for: DJDynamicIslandAdvanceAttributes.self) { context in // Lock screen/banner UI goes here VStack { Text("Hello") } .activityBackgroundTint(Color.cyan) .activitySystemActionForegroundColor(Color.red) } dynamicIsland: { context in DynamicIsland { // 点击灵动岛后开展的款式 // various regions, like leading/trailing/center/bottom DynamicIslandExpandedRegion(.leading) { Text("Leading") } DynamicIslandExpandedRegion(.trailing) { Text("Trailing") } DynamicIslandExpandedRegion(.center) { Text("Center") } DynamicIslandExpandedRegion(.bottom) { Text("Bottom") // more content } } compactLeading: { // compact模式(长条款式)左侧内容,个别放icon Text("compactLeading") } compactTrailing: { // compact模式(长条款式)右侧内容,个别放形容文案 Text("compactTrailing") } minimal: { // minimal模式(其余APP挤占后的圆圈款式) Text("minimal") } .widgetURL(URL(string: "http://www.apple.com")) .keylineTint(Color.red) } }}同时须要在info.plist中增加对Live Activity的反对,在TARGETS - Info - Custom iOS Target Properties中增加NSSupportsLiveActivities并设置为YES: ...

April 12, 2023 · 1 min · jiezi

关于ios:百度APP-iOS端包体积50M优化实践一总览

一、前言百度APP作为日活过亿的国民级利用,通过这些年的倒退,从最后的搜寻,倒退到当初蕴含搜寻、Feed、视频、直播、小说、购物、小程序、网盘和泛滥垂类模块的超级利用,为服务更多用户满足更多用户需要一直迭代,利用像滚雪球一样越滚越大,包体积从最后的几十MB倒退到最高时的420MB,每个版本天然迭代会有至多3MB的涨幅,过大的包体积带来的负面作用开始浮现,400M的体积对下载转化率和卸载率提出了很大的挑战,因而包体积成为百度超级APP倒退的拦路虎。 22年Q3开启包体积优化我的项目,从编译器优化(OC&Swift&C++优化、LTO优化、剥离调试符号、三方SDK优化)、图片优化(无用图片、HEIC图片优化、Asset Catalog图片优化、图片压缩)、资源瘦身(大资源优化、无用配置文件、反复资源)、代码瘦身(无用类、无用办法、无用模块、精简反复代码、工具类瘦身、AB试验固化)和工程架构(Xcode打包、防劣化)等方向做优化。 在满足失常业务迭代状况下,优化落地收益50M,百度APP包体积从七月初的395M降落到十二月末的352M,同一时间段内,国内大厂支流APP中,微信从502M上涨到530M,抖音从390M上涨到432M,快手从310M上涨到357M。在很少的人力投入下取的这个成绩,效率十分显著,此外,咱们积淀了各个优化方向的基建工具,欠缺了防劣化机制,为包体积继续优化和避免无序增长打下来松软的根底。 二、背景2.1 包大小优化的必要性2.1.1 包体积每减少6M,利用下载转化率降落1%依据Google Play的统计:包体积每减少 6M,利用下载转化率降落 1%,APK包体大小每缩小10MB ,寰球均匀下载转化率会晋升1.75%,不同市场的数据各有不同,具体请参考如下图表。尽管AppStore没有给出相似数据,然而依据同样情理,安装包大小的缩小必然会晋升利用下载转化率。 2.1.2 App Store OTA下载大小限度,不利于APP的推广下载包大小超出 200 MB 时 ,会呈现两种状况: iOS 13 以下的用户,无奈通过蜂窝数据下载 APP;iOS 13 及以上的用户,须要手动设置才能够应用蜂窝网络下载 APP。 2.1.3 磁盘有余时删除首选下载包体积太大,会占用更多的设施存储空间,对于低存储的设施的用户也会有肯定的影响,可能成为磁盘不够时的首选。 2.1.4 缩小用户的下载志愿如果蜂窝数据选型默认是低数据模式,那么下载包大小就更会影响用户决策,可能会缩小用户的下载志愿。 2.1.5 其余负面影响包体积太大,更多的的代码逻辑,加载的类太多,减少premain工夫,带来比较慢的启动速度,同时减少启动阶段SIGKILL产生的概率,让性能等根底体验变差。此外,过于简单冗余的代码还会减少代码批改的危险,所以包大小不是一个孤立的指标,它从侧面的反映出 APP 的衰弱状态。 2.2 安装包生成过程在ipa包上传AppStore后,App Thinning会针对不同设施型号的硬件架构产生不同的编译产物,用户不同设施从AppStore会有不同的下载包,解压缩装置后是最初的安装包。 2.3 包体积指标2.3.1 下载包大小和安装包大小下载包大小是指APP压缩包(也就是 .ipa 文件)所占的空间,用户在下载APP时,下载的是压缩包,这样做能够节俭流量;当压缩包下载实现后,就会主动解压,解压过程也就是通常所说的装置过程,装置大小就是指压缩包解压后所占用的磁盘空间;在Appstore产品信息页->信息->大小,看到数据是安装包大小,不是下载包大小,不同的零碎安装包大小是不一样的; 那么苹果后盾的下载大小和装置大小如何查看? 开发者在iTues-Connect后盾能够看到不同平台的安装包大小和下载包大小,查看门路是App Store Connect->TestFlight->Build流动->抉择版本->文件大小。 2.3.2 安装包体积作为衡量标准对于iOS端来说通常将安装包体积作为衡量标准,这是基于以下两个起因,第一、安装包和下载包大小正相干,安装包体积减小后,下载包体积天然也会减小;第二、AppStore官网页面给出的是每个APP的安装包大小,APP使用者可十分直观地获取这个信息,然而要想获取下载包大小,必须具备开发者权限,这显然不可能。 三、IOS端安装包组成部分 四、国内外厂商APP体积剖析 咱们针对国内外支流APP的安装包做一个简略剖析,重点统计了IPA包次要组成部分,如Mach-O文件、bundle图片资源和Assets图片资源,原始文件起源是22年9月份AppStore商店安装包,通过剖析有如下结论: 从APP包体积来看,QQ和微信包体积最大(500M+),处于第一梯队,百度和抖音居于第二梯队(380M+),快手(320M)处于第三梯队,美团、淘宝和头条包体积是在250M左右 ,是国内大厂中体积最小的,国外的支流APP如Facebook和YouTube在280M左右,包体积管制的还是比拟节制的。国外的APP大量应用动静库,Facebook自定义动静库有53个,主mach-o体积只有8.3M,代码次要在动静库,国内自定义动静库根本6个左右,像美团和百度根本没有自定义动静库;Swift的应用是大势所趋,国外大厂在用,国内大厂除了美团没有Swift动静库(暂没发现),其余厂都有,这与Apple的致力密不可分,2019年Apple公布了 Swift 5.0 版本,发表了 ABI 稳固后,像手淘也拥抱了Swift;bundle和Asset应用比照,Asset是所有大厂APP支流,美团APP用bundle较宽泛,bundle图片webP优化较多;从图片的角度来比拟,不论是bundle图片资源还是Assets图片资源,百度APP是其余APP的好几倍,冗余资源很多,这是咱们的优化方向;SVG、iconfont的应用,国内大厂像QQ和淘宝,大量应用SVG矢量图和iconfont字体文件构建纯色图以此来升高图片体积,这也是百度APP须要推动优化的方向。五、技术计划 5.1 资源优化百度APP有30M的资源,这儿资源是指plist、js、css、json、端智能模型文件等,因这些文件的优化形式跟图片优化差别很大,所以把两者辨别开来。内置的大块资源(单个文件大于80K)就有16M,所以具备很大的优化空间,资源优化分为三个局部,别离是大资源优化、无用配置文件和反复资源优化。 5.2 工程架构优化其余优化伎俩解决的是存量问题,良好的防劣化机制解决的是增量问题,以防止包体积无序增长,百度APP联合Linkmap和Mach-O文件搭建了体积检测流水线,对每个版本每个库的包体积劣化问题做了开掘,联合配额和卡口制度,管制体积增长在正当范畴内。 此外,苹果公司为进一步提高开发者的生产效率,于22年10月份公布了Xcode14,新版本编译器具备全新的加强性能,更弱小的并行编译能力,可显著晋升我的项目构建速度,其中,XCode14的降级对包体积带来比拟显著的优化,官网给出数据是应用程序下载包体积减小了 30%,百度APP实际过程中有26M的收益,体积缩小了6.5%。 5.3 图片优化解压IPA包后发现,asset和bundle外面图片有94M,这是咱们重点优化的对象,百度APP采纳如下形式对不同的图片资源进行了优化。 无用图片优化:基于开源工具二次开发,工具针对OC、swift、xib、html、js、css、json、plist文件扫描排查未援用的图片,而后针对如下字符串拼接的常见case二次过滤:暗黑模式(后缀_dark,_day,_night)、后缀是数字的图片序列(笼罩如下后缀_%d,_%ld,_%zd,_%lu);Asset Catalog图片优化:之前在bundle须要放二倍图和三倍图,同一张图片最初在用户手机上会有两份,iOS7零碎有了Asset Catalog后,Asset Catalog为不同类型设施(分辨率不同)或者雷同类型设施但不同配置(磁盘不同)提供定制化资源下载,当用户下载App时,只有跟用户手机硬件设施参数相匹配的资源才会被下载,其余不会下载,从而升高下载包体积;HEIC图片优化:更改PNG和JPEG图片编码格局,抉择HEIC计划,基于以下长处:1、体积最小,HEIC比PNG体积缩小50%,WebP比PNG优化30%;2、解码效率高,跟WebP相比,HEIC硬解码效率高,略慢于JPEG;WebP压缩优化:依据后面的论断有HEIC格局图片后,图片优化工作就曾经完结了,其实不然,HEIC是iOS12当前推出来一种新格局,百度APP通过这么多年开发积攒了许多老图片,对于带有Alpha通道的并通过压缩的PNG图片,转换为HEIC格局后,在iOS12和13零碎存在兼容性问题,Alpha通道全变为0,为此对于这种case,尤其是大图,咱们采纳WebP压缩优化;TinyPng压缩:WebP 在 CPU 耗费和解码工夫上会比 PNG 高两倍,因为对于大于100KB的图片咱们应用 WebP,对于小于 100KB 图片,应用TinyPng进行压缩,尽管压缩率没有 WebP 那么高,然而没有扭转图片编码方式,所以不会减少解析性能损耗。5.4 编译器优化编译器是包体积优化方向中性价比最高的,LLVM给咱们提供了大量的编译选项,对于OC、C、C++、Swift、资源压缩和符号表都有大量优化抉择,百度APP采纳的计划如下所示: ...

April 11, 2023 · 1 min · jiezi

关于ios:iOS-ReplayKit-与-屏幕录制

本文作者: clc0x00 引言在客户端开发的生涯里,有时会遇到这样一些场景,须要对用户在利用内的操作做进行屏幕录制,甚至是零碎层级的跨利用屏幕录制来实现某种非凡需要,例如在线监考、利用问题反馈、游戏直播等。 苹果提供了 ReplayKit Framework 来满足这些需要,目前云音乐 LOOK 直播客户端内就是采纳这个零碎框架来实现跨利用录屏直播的。 0x01 ReplayKit简史ReplayKit 的故事要从 iOS 9 说起。 iOS 9 提供了 ReplayKit Extension 进行利用内的录制以及利用声音采集。次要波及两个类:一个是 RPScreenRecorder,作为录制 Task 的管理者;另一个是 RPPreviewViewController,录制状态的视觉反馈。利用内间接调用 ReplayKit API 来管制开始与进行,在 Extension 中将捕捉的音频/视频流推向服务器,这就是利用内录制(In-App Boardcast)。 WWDC 课程:Going Social with ReplayKit and Game Center 在 iOS 11 中,ReplayKit 提供了更弱小的能力:将零碎作为一个整体进行直播。用户在控制中心内开启屏幕录制后,ReplayKit2 Extension 能够获取到整个零碎级的屏幕画面、以及设施所产生的所有音频,实现跨利用录屏(iOS System Boardcast),同时 ReplayKit 也提供了麦克风采集。这种零碎级的直播在利用间切换时也不会进行。(留神揭示你的用户爱护好本人的隐衷!)。 音视频数据仍然是在 Extension 内间接获取并上传至服务器,文章的前面将重点聊一下这块内容在 LOOK 直播中的实际。 WWDC 课程:Live Screen Broadcast with ReplayKit 在 iOS 15之后,ReplayKit 提供了 Loop Buffer 性能,依据 WWDC 的形容,在利用内开启 Loop Buffer 后 ReplayKit 会创立一个最长 15 秒的 Buffer 并开始继续录制,利用能够随时调用 API 将这一部分导出(对直播利用而言,这能够用来随时截获精彩霎时,很酷)。这一部分不须要创立 Extension,间接在利用内实现。 WWDC 课程:Discover rolling clips with ReplayKit ...

April 3, 2023 · 3 min · jiezi

关于ios:ShareSDK-苹果登录最佳实现

形容依据[](https://developer.apple.com/cn/app-store/review/guidelines/&gt;苹果审核 指南:如果app专门应用第三方或社交登录服务(例如微信登录,QQ登录,Facebook登录,Google登录,Twitter登录等)来对其进行设置或验证这个app的用户主账户,则该app必须同时提供“通过Apple登录”作为等效选项,用户的主账户时指在app中建设的,用于标识身份,登录和拜访性能和相干服务的账户。</p><p>在以下状况下,不要求提供“通过 Apple 登录”选项:</p><ul><li>您的 app 仅应用公司自有的帐户设置和登录零碎。</li><li>您的 app 是一款教育、企业或商务 app,要求用户应用现有的教育或企业帐户登录。</li><li>您的 app 应用政府或行业反对的公民身份零碎或电子身份证来鉴定用户身份。</li><li>您的 app 是特定第三方服务的客户端,用户须要应用他们的邮件、社交媒体或其余第三方帐户间接登录能力拜访内容。</li></ul><p>按钮要求</p><p><img src=) [](https://developer.apple.com/cn/app-store/review/guidelines/&gt;苹果审核 指南:如果app专门应用第三方或社交登录服务(例如微信登录,QQ登录,Facebook登录,Google登录,Twitter登录等)来对其进行设置或验证这个app的用户主账户,则该app必须同时提供“通过Apple登录”作为等效选项,用户的主账户时指在app中建设的,用于标识身份,登录和拜访性能和相干服务的账户。</p><p>在以下状况下,不要求提供“通过 Apple 登录”选项:</p><ul><li>您的 app 仅应用公司自有的帐户设置和登录零碎。</li><li>您的 app 是一款教育、企业或商务 app,要求用户应用现有的教育或企业帐户登录。</li><li>您的 app 应用政府或行业反对的公民身份零碎或电子身份证来鉴定用户身份。</li><li>您的 app 是特定第三方服务的客户端,用户须要应用他们的邮件、社交媒体或其余第三方帐户间接登录能力拜访内容。</li></ul><p>按钮要求</p><p><img src=) [苹果会提供一个举荐的按钮,如上图,你也能够自定义一个按钮,但必须合乎苹果的标准:](https://developer.apple.com/cn/app-store/review/guidelines/&gt;苹果审核 指南:如果app专门应用第三方或社交登录服务(例如微信登录,QQ登录,Facebook登录,Google登录,Twitter登录等)来对其进行设置或验证这个app的用户主账户,则该app必须同时提供“通过Apple登录”作为等效选项,用户的主账户时指在app中建设的,用于标识身份,登录和拜访性能和相干服务的账户。</p><p>在以下状况下,不要求提供“通过 Apple 登录”选项:</p><ul><li>您的 app 仅应用公司自有的帐户设置和登录零碎。</li><li>您的 app 是一款教育、企业或商务 app,要求用户应用现有的教育或企业帐户登录。</li><li>您的 app 应用政府或行业反对的公民身份零碎或电子身份证来鉴定用户身份。</li><li>您的 app 是特定第三方服务的客户端,用户须要应用他们的邮件、社交媒体或其余第三方帐户间接登录能力拜访内容。</li></ul><p>按钮要求</p><p><img src=)款式标准官网文档。 集成ShareSDK从4.3.4版本开始反对苹果登录,将苹果返回的数据全副返回给用户。在应用ShareSDK提供的苹果登录性能后,还将提供一个能够监听苹果登录状态变动的性能,在登录状态被登记时能够实时检测。能够参考demo例子,在demo中的体现为: 在用户登录后,进设置界面(能够在另一台设施上操作)删除该app登录权限,则app能实时接管登录账号生效的状态(重新启动须要在进入前台后能力获取),从而使app更平安。 下载SDK登录咱们的 官网,进行下载,须要苹果登录,请勾选。 导入SDK将下载的SDK导入到我的项目里,并增加依赖库 AuthenticationServices.framework我的项目配置证书开明Sign In with Apple选项,并且在Xcode的我的项目里配置 代码实现(本人能够打印返回的信息,须要什么能够依据key去获取) /** 受权 @param platformType 平台类型 @param settings 受权设置,承受scopes属性设置,如新浪微博关注官网微博:@{@"scopes" : @[@"follow_app_official_microblog"]},相似“follow_app_official_microblog”这些字段是各个社交平台提供的。QQ平台如设置二维码受权,增加字段为QQAuthType:@{@"QQAuthType":@1}, 0为网页账号密码登录受权 @param stateChangedHandler 受权状态变更回调解决 @return 会话id */+ (SSDKSession *)authorize:(SSDKPlatformType)platformType settings:(NSDictionary *)settings onStateChanged:(SSDKAuthorizeStateChangedHandler)stateChangedHandler;示例代码 ...

March 27, 2023 · 1 min · jiezi

关于ios:ShareSDK-iOS端如何实现微信分享链接与登录

下载SDK1.1 登录官网 1.2 点击这里 下载SDK 1.3 勾选本人须要的平台,例如微信平台,而后本人写UI,只须要勾选 如下图: 点击保留配置之后,而后点击 下载 即可 导入SDK将1.3步获取到的SDK,间接将整个SDK资源文件拖进我的项目里,如下图: 并且勾选以下3个选项 在点击Finish,实现导入。 增加依赖库 点击 “+” 号,并在弹框里输出以下依赖库,进行增加 必要依赖库: libc++.tbdlibz.tbdlibsqlite3.tbd配置-ObjC在我的项目的Build Settings中的Other Linker Flags增加”-ObjC” ,留神大小写 配置ATS在我的项目的info.plist中增加 App Transport Security Settings,类型为字典类型 给它增加一个Key:Allow Arbitrary Loads,类型为Boolean类型,值为YES; 配置URL Scheme关上我的项目Info选项,找到URL Types,增加微信的URL Scheme:初始化里的AppId就是URL SCheme,如下图: 配置白名单在我的项目的info.plist中增加LSApplicationQueriesSchemes,类型为Array 而后给它增加一个须要反对的我的项目,类型为字符串类型: 微信白名单须要减少:wechat,weixin,weixinULAPI这3项,如下图: 留神:XCode13,iOS15上编译,白名单只读取前50个配置,前面配置的都会有效 配置Universal LinkUniversal Link能够本人去生成,参考苹果官网文档,然而为了不便用户,节俭用户的工夫和精力,咱们也在后盾为客户生成了Universal Link,如下图: Team id:开发者团队的ID,可在苹果开发者后盾查看 Bundle id:开发者账号下所有利用对应一个Bundle id,可见于我的项目plist文件中的Bundle identifier,务必与我的项目中保持一致 填写好这些信息保留之后,就能够将生成的Universal Link用于微信开放平台上,微信初始化里,我的项目里这3个中央进行配置 (1)微信里以 https://结尾,反斜杠结尾 这种模式填写如下: (2)微信初始化里与微信开放平台一样模式以 https://结尾,反斜杠结尾 模式填写如下: ...

March 27, 2023 · 2 min · jiezi

关于ios:MobPush-iOS-SDK-API

概述MobPush 注册推送,获取推送id等办法均可在SDK的"MobPush.h"中进行查看,也能够下载MobPush的Demo进行参考。 推送环境设置(setAPNsForProduction)/** @param isProduction 是否生产环境。 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES。 Default 为 YES 生产状态 */+ (void)setAPNsForProduction:(BOOL)isProduction;示例代码 // 设置推送环境#ifdef DEBUG [MobPush setAPNsForProduction:NO];#else [MobPush setAPNsForProduction:YES];#endif注册推送配置(setupNotification)/**@param configuration 配置信息 */+ (void)setupNotification:(MPushNotificationConfiguration *)configuration;示例代码 //MobPush推送设置(取得角标、声音、弹框揭示权限),利用要收到推送(角标、声音、弹框揭示)须要先申请权限,这个办法就是设置推送配置、申请权限的办法。用法可参考以下的例子。MPushNotificationConfiguration *configuration = [[MPushNotificationConfiguration alloc] init];configuration.types = MPushAuthorizationOptionsBadge | MPushAuthorizationOptionsSound | MPushAuthorizationOptionsAlert;[MobPush setupNotification:configuration];告诉回调接口(MobPushDidReceiveMessageNotification)/** 收到音讯告诉(数据是MPushMessage对象,可能是推送数据、自定义音讯数据,APNs、本地告诉等的回调) */extern NSString *const MobPushDidReceiveMessageNotification; 阐明:利用收到音讯,MobPush会发动一个告诉,开发者只须要建设一个告诉收听 MobPushDidReceiveMessageNotification 并作相应解决即可。收到的数据是一个MPushMessage对象,可能是推送数据,也可能是自定义音讯数据。如果是推送数据,开发者能够通过MobPush.h中的addLocalNotification:办法,让音讯以本地告诉模式显示(iOS 10之前的零碎利用内是不会显示告诉的)。 示例代码 // 注册告诉回调[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMessage:) name:MobPushDidReceiveMessageNotification object:nil];//查看告诉参数能够打印notification- (void)didReceiveMessage:(NSNotification *)notification{}获取推送RegistrationID (getRegistrationID)获取推送RegistrationID接口,RegistrationID可与用户id绑定,实现向指定用户推送音讯,此接口必须在推送设置接口之后调用。 /** 获取注册id(可与用户id绑定,实现向指定用户推送音讯) @param handler 后果 */+ (void)getRegistrationID:(void(^)(NSString *registrationID, NSError *error))handler;示例代码 ...

March 24, 2023 · 2 min · jiezi

关于ios:iOS云音乐APM性能监控实践

本文作者:xxq背景客户端 APM 监控是发现和解决产品质量问题的重要伎俩,通常用于排查线上解体等问题,随着业务迭代,单纯的解体监控不能满足要求,特地是对于云音乐这样业务场景很简单的产品,滑动不晦涩、设施发热、UI 卡死、无端闪退等异样问题对用户体验挫伤都很大,因而咱们自研了一套能力更欠缺的 APM 监控零碎并在云音乐上获得了不错的成果,本文是对于客户端监控局部的具体实现计划以及施行成果的一些总结。 行业调研互联网大厂根本都有自研的 APM,其中有些甚至曾经开源,市面已有计划中有大厂将本人积攒多年的 APM 监控能力商业化(字节、阿里、手Q),也有许多优良的开源我的项目或具体计划介绍(matrix、Wedjat、Sentry),这些 APM 我的项目中不乏品质较高的开源我的项目比方 matrix 的内存监控,也有原理和思路比拟全面比方 Wedjat 以及一些技术分享文章。 但对于云音乐这样比较复杂且独立的大型项目来讲,亟需一款技术可控且合乎本身业务特点的 APM,因而咱们不仅吸纳了市面上优良计划的实践经验,同时联合业务场景做了深度的优化与改良,咱们的计划次要有如下特点: 场景丰盛全面:笼罩了 OOM、ANR、Jank 卡顿、CPU 发热、UI 假死等场景;异样精密管控:设计了一套异样问题分级规范,对不同级别的问题采纳不同的监控和治理策略;堆栈精准高效: 通过聚合型堆栈构造晋升问题堆栈的准确率;通过过滤无用堆栈缩小烦扰信息;上报堆栈的线程名以便于过滤特定问题堆栈;调试能力丰盛:调试工具能够无效晋升问题排查效率 监控台实时展示CPU/GPU/FPS等信息;反对各类异样场景的模仿;反对本地符号化堆栈信息;反对函数耗时统计。计划介绍一、堆栈指标一款 APM 我的项目的外围指标是帮忙业务提前发现和疾速定位性能问题,在大家熟知的解体监控中解体堆栈是其最为外围的信息,在大部分场景能间接定位到呈现解体问题的代码行,在本文提到的各类异样监控中亦是如此,本我的项目中绝大部分异样 Issue 都会将堆栈作为其外围信息上报,因而堆栈是 APM 我的项目中最根底也是最重要的模块。但与此同时性能性能异样的堆栈和解体型堆栈也存在很大区别,解体堆栈是在问题产生时抓取全线程堆栈,而性能异样的监控很多时候不能精确抓取到过后的调用栈,须要利用统计学伎俩去猜问题场景最有可能的堆栈,所以咱们设计了一套聚合型堆栈计划,本文也先从这里开始论述。 堆栈聚合Apple 的 ips 堆栈堆栈格局参考自苹果ips文件,它将多组堆栈聚合到一起展现,通过缩进来示意堆栈的深度,这样即节俭了堆栈的存储空间,也便于直观展现多组堆栈信息,还能依据堆栈的命中次数提取出命中率最高的要害堆栈,这对 Issue 的聚合有很大的帮忙。 <img src="https://p6.music.126.net/obj/wonDlsKUwrLClGjCm8Kx/25331392763/770c/f9e6/cc4a/e1ddc94657c34898dd02be45448e0fd8.png" alt="image.png" width="600" /> 云音乐的聚合型堆栈存储构造:这种聚合型堆栈实现办法比较简单,通过二叉树存储堆栈数据,打印后果时只需遍历二叉树,其中二叉树生成的算法如下: 传入堆栈数组以及以后遍历的深度,如果深度曾经超过数组大小,则退出递归;否则执行 > 步骤2;从栈底开始匹配以后二叉树节点,如果雷同,则跳转至 步骤3;不雷同则跳转至 步骤> 4;挪动到下一个深度并交给 right节点解决,right为nil时创立节点,递归跳转至 > 步骤1;不挪动深度并交给 left解决,left为nil时创立节点,递归跳转至 步骤1。<img src="https://p5.music.126.net/obj/wonDlsKUwrLClGjCm8Kx/25612599000/4cb5/a6e8/ec21/3dea7f2e4b76c5aec56c1cdefa1480a5.jpeg" alt="image.png" width="100%" /> 打印堆栈则是通过 DFS 后续遍历二叉树,再格式化输入每一栈帧的信息即可,须要依据树深度来输入正确的缩进,同时将堆栈的命中次数/占比打印在后面,后文有聚合型堆栈的展现成果,此处不赘述。 压缩原理:函数调用栈有一个特点,栈底的调用变动远远小于栈顶,这很好了解,一个调用树必定是越往树枝末端分叉越多,这也使得从栈底向上聚合时能压缩大量的存储空间,粗略统计相比不必聚合型堆栈的数据,能够节俭50%以上的存储空间。 下图中演示了3组堆栈聚合的过程,其中堆栈数据通过二叉树来治理。<img src="https://p6.music.126.net/obj/wonDlsKUwrLClGjCm8Kx/25328001727/a708/0584/8eb8/926dd268a917c652652ee775cfd8a8df.jpeg" alt="image.png" width="100%" /> 要害堆栈每次传入堆栈更新/构建二叉树时,将以后节点的计数+1,示意以后节点匹配的次数,次数最高的权重也就最高,权重最高的为要害堆栈。 因而获取要害堆栈的过程也是搜寻权重最大的二叉树门路,实现比较简单此处不再赘述。 有效堆栈为什么要过滤? 在实际上报的堆栈里,咱们发现大量堆栈如下,都是一些纯零碎调用。 <img src="https://p6.music.126.net/obj/wonDlsKUwrLClGjCm8Kx/25328075712/055b/b2c6/4eb0/fdc415daef7c8d58eb450582c9613751.png" alt="image.png" width="33%" /> <img src="https://p5.music.126.net/obj/wonDlsKUwrLClGjCm8Kx/25328075713/5881/9c58/fbec/ce07e917a9e90359beca1ecf464a0a7e.png" alt="image.png" width="33%" /> <img src="https://p5.music.126.net/obj/wonDlsKUwrLClGjCm8Kx/25328075714/9ec1/2a0d/9b4b/7fed15c6e7d6c0059094fa05f74e36b2.png" alt="image.png" width="30%" /> 这类堆栈对咱们排查问题简直没有什么帮忙,因而咱们默认剔除这类堆栈,最大水平缩小烦扰。 ...

March 15, 2023 · 3 min · jiezi

关于ios:通过HHDESK将IPad上的图片导入到个人电脑

IOS与PC的跨零碎“沟壑”始终是一件令人头疼的事件。尽管能够应用微信等工具,实现小文件的传输,但大容量传输,以及在不能联互联网的状况下,跨零碎传输仍旧不不便。比方,Ios的图片传输,便须要先上传到云端——而这种形式,平安问题有待商讨。明天为大家解决的便是这个问题,以Ipad与PC端电脑之间的图片浏览、传输为例,介绍HHDESK性能——文件共享及传输,一个能为IOS与PC接通桥梁的重要性能。 1. 设置共享文件这部分内容在上一篇文章《HHDESK局域网连接功能》中已有具体介绍,若有须要请查看主页文章。1)在HHDESK首页点击文件共享——新增;2)在弹出框中依据需要抉择只读/读写;(这里提醒:想要批改文件,须要抉择读写,笔者这里用了读写性能)3)点击浏览,抉择须要浏览/传输的文件夹,并输出端口;4)输出用户名及明码能够看到连贯页面如下: 2. Ipad上FTP设置请在确保2台设施在同一局域网,并且ipad装置有FTP传输软件。在app内创立ftp链接,填入pc端主机的IP,端口,以及刚刚设置的用户名和明码。备注:字符集抉择UTF-8,点击连贯,便能够看到PC端方才共享的文件夹。你能够点击进入子文件夹浏览图片,以及拷贝等操作 3. 应用技巧1)若只须要浏览照片等简略操作,抉择“只读”性能会更加简略;2)如果始终呈现连贯不上的状况,请查看是不是连入了两个局域网;笔者曾被这个问题卡了大半天;3)如果呈现连贯被回绝的状况,请查看防火墙是否敞开。

March 7, 2023 · 1 min · jiezi

关于ios:如何给iOS-APP加固之检查代码漏洞-第四章附代码

接着上篇文章:【如何给iOS APP加固】之爱护文件系统 第三章【附代码】 6. 查看代码破绽在利用程序开发过程中,可能会呈现代码破绽,如缓冲区溢出、格局字符串破绽、SQL注入等。这些破绽会使应用程序易受攻击。因而,须要定期对应用程序进行代码审查和破绽检测,及时修复代码破绽。 以下是一些罕用的办法: 动态剖析工具:应用动态剖析工具能够帮忙查看代码破绽,如Clang Static Analyzer、Coverity和PVS-Studio等。这些工具能够检测代码中的内存透露、空指针援用、未初始化变量等问题。 以下是一个应用Clang Static Analyzer的示例代码: 1.装置Clang Static Analyzer brew install llvm2.查看应用程序的代码破绽 xcodebuild clean build -sdk iphonesimulator -configuration Debug | xcprettyscan-build xcodebuild -sdk iphonesimulator -configuration Debug clean build | xcpretty这将运行Clang Static Analyzer并输入潜在的代码破绽。能够应用xcodebuild命令编译应用程序,而后应用scan-build命令运行Clang Static Analyzer。 留神:这只是一个示例代码,实际上查看iOS应用程序的代码破绽可能须要应用更简单的工具和技术。同时,应用Clang Static Analyzer只是查看代码破绽的一种办法,还应该联合其余办法一起应用以确保应用程序的安全性。 动态分析工具:应用动态分析工具能够模仿不同的攻打场景,并检测应用程序中的破绽。这些工具能够检测应用程序中的缓冲区溢出、格局字符串破绽等。动态分析工具通常不须要您提供代码,而是在运行时查看应用程序的行为和状态。以下是一些罕用的动态分析工具和应用办法: Frida:Frida是一个弱小的动态分析工具,它能够在运行时批改应用程序的行为并监督应用程序的状态。应用Frida,您能够捕捉应用程序的网络流量、批改应用程序的数据、甚至替换函数调用等。 Objection:Objection是一个基于Frida的工具,它提供了一个交互式命令行界面,能够疾速剖析应用程序的行为和状态。应用Objection,您能够查看应用程序中的破绽、跟踪函数调用和检测应用程序的反调试机制等。 Cycript:Cycript是一个交互式的运行时剖析工具,能够帮忙您摸索和调试iOS应用程序。应用Cycript,您能够在运行时批改应用程序的行为、查看和批改应用程序的内存和变量等。 留神:这些工具须要在越狱的iOS设施上运行,并且只能用于测试和剖析目标。在生产环境中,应用这些工具可能会导致安全漏洞并毁坏应用程序的安全性。因而,请确保在测试环境中应用这些工具,并采取适当的安全措施来爱护测试设施和数据。 平安审计:平安审计是一种手动查看代码的办法,能够辨认应用程序中的安全漏洞。这种办法须要有教训的平安专家来执行,因为他们须要有肯定的平安常识来辨认破绽。 平安审计通常是手动进行的过程,不须要编写代码。它波及仔细检查代码和应用程序的各个方面,以确定潜在的安全漏洞。以下是一些可能须要进行的平安审计步骤: 代码审查:仔细检查应用程序的代码,查找可能存在的安全漏洞,例如SQL注入、XSS、缓冲区溢出等。 数据库审计:审计应用程序的数据库,包含表构造、索引、存储过程和触发器等。查找可能存在的安全漏洞,例如未加密的敏感数据、弱明码和没有正确权限的拜访等。 网络审计:审计应用程序的网络协议和通信形式,查找可能存在的安全漏洞,例如明文传输敏感数据、没有足够的身份验证和受权、对中间人攻打的不足防范措施等。 Web审计:审计应用程序的Web界面,查找可能存在的安全漏洞,例如XSS、CSRF、SSRF等。 应用程序配置审计:审计应用程序的配置文件,查找可能存在的安全漏洞,例如敏感信息泄露、未加密的配置文件、不正确的访问控制等。 留神:这些平安审计步骤仅仅是示例,实际上须要依据应用程序的具体情况来进行。同时,平安审计须要有教训的平安专家来执行,因为他们须要有肯定的平安常识来辨认破绽。 浸透测试:浸透测试是一种模仿攻打的办法,能够测试应用程序中的破绽。测试人员能够应用各种攻打技术,如SQL注入、XSS、CSRF等,以检测应用程序中的破绽。 浸透测试通常波及模仿黑客攻击的形式,测试应用程序的安全性。以下是一些可能须要编写的代码来执行浸透测试的示例: 代码注入:通过批改应用程序的代码,攻击者能够实现从应用程序中窃取敏感数据、批改应用程序的行为等目标。因而,在浸透测试过程中,攻击者可能会编写代码来注入恶意代码,并查看是否能够胜利地执行攻打。 模仿歹意网络流量:攻击者能够模仿各种类型的网络攻击,例如DDoS攻打、SQL注入攻打、XSS攻打等,以测试应用程序的安全性。在浸透测试过程中,攻击者可能会编写代码来模仿这些攻打,并查看应用程序的反馈和弱点。 模仿身份验证攻打:身份验证是爱护应用程序平安的重要组成部分。攻击者能够应用各种形式进行身份验证攻打,例如应用弱明码、暴力破解明码、钓鱼攻打等。在浸透测试过程中,攻击者可能会编写代码来模仿这些攻打,并查看应用程序的反馈和弱点。 模仿数据泄露:攻击者能够利用应用程序中的安全漏洞,窃取敏感数据并泄露给第三方。在浸透测试过程中,攻击者可能会编写代码来模仿这些攻打,并查看应用程序的反馈和弱点。 留神:具体的代码都不展现了,实际上,浸透测试须要有教训的平安专家来执行,并且须要遵循肯定的测试准则和标准,以确保测试的平安和有效性。 以上。这是倒数第二篇啦,心愿这周能把最初一篇更新实现。

March 7, 2023 · 1 min · jiezi

关于ios:如何给iOS-APP加固-第三章附代码

接着上篇文章:如何给iOS APP加固 第二章【附代码】 爱护文件系统应用程序通常须要存储一些敏感数据,如用户信息、证书、私钥等。这些数据须要爱护,以避免黑客窃取。能够应用iOS提供的Keychain来爱护敏感数据,也能够应用加密技术来爱护数据文件。 iOS app加固的目标是为了爱护应用程序不被反编译、破解或篡改。为了爱护应用程序的文件系统,能够采取以下步骤: 1) 应用文件加密算法对敏感文件进行加密,例如登录凭证、密钥等。能够应用现有的加密库,例如CommonCrypto等。 2)对文件系统进行爱护,能够通过以下形式: 在应用程序启动时查看文件系统是否被篡改。能够比拟应用程序的签名和存储在文件系统中的签名是否统一,以此检测文件系统的完整性。能够应用NSFileManager的办法来比拟文件的MD5值。 对应用程序沙箱进行加固。应用程序沙箱是iOS应用程序的一种隔离机制,它限度了应用程序的拜访权限,避免应用程序读取或写入其余应用程序或系统文件。能够加固应用程序沙箱的权限,以爱护应用程序的文件系统。能够应用NSFileManager的办法来查看文件的拜访权限。 对应用程序的外围数据进行加密。能够应用SQLite加密扩大或其余加密库来加密应用程序的外围数据。 应用加密和散列算法来爱护应用程序的网络通信。能够应用HTTPS协定来爱护应用程序的网络通信。 须要留神的是,以上步骤并不能保障100%的应用程序平安。为了最大水平地爱护应用程序的平安,须要定期更新应用程序,修复破绽,以及应用多种平安技术来爱护应用程序。 上面是一些相干的代码片段,以供参考: 对敏感文件进行加密 NSData *plainText = [@"my sensitive data" dataUsingEncoding:NSUTF8StringEncoding];NSData *key = [@"my secret key" dataUsingEncoding:NSUTF8StringEncoding]; NSData *encryptedData = [plainText AES256EncryptWithKey:key]; // 加密后的数据能够存储到文件系统中,以便稍后解密应用查看文件的MD5值 - (NSString *)md5HashOfFileAtPath:(NSString *)filePath { NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:filePath]; if (handle == nil) { return nil; } CC_MD5_CTX md5; CC_MD5_Init(&md5); NSData *fileData = nil; do { @autoreleasepool { fileData = [handle readDataOfLength:CHUNK_SIZE]; CC_MD5_Update(&md5, [fileData bytes], (CC_LONG)[fileData length]); } } while ([fileData length] > 0); unsigned char digest[CC_MD5_DIGEST_LENGTH]; CC_MD5_Final(digest, &md5); NSMutableString *md5Hash = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) { [md5Hash appendFormat:@"%02x", digest[i]]; } return md5Hash;} // 调用形式NSString *filePath = @"path/to/my/file";NSString *md5Hash = [self md5HashOfFileAtPath:filePath];查看文件的拜访权限 ...

March 6, 2023 · 2 min · jiezi

关于ios:如何给iOS-APP加固-第二章附代码

持续上篇文章:如何给iOS APP加固 第一章【附代码】 3.避免动静调试黑客能够通过动静调试应用程序,获取应用程序的外部信息和逻辑,从而攻打应用程序。能够在应用程序中集成避免动静调试的代码,如AntiDebugging。 1)检测调试器是否存在能够通过检测以后过程是否存在调试器来判断是否处于调试状态。以下是示例代码: #include <assert.h>#include <stdbool.h>#include <sys/types.h>#include <unistd.h>#include <sys/sysctl.h>bool am_i_being_debugged() { int name[4]; struct kinfo_proc info; size_t info_size = sizeof(info); info.kp_proc.p_flag = 0; name[0] = CTL_KERN; name[1] = KERN_PROC; name[2] = KERN_PROC_PID; name[3] = getpid(); if (sysctl(name, 4, &info, &info_size, NULL, 0) == -1) { perror("sysctl"); exit(EXIT_FAILURE); } return ((info.kp_proc.p_flag & P_TRACED) != 0);}在上述代码中,通过检测以后过程的标记来判断是否存在调试器。 2)检测调试器是否开启能够通过检测以后过程的环境变量来判断是否处于调试状态。以下是示例代码: #include <assert.h>#include <stdbool.h>#include <stdlib.h>bool am_i_being_debugged() { return (getenv("DYLD_INSERT_LIBRARIES") != NULL);}在上述代码中,通过检测环境变量来判断是否存在调试器。 3)破解断点能够在应用程序中退出代码来破解调试器中的断点。以下是示例代码: #include <signal.h>#include <stdio.h>void disable_debugger_breakpoint() { ptrace(PT_DENY_ATTACH, 0, 0, 0); signal(SIGTRAP, signal_handler);}void signal_handler(int signal) { printf("Debugging signal received!\n");}在上述代码中,应用ptrace函数来禁用附加调试器的性能,并应用signal函数来解决调试信号。 ...

March 2, 2023 · 1 min · jiezi

关于ios:理解-Swift-的方法派发

派发(dispatch)是一个比拟通用的概念,个别是指为了实现某个目标把一个货色发送到某个地位的行为。在计算机科学中,这个术语在很多中央都会用到,比方派发一个调用给某个函数,派发一个事件给一个监听者,派发一个中断给中断处理程序,或者派发一个过程给 CPU。 在这篇文章中,咱们次要钻研 Swift 中的派发,也就是派发一个调用到某个办法上,Swift 中的办法派发包含类的办法派发和基于协定的派发。 类的办法派发Swift 中类的办法的派发有以下三种形式: 动态派发(Static Dispatch)动静派发(Dynamic Dispatch)音讯派发(Messaging Dispatch)动态派发动态派发,又叫做晚期绑定,是指在编译期将办法调用绑定到办法的实现上,这种派发形式十分快。在编译期,编译器能够看到调用方和被调方的所有信息,间接生成跳转代码,这样在运行期就不会有其它额定的开销。并且编译器能够依据本人晓得的信息进行优化,比方内联,能够极大进步程序运行效率。 在 Swift 中,构造体和枚举的办法调用,以及被 final 标记的类和类的办法,都会采纳这种派发形式。 动静派发动静派发是在运行时决定办法调用地址,因而须要有个查找办法地址的机制,在 Swift 中是通过虚函数表(Virtual Method Table),简称 V-Table 实现的,因而动静派发也被称为表派发(Table Dispatch) 在编译期,编译器会给每个蕴含动静派发办法的类型创立一个虚函数表,这个表会被放在内存的动态区,表中是办法名到办法实现地址的映射。当这个类型的办法被调用时,运行时会去这个类型的虚函数表中寻找这个办法名对应的实现地址,而后再跳转到这个地址执行代码。 动静派发次要是用来实现继承多态,继承多态是多态的一种。例如以下代码: class Animal { func makeNoise() { fatalError("此办法必须通过子类调用") }}class Dog: Animal { override func makeNoise() { print("Wang Wang!") }}class Cat: Animal { override func makeNoise() { print("Miao!") }}这段代码在编译时,编译器会把 makeNoise 办法采纳动静派发来解决,会给 Animal、Dog、Cat 这三个类别离生成一个虚函数表,每个表中蕴含了办法实现地址的列表和办法列表的索引。 咱们能够应用一个容器来装一些列 Animal 和其子类,而后对立调用 makeNoise 办法,这样的益处是疏忽每个具体类型的信息,提供高级的形象,这种做法在很多中央都很有用。这种做法在面向对象中也被称为凋谢递归(Open recursion)。 let animals: [Animal] = [Dog(), Cat()]for animal in animals { animal.makeNoise()}// 输入:// Wang Wang!// Miao!绝对于动态派发的间接跳转,动静派发要通过 3 个步骤,找到虚函数表、找到办法地址、跳转到办法地址,并且编译器无奈对动静派发做优化,因而其性能要比动态派发慢得多。 ...

February 15, 2023 · 2 min · jiezi

关于ios:网络安全-DNSSEC-HTTPDNS

图片起源:https://unsplash.com/photos/Q... 作者:念山 背景随着技术的倒退,网络环境也变得越来越简单,而对于一个以网络数据传输提供服务的 App 来讲,在复杂多变的网络环境下平安稳固无效的提供好服务显得尤为重要。而为了提供平安稳固无效的 HTTP 网络服务,咱们从网络申请的初始阶段 DNS 解析上保障 DNS 安全性的技术:去剖析下苹果2022年 WWDC 讲到的 DNSSEC 技术和咱们云音乐现行的 HTTPDNS 并做下比照。 什么是 DNS域名零碎(Domain Name System,DNS) 则是将域名解析 IP 地址的一项互联网根底服务,提供该服务的服务器称为 域名服务器(Domain Name Server)。 域名(Domain Name,Domain) 是一个在互联网上标识主机或主机组的名称,相当于 IP 地址的别名,绝对于艰涩难记的 IP 地址,域名更显得易于记忆。 域名零碎是怎么工作的呢互联网上的域名零碎是一个分布式的零碎,构造上是一个四层的树状层次结构: 本地域名服务器(Local Name Server,local DNS):如果通过 DHCP 配置,local DNS 由互联网服务提供商(ISP,如联通、电信)提供根域名服务器(Root Name Server):当 local DNS 查问不到解析后果时,第一步会向它进行查问,并获取顶级域名服务器的IP地址。寰球一共有 13 个根域名服务器(除了它们的镜像),它们并不间接用于域名解析,仅用于指出可查问的顶级域名服务器。顶级域名服务器(Top-level Name Server):负责管理在该顶级域名服务器下注册的二级域名,例如.com 顶级域名服务器,而 baidu.com 权威服务器是注册在 .com 的权威域名服务器权威域名服务器(Authoritative Name Server):在特定区域内具备唯一性,负责保护该区域内的域名与 IP 地址的映射关系。在 DNS 应答报文中,标记位 AA 标识本次 DNS 记录是否来自权威域名服务器,否则可能来自缓存模仿流程那以咱们主站域名 interface.music.163.com 为例,来看一下 DNS 的过程: ...

February 15, 2023 · 3 min · jiezi

关于ios:开放报名-字节跳动工程师带你-5-天进阶-iOS-应用稳定性优化

你还在为内存疑难问题无奈解决而苦恼吗? 还在为OC野指针、内存踩踏无奈归因治理而惆怅吗? 「iOS利用稳定性训练营」 来啦 本期训练营邀请2位火山引擎APMPlus技术专家亲自分享 通过5天的课程带你进阶iOS利用稳定性优化常识~ 原理解说与案例剖析相结合,内容丰盛干货满满 手把手教你如何定位和解决问题,进步异样问题排查效率 更有学员专属实际资源福利,即学即用,助你实现技术成长 扫码报名⬆️⬆️⬆️ 报名学习还可参加多轮抽奖 VR一体机、挪动电源、电脑包等奖学礼等着你 「课程内容」课时主题1内存踩踏问题剖析与治理计划2OC野指针案例总结与归因指南3如何利用GWPASan解决内存踩踏问题4Core dump的原理与最佳实际(上)5Core dump的原理与最佳实际(下)「适宜人群」0-3年高级开发者、3-5年进阶开发者、行业客户、公司技术leader等对iOS利用稳定性感兴趣的学习者,想学习新事物,晋升利用稳定性,高效实现性能优化等。 「流动工夫」流动报名:2月13日-2月27日 资源支付:2月24日-2月27日 课程学习:2月28日-3月6日 「课程亮点」实践根底与案例实际相结合,循序渐进深刻原理,高效把握所学常识;专家入群每日答疑解惑,课程视频可随时复习坚固;专属课程群,浓重的技术气氛,与同畛域的小伙伴交流学习;辨认下方二维码,回复【iOS】马上报名 浏览原文: https://zjsms.com/BQvSu9G/

February 13, 2023 · 1 min · jiezi

关于ios:全面掌握-Swift-包依赖管理工具-命令行Manifest-APIXcode二进制包集合插件

Swift 包管理工具,即 Swift Manager Package,简称 SwiftPM,是 Swift 开源我的项目的一部分,提供了包依赖治理的性能。绝对于 CocoaPods、Carthage 等第三方管理工具,SwiftPM 是苹果本人研发,并和苹果平台和 Xcode 高度集成,能提供一些第三方工具无奈提供的能力。SwiftPM 从 2018 年开始 release,苹果也在一直地为其增加越来越多的性能,目前曾经能够反对 Swift、Objective-C、C++、C 的混编。因为 SwiftPM 的不便易用性,目前有取代其它第三方管理工具之势,越来越多的新我的项目都开始用 SwiftPM 来组织工程机构,治理依赖。 包是什么?包(Package)是一个代码和资源的汇合,代码能够是源代码,也能够是二进制。包的次要作用就是散发和共享代码和资源,包能够供其它程序调用,有点相似库,包本人自身也能够作为一个可执行程序。绝对于库,包提供了一个比拟高层的形象,能够基于包的概念做很多配置,比方依赖、包类型、编译产物等。 在命令行中应用 SwiftPM当装置好 Xcode 命令行工具后,SwiftPM 也就能够应用了,能够用 SwiftPM 的命令行工具来对包进行各种操作。 新建包以下命令能够新建一个包: mkdir Hellocd Helloswift package init在 swift package init 命令之后如果不指定 --type 参数,默认会创立一个库类型的包。能够通过 --type 来创立其它的包。 swift package init --type executable以上会创立一个可执行的包,可执行的包就是蕴含 main 函数的包,它能够被操作系统加载并执行。 默认状况下,包名和文件夹的名字一样,如果你心愿指定一个别的包的名称,能够加上 --name 参数: swift package init --name <包名>创立好的包目录构造如下: ├── Package.swift ├── README.md ├── Sources │ └── Hello │ └── Hello.swift └── Tests ├── HelloTests │ └── HelloTests.swift └── LinuxMain.swift 默认的构造规定 Sources 目录中能够有一个或多个子目录,每个子目录代表一个 target。 ...

February 11, 2023 · 5 min · jiezi

关于ios:云音乐-iOS-跨端缓存库-NEMichelinCache

本文作者:绎推背景在云音乐全面转跨端的时代,H5 / RN 缓存模块是十分重要的组成部分,对页面的稳定性,页面性能等都有十分大影响,目前云音乐应用的缓存库曾经“历史悠久”,没法在现有的根底上来撑持日益宏大的跨端需要,面临着以后架构没法修复的问题: 后盾 wake up问题与后盾频繁 I / O 操作导致的解体 - 据统计,最高50%以上的后盾解体是老缓存库导致主线程偶现卡死问题 - 线程治理问题RN / H5 页面偶现空白问题 - 数据不统一导致Fatal Exception,Bundler Error等降级错误率高RN unregister module 谬误高大量细散反复日志,节约网络资源没有整体日志监控,难以定位问题因而咱们基于缓存库的可扩大架构,从问题登程,从新设计了一套新的跨端缓存库 - NEMichelinCache,全文以 RN 缓存的角度来形容 缓存首先咱们要晓得缓存的目标是什么?目标是以空间换工夫。说起缓存,很多人会想到操作系统的缓存设计以及缓存中的直写与回写模式(Write Through and Write Back)。 直写模式 CPU 将数据同时更新到 Cache 和 Memory 中长处有助于数据恢复(在停电或系统故障的状况下)Cache 和 Memory 数据始终保持统一间接 I / O 拜访,能够获取到最新数据毛病慢写操作多回写模式 CPU 将数据更新到 Cache 时,对 Cache 做一个标记,但不同步更新到 Memory 中(异步更新)长处速度快写操作少毛病容易造成 Cache 和 Memory 数据不统一间接 I / O 拜访,不能获取到最新数据思考对于一个跨端缓存库计划,次要思考以下几个方面: 如何解决目前面临的问题:收集缓存库相干问题,从问题登程设计解决方案如何进步缓存的稳定性:须要综合缓存的优缺点,在数据一致性,读写速度等方面思考计划谬误疾速定位能力:针对各个阶段的谬误,设计谬误上报模块,须要做到不多报、不误报、不漏报欠缺的日志模块:以本地回捞日志(贮存于客户端,须要时通过指令上报的debug日志)为主,缩小服务端压力,尽量保障日志的信息量足缓存库新老切换老本:AB 切换老本,新老缓存迁徙老本,各指标定义等业务拓展性:针对数据源,缓存类型等,给业务提供拓展点业务接入老本:内置通用计划,升高接入老本通过各方调研,跨端缓存计划有些相似回写模式,然而须要着重关注回写的毛病。 问题解决方案从缓存的回写模式毛病登程 保证数据一致性:保障内存缓存、引擎、磁盘缓存数据一致性不提供任何 I / O 间接拜访缓存的办法给业务方因缓存库导致的后盾解体 / 主线程卡死问题线程模块设计 - 设计线程池,保障 I / O 操作/耗时操作都在次线程实现下载更新模块 - 以保证数据一致性为外围,责任链模块设计,各节点性能原子化,保障耗时操作在次线程实现数据库模块设计 - 对立治理,FMDB Queue降级谬误 / 加载失败 / 页面空白 / 卡片模块隐没空白 / unregister module等引擎谬误同步数据库机会 - 齐全胜利后同步,保障磁盘缓存必是可用的数据库模块 - 反对事务,可 Fallback,保障出错时可回退缓存多版本并存 - 保障本地 Bundle 缓存互不烦扰援用计数模块 - 用于清空缓存,保障应用中的缓存不被提前清空接口批改 ...

February 10, 2023 · 2 min · jiezi

关于ios:百度APP-iOS端内存优化原理篇

一、Mach虚拟内存1.1 Mach内存简介iOS零碎架构可分为内核驱动层(Kernel and Device Drivers Layer)、外围操作系统层(Core OS )、外围服务层(Core Services layer)、媒体层(Media layer可触摸层&应用层(Cocoa&Application layer),内核驱动层就是咱们常常提到的Darwin,Darwin是苹果公司于2000年公布的一个开源操作系统,是由XNU和一些其余的Darwin库组成,XNU是由苹果公司公布的操作系统内核,XNU蕴含三局部:Mach、BSD、I/O Kit。 Mach是一个由卡内基梅隆大学开发的计算机操作系统微内核,是XNU内核,是作为 UNIX 内核的代替,次要解决 UNIX 所有皆文件导致形象机制有余的问题,为古代操作系统做了进一步的形象工作。Mach 负责操作系统最根本的工作,包含过程和线程形象、处理器调度、过程间通信、音讯机制、虚拟内存治理、内存保护等。在iOS零碎架构中,内存治理是由在Mach层中进行的,BSD只是对Mach接口进行了POSIX封装,不便用户态过程调用。 1.2 Mach虚拟内存的特点1.2.1 虚构段页式内存治理页是内存治理的根本单位, 在 Intel 和 ARM 中,通常为4K,罕用的查看虚拟内存的命令:hw.pagesize 查看默认页面大小; vm\_page\_free\_count:以后闲暇的 RAM 页数;vm\_stat(1) - 从零碎范畴的角度提供无关虚拟内存的统计信息。在 iOS ARM64机型中page size是16K,在 JetsamEvent 结尾的系统日志里pageSize 代表以后设施物理内存页的大小。 1.2.2 iOS零碎没有替换空间手机自带的磁盘空间也很小,属于宝贵资源,同时跟桌面硬件比起来,手机的闪存 I/O 速度太慢,所以iOS零碎没有替换空间;对于Mac零碎,参考 Apple 官网文档About the Virtual Memory System,Mac 上有替换空间有换页行为,也就是当物理内存不够了,就把不沉闷的内存页暂存到磁盘上,以此换取更多的内存空间。 1.2.3 内存压缩技术内存压缩技术是从 OS X Mavericks (10.9) 开始引入的 (iOS 则是 iOS 7.0 开始),能够参考官网文档: OS X Mavericks Core Technology Overview, 在内存缓和时可能将最近应用过的内存占用压缩至原有大小的一半以下,并且可能在须要时解压复用。简略了解为零碎会在内存缓和的时候寻找 inactive memory pages 而后开始压缩,达到开释内存的成果,以 CPU 工夫来换取内存空间,NSPurgeableData是应用该技术典型的数据结构。所以掂量内存指标肯定要记录 compressed内存 ,另外还须要记录被压缩的 page 的信息。 ...

February 9, 2023 · 7 min · jiezi

关于ios:iOS逆向与安全系统推送服务APNS拦截

前言通过之前的分享,置信大家曾经把握了用户级的插件开发。勤奋好学的你是否对系统级的插件也有着浓重的性趣,本篇文章将和大家一起学习如何剖析并编写一款零碎级的插件。 一、指标一步步剖析并编写一个拦挡零碎推送的deb插件 二、工具mac零碎已越狱iOS设施:脱壳及frida调试IDA Pro:动态剖析 三、步骤1、守护过程守护过程(daemon)是一类在后盾运行的非凡过程,用于执行特定的零碎工作。例如:推送服务、人脸解锁、iCloud、查找我的iPhone、iMessage等。相应的配置目录:/Library/LaunchAgents:管理员管制特定用户的代理/Library/LaunchDaemons:管理员提供的零碎级守护过程(cydia、filza、frida等就在这)/System/Library/LaunchDaemons:iOS提供的默认守护过程常见的过程配置文件有: 名称 形容com.apple.apsd 推送服务com.apple.biometrickitd.pearl 人脸解锁com.apple.clouddiCloudcom.apple.icloud.findmydeviced查找我的iPhonecom.apple.imagent 即时消息代理 (iMessage)更多服务请参考https://www.theiphonewiki.com... 2、定位要害函数应用命令frida-trace -U -m "*[UILabel setText:]" SpringBoard后,收到告诉后的日志如下: 66907 ms -[UILabel setText:挪动端小陈] 66907 ms UILabel setText called from:0x1e54aa12c UserNotificationsUIKit!-[NCNotificationContentView setSecondaryText:]0x1e5475474 UserNotificationsUIKit!-[NCNotificationShortLookView setSecondaryText:]0x1e543bd1c UserNotificationsUIKit!-[NCNotificationViewController _updateWithProvidedStaticContent]0x1e54b68b4 UserNotificationsUIKit!-[NCNotificationShortLookViewController _updateWithProvidedStaticContent]0x1e543b6ec UserNotificationsUIKit!-[NCNotificationViewController setHasUpdatedContent]0x1e543c450 UserNotificationsUIKit!-[NCNotificationViewController viewDidLoad]0x1ea9fe224 UIKitCore!-[UIViewController loadViewIfRequired]0x1ea9fe628 UIKitCore!-[UIViewController view]0x1eaa15dd4 UIKitCore!-[UIViewController _setPresentationController:]0x1eaa0e1f4 UIKitCore!-[UIViewController _presentViewController:modalSourceViewController:presentationController:animationController:interactionController:completion:]0x1eaa0fccc UIKitCore!-[UIViewController _presentViewController:withAnimationController:completion:]0x1eaa123a8 UIKitCore!__63-[UIViewController _presentViewController:animated:completion:]_block_invoke0x1eaa128a4 UIKitCore!-[UIViewController _performCoordinatedPresentOrDismiss:animated:]0x1eaa12300 UIKitCore!-[UIViewController _presentViewController:animated:completion:]0x1eaa12560 UIKitCore!-[UIViewController presentViewController:animated:completion:]0x1010d78e0 /System/Library/CoreServices/SpringBoard.app/SpringBoard!-[SBNotificationBannerDestination _presentNotificationViewController:modal:forRequest:sourceAction:completion:]持续应用命令frida-trace -U -m "*[SBNotificationBannerDestination _presentNotificationViewController:modal:forRequest:sourceAction:completion:]" SpringBoard后,收到告诉后的日志如下: 13037 ms -[SBNotificationBannerDestination _presentNotificationViewController:0x10286f400 modal:0x0 forRequest:0x2825bb2c0 sourceAction:0x0 completion:0x0] 13037 ms SBNotificationBannerDestination called from:0x1013ba3e8 SpringBoard!0x4363e8 (0x1004363e8)0x1be00ca38 libdispatch.dylib!_dispatch_call_block_and_release0x1be00d7d4 libdispatch.dylib!_dispatch_client_callout0x1bdfbb008 libdispatch.dylib!_dispatch_main_queue_callback_4CF$VARIANT$mp0x1be560b20 CoreFoundation!__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__0x1be55ba58 CoreFoundation!__CFRunLoopRun0x1be55afb4 CoreFoundation!CFRunLoopRunSpecific0x1c075d79c GraphicsServices!GSEventRunModal0x1eafa7c38 UIKitCore!UIApplicationMain0x1d4219a70 FrontBoard!FBSystemAppMain0x10116db98 SpringBoard!0x1e9b98 (0x1001e9b98)0x1be01e8e0 libdyld.dylib!start依据以上日志,只能看到上一层级的函数是一个地址。咱们先把/System/Library/CoreServices/目录的SpringBoard.app文件导出到电脑(可应用爱思或其余工具),再应用IDA Pro工具关上,搜寻_presentNotificationViewController后,找到该函数: ...

January 16, 2023 · 4 min · jiezi

关于ios:iOS字符串NSString转换为emoji表情的方式

emoji的表情存成uint32的模式,如0x1f60d、0x1f603等,能够通过零碎办法转换为emoji的表情,emoji表情能够间接复制到其余中央关上。失常存储往往以字符串的模式保留。以下为Swift及oc版本的字符串转emoji表情的形式。 Swift代码: let code = "0x1f603"//创立扫描器let scanner = Scanner(string: code)var result: UInt32 = 0//利用扫描器扫出后果scanner.scanHexInt32(&result)//将后果转换成字符let c = Character(UnicodeScalar(result)!)//将字符转换成字符串let emojiCode = String(c)oc代码: NSString *emojiString = @"0x1f60d";NSScanner *scanner = [NSScanner scannerWithString:emojiString];uint32_t intCode = 0;[scanner scanHexInt:&intCode];NSString * result = [[NSString alloc] initWithBytes:&intCode length:4 encoding:NSUTF32LittleEndianStringEncoding];

January 16, 2023 · 1 min · jiezi

关于ios:极光笔记-如何为-iOS-16-创建一个实时活动

01、iOS 16 中的 Live Activity (实时流动)是什么?依据 Apple 官网形容,“实时流动是一项新性能,可帮忙用户间接从锁定屏幕实时获知各种事件的停顿,例如体育比赛、锤炼、拼车或送餐订单进度等等” 。 例如,您从美团或者饿了么点了份外卖,而后将手机放在一边开始工作;一段时间后,当您想要查看订单状态时,实时流动使您能够从锁定屏幕或灵动岛上执行此操作,您无需解锁 iPhone 即可查看订单进度,您的工夫和精力都失去了节俭。 Apple 提供了 Live Activities 的 API,开发者能够借助这些 API 在本人的应用程序中疾速实现相似送餐订单进度、出租车的达到工夫、计时器进度、球赛最新比分等场景的性能。 在 iPhone 14 Pro 上,如果解锁设施,“实时流动”信息还会呈现在灵动岛。在锁定屏幕上,实时流动显示在屏幕底部。在反对 Dynamic Island 的设施上,Live Activity 也会呈现在 Dynamic Island 中。 在应用程序中,开发者须要应用 ActivityKit 来配置、启动、更新和完结 Live Activity,并应用 SwiftUI 和 WidgetKit 的小部件扩大创立 Live Activity 的用户界面。这使得 Live Activity 的演示代码相似于小部件代码,并反对开发者在小部件和 Live Activity 之间代码共享。然而,与小部件相比,不同于小部件应用时间轴机制更新,Live Activity 应用 ActivityKit 从应用程序接管更新的数据,或者通过近程推送告诉接管更新。 问:iOS 实时流动卡片是 iOS 小组件吗? 答:不齐全是;与小组件相比,Live Activity 应用的机制不同:Live Activity 接管的更新是通过近程推送告诉或通过ActivityKit 从应用程序自身接管的;而小组件应用的是TimeLine刷新机制。 除了下面提到的场景,实时流动还能够用于帮忙用户跟踪或获取无关航班、实时资讯、靠近的游乐场所、交通拥堵状况、包裹快递状态等的更新,让企业能够和终端用户放弃连贯和互动,从而疾速晋升 App用户活跃度,帮忙晋升转化。 02、通过极光实现 LiveActivity(实时流动)推送性能苹果设计上,应用 PushToken 来一对一的更新 LiveActivity,极光减少了 LiveActivityId 的定义:开发者对于实时流动的自定义标识,可对应多个 LiveActivity PushToken,不便批量更新/完结流动。比方下面场景举例中:对于球赛这种流动类的,开发者能够标记成同一个 LiveActivityId;对于外卖这种订单类的,可能就得每个订单一个LiveActivityId 了。 ...

January 11, 2023 · 1 min · jiezi

关于ios:社交场景下iOS消息流交互层实践

图片来自:https://unsplash.com/photos/m...本文作者:旭风背景一款社交产品的诞生,离不开即时通讯(IM)场景。随着团队业务幅员在社交畛域的布局,诞生了多个社交场景APP,波及的IM场景,蕴含私聊、群聊、聊天室等。 这些IM场景,在音讯流的展现模式上是极为类似的,同时每个业务又有着本人非凡的交互需要。基于此,咱们对IM音讯流能力做了标准化的构建,来缩小IM性能的业务接入老本;同时也是为了对立各个业务的技术计划,缩小跨业务开发的了解和保护老本。本文次要针对iOS端在IM音讯流交互层的设计上,提供一些实际思路。 业界计划目前业界有各种即时通讯服务商(例如云信、LeanCloud等)提供的配套交互层解决方案,其大多以就义灵活性来满足疾速集成须要,在定制能力上远不能胜任咱们业务须要。再者则是诸如 MessageKit 之类的社区IM框架,其在视觉交互体现上性能齐备,能帮忙咱们疾速、灵便搭建音讯流构造,但业务须要的是一套残缺的携带音讯交互能力的计划,因而对此类框架,仍须要做不小的革新能力适应咱们的业务。 思考对于一个音讯流交互层计划,次要思考几个方面: 标准的音讯流构造:提供音讯流视图构造规范化的构建形式规范的音讯交互能力:对立音讯交互能力,业务方按需应用,疾速集成业务拓展性:针对数据源、音讯交互能力提供业务灵便拓展点业务接入老本:内置通用交互计划,升高业务接入老本目前,咱们存量业务中的IM场景,底层IM能力次要由云信引擎提供。同时又存在基于业务服务端,通过HTTP去交互的场景。另外,还须要预留前期切换IM引擎的可能性,因而须要将交互层IM能力形象进去。此外,为了适应团队现状,减小业务接入老本,思考将云信提供的交互能力内置在计划中。 整体设计设计愿景:提供标准化的能力,同时对拓展凋谢。咱们冀望一套通用的音讯流能力,可能在计划上标准化。这里的标准化,次要蕴含音讯流构造构建的标准化,以及音讯交互能力的标准化。同时,计划须要在交互能力上适应不同业务场景,因而采纳依赖注入的形式,提供业务定制能力。 依照职能划分,将框架整体分为了两层: 音讯流结构层:负责音讯流构造的构建,定义音讯视图、布局、数据上的标准,提供业务层别离在「音讯」、「会话」两个维度的配置能力。音讯交互层:提供音讯能力、音讯流、音讯数据方面的交互能力,向下依赖交互接口,内置规范交互能力的同时,也反对业务按需注入交互实现。流构造音讯组件不同的业务场景,音讯流款式体现必然有所差别。上面列出了咱们几个业务中的音讯流界面: 如何设计一套通用的音讯流视图构造,满足不同业务须要?通过对各个业务以及一些支流IM工具的察看,将音讯视图结构设计成如下构造,是可能满足咱们各个IM场景须要的: 我将音讯构造拆分成了5局部,对应5个音讯组件 MessageView ,每个音讯组件都反对业务对其「款式」、「显隐」、「布局」进行配置,从而满足不同场景定制须要。 MessageView作为根底音讯组件,提供了一些规范能力,例如是否响应菜单动作 canPerformMenuAction 、视图重用回调机会 prepareForReuse 、尺寸策略等。 open class MessageView: MessageAbstractView { public var canPerformMenuAction = false open func refresh(with message: Message) {} open func prepareForReuse() {} open class func createSizeStrategy(message: Message, fittingSize: CGSize) -> MessageLayoutSizeStrategy? { // ... }}尺寸策略音讯组件尺寸作为音讯流布局上不可或缺的因素,计划提供了多种尺寸计算策略 MessageLayoutSizeStrategy : 主动布局计算策略:业务方对音讯组件应用 AutoLayout 布局时应用,外部会根据束缚主动计算好组件尺寸SizeThatFit 策略:根据组件 SizeThatFit 办法返回的尺寸进行布局自定义策略:提供自定义尺寸计算形式public protocol MessageLayoutSizeStrategy { func caclulateSize(_ sizeViewType: MessageView.Type, message: Message, fittingSize: CGSize) -> CGSize}public struct MessageAutoLayoutSizeStrategy: MessageLayoutSizeStrategy { public func caclulateSize(_ sizeViewType: MessageView.Type, message: Message, fittingSize: CGSize) -> CGSize { // ...省略其余代码 return sizeView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize) } }public struct MessageSizeThatFitsStrategy: MessageLayoutSizeStrategy { public func caclulateSize(_ sizeViewType: MessageView.Type, message: Message, fittingSize: CGSize) -> CGSize { // ...省略其余代码 return sizeView.sizeThatFits(fittingSize) }}布局快照咱们还针对音讯组件维度反对了布局快照。通常当一个音讯组件尺寸固定,在交互过程中尺寸不会产生的状况下,关上布局快照,以缩小布局计算耗费。同时也提供了快照革除的能力。咱们对多个音讯流在疾速滚动过程中的CPU峰值做了统计,在应用主动布局尺寸策略的状况下,开启布局快照,峰值升高了10%~20%。 ...

January 9, 2023 · 2 min · jiezi

关于ios:探究-iOS-内存问题

本文从 Tagged Pointer、objc 源码、dealloc 原理、AutoreleasePool 原理、野指针探索等技术点开展聊了聊 iOS 内存相干问题。定时器内存透露NSTimer、CADisplayLink 的 根底 API [NSTimer scheduledTimersWithTimeInterval:1 repeat:YES block:nil] 和以后的 VC 都会相互持有,造成环,会存在内存透露问题。 定时器内存透露起因,解决方案以及高精度定时器,具体能够看这篇 NSTimer 中的内存泄露 。 iOS 内存布局栈、堆、BSS、数据段、代码段 栈(stack):又称作堆栈,用来存储程序的局部变量(但不包含static申明的变量,static润饰的数据寄存于数据段中)。除此之外,在函数被调用时,栈用来传递参数和返回值。栈内存地址越来越少 func a { 变量 1 地址最大    变量 2 地址第二大    // ...    变量n  地址最小}堆(heap):用于存储程序运行中被动态分配的内存段,它的大小并不固定,可动静的扩张和缩减。操作函数(malloc/free)。调配的内存空间地址越来越大。 BSS段(bss segment):通常用来存储程序中未被初始化的全局变量和动态变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段输出动态内存调配 数据段(data segment):通常用来存储程序中已被初始化的全局变量和动态变量和字符串的一块内存区域。数据段蕴含3局部: 字符串常量。比方 NSString *str = @"杭城小刘";已初始化数据:曾经初始化的全局变量、动态变量等未初始化数据:未初始化的全局变量、动态变量等代码段(code segment):编译之后的代码。通常是指用来存储程序可执行代码的一块内存区域。这部分区域的大小在程序运行前就曾经确定,并且内存区域通常属于只读,某些架构也容许代码段为可写,即容许批改程序。 上 Demo 验证 int a = 10;static int b;int main () { NSString *name = @"杭城小刘"; int age = 27; int height = 177; NSObject *obj = [[NSObject alloc] init]; NSLog(@"\na: %p\nb: %p\n name: %p\nage: %p\n height: %p\nobj:%p", &a, &b, &name, &age, &height, obj);}a: 0x107b09b80b: 0x107b09c48name: 0x7ff7b83fdbc0age: 0x7ff7b83fdbbcheight: 0x7ff7b83fdbb8obj:0x6000012780e0咱们依照内存地址由低到高排个序(如下),发现和咱们总结的法则统一。 ...

December 29, 2022 · 26 min · jiezi

关于ios:iOS-SIGKILL-信号量崩溃抓取以及优化实践

一、什么是SIGKILL解体很多时候,当咱们在解体日志中看到 SIGKILL 要害信息的时候,这就示意操作系统从下层杀死了咱们的过程,也就是咱们常说的 kill -9 命令。 Exception Type: EXC_CRASH (SIGKILL)Exception Codes: 0x0000000000000000, 0x0000000000000000Exception Note: EXC_CORPSE_NOTIFYTermination Reason: Namespace RUNNINGBOARD, Code 0xdead10cc一般来说,Apple 解体日志外面通常都会蕴含应用程序被杀死的具体的起因。如上所示,Termination Reason 外面就蕴含了这个解体的错误代码 0xdead10cc,就示意应用程序挂起的时候产生了文件和数据库锁操作而被操作系统杀死。 二、怎么抓取SIGKILL解体1 为什么SIGKILL不能被捕捉和其余信号不同,SIGKILL 是不可被捕捉的。这是 Linux / Mach 内核的限度,这种限度就是为了让操作系统在程序无奈响应的时候,能够从上一层管制过程的生命周期。 2 应用 MetricKit 框架捕捉SIGKILL2.1 Metrickit 是什么MetricKit 框架是苹果在 iOS13 零碎开始引入的用来汇总和剖析无关异样和解体诊断以及电源和性能指标的动静库。 2.2 应用Metrickit 收集 SIGKILL信号量 的益处不须要注册信号量捕捉回调函数不须要时刻监控,只需冷启阶段注册获取一次就行2.3 怎么应用 Metrickit 获取解体信息2.3.1 增加 MetricKit 动静库依赖 2.3.2 注册 MetricKit 监听者if (@available(iOS 14.0, *)) { MXMetricManager *manager = [MXMetricManager sharedManager]; if (self && manager && [manager respondsToSelector:@selector(addSubscriber:)]) { [manager addSubscriber:self]; }} 2.3.3 监听者实现MXMetricManagerSubscriber协定办法,payloadDic外面蕴含着上次本利用产生的解体日志堆栈和信息 // 用户如果有解体数据,注册监听之后就会回调- (void)didReceiveDiagnosticPayloads:(NSArray<MXDiagnosticPayload *> * _Nonnull)payloads API_AVAILABLE(ios(14.0)){ if (@available(iOS 14.0, *)) { for (MXDiagnosticPayload *payload in payloads) { NSDictionary *payloadDic = [payload dictionaryRepresentation]; }); } }}2.3.4 当收到回调音讯后,须要对要害信息做组装,获取解体堆栈和相干要害信息NSArray *callStackRootFrames = [dicFrame ArrayValueForKey:@"callStackRootFrames"];if (callStackRootFrames.count <= 0) { continue;}NSDictionary *dicZero = [callStackRootFrames ObjectAtIndex:0];int rootIndex = 0;while (dicZero && dicZero.count > 0) { //获取Image 的 UUID NSString *binaryUUID = [dicZero stringValueForKey:@"binaryUUID"]; //获取Image 的 名称 NSString *binaryName = [dicZero stringValueForKey:@"binaryName"]; //获取Image 的加载地址 long long baseAdd = [[dicZero NumberValueForKey:@"offsetIntoBinaryTextSegment"] longLongValue]; //获取解体函数的地址 long long address = [[dicZero numberValueForKey:@"address"] longLongValue]; //看上一层调用堆栈的 NSArray *subFrames = [dicZero arrayValueForKey:@"subFrames"]; [strStack appendFormat:@"%d %@ 0x%llx 0x%llx + %lld\n", rootIndex, binaryName, baseAdd, address, address - model.baseAddress]; rootIndex++; if (subFrames && subFrames.count >= 0) { dicZero = [subFrames ObjectAtIndex:0]; } else { dicZero = nil; }}2.3.5 应用 Metrickit 收集解体的有余只反对 iOS14 当前的解体日志收集;PS:MetricKit是iOS13开始有的框架,然而解体日志的反对是iOS14开始反对的。解体日志没有返回具体的解体工夫和启动工夫,解体场景信息除了堆栈外没有其余信息,附加信息较少,须要另外的伎俩来收集如果应用了段迁徙编译技术,主程序 Mach-O 的加载地址和 uuid MetricKit无奈给出正确的值,须要例外解决。可通过 Mach-O文件的LC-MAIN入口来获取主程序main函数的地址,从而算出加载其起始地址。 ...

December 1, 2022 · 2 min · jiezi

关于ios:iOS组件化

Vue组件化 与 iOS 的业务组件化(模块化)iOS 组件化Modular Vue一. 组件化的需要Vue.js的两个外围数据驱动和组件化 为了进步代码复用性,缩小重复性的开发,咱们就把相干的代码依照 template、style、script 拆分,封装成一个个的组件。组件能够扩大 HTML 元素,封装可重用的 HTML 代码,咱们能够将组件看作自定义的 HTML元素。 二. 如何划分组件通常一个利用会以一棵嵌套的组件树的模式来组织: 三. 组件分类组件的品种可分为以下4种: 一般组件动静组件异步组件递归组件一般组件 import tem from './components/tem' ...{ components: {tem} // 注册}动静组件 var vm = new Vue({ el: '#example', data: { currentView: 'home' }, components: { home: { /* ... */ }, posts: { /* ... */ }, archive: { /* ... */ } }})<component v-bind:is="currentView"> <!-- 组件在 vm.currentview 变动时扭转! --></component>异步组件 ...

November 28, 2022 · 2 min · jiezi

关于ios:iOS-App上架App-Store详细教程

留神:下载AU后需装置java8运行环境能力启动;装置好了最新Java8运行环境,解压AU软件包, 无需装置,Windows 64位零碎点击appuploader.exe启动;如果是Linux/Windows 32位零碎或 Mac零碎双击appuploader.jar即可启动;间接用苹果账号即可登录应用留神:appuploader并 不是收费的,他只能够试用一个月,一个月之后能够点击激活进行付费 如果开启了手机验证码登录,获取验证码输出登录,在手机短信或者苹果手机间接弹出验证码 Appuploader能够很不便的间接在Windows电脑申请证书和治理证书,上传ipa文件,不须要苹 果电脑;首次接触Appuploader的搭档,通过以下介绍,清晰Appuploader的具体用法。首页功 能页头的快捷性能,能够间接点击进入苹果开发者核心,iTunes Connect,上架要登录这些网 站,能够很不便的进入;也能够间接进入Appuploader的官网,查看证书申请,真机调试上架等 具体教程: 证书性能p12模块,有ID/名称/证书类型/过期工夫/下载性能显示 1.id是证书的一个编码 2.名称,推送证书会显示appid,其余证书显示账号的名称 3.证书类型/公布证书(iOS Distribution),开发证书(iOS Development),开发推送证书 (APNs Development iOS),公布推送证书(Apple Push Services) 4.过期工夫,证书是一年有效期,到期从新申请5.下载,能够间接下载p12文件,间接到开发工 具打包证书性能,形容文件模块形容文件类型;公布形容文件(iOS Distribution),开发形容 文件(iOS Development)Active这个显示阐明证书无效,如果是Invalid阐明证书生效了,删 除从新创立上传ipa性能点击提交,抉择要上架的ipa就行了。 点击右上角,设置,能够设置为保留明码,这样不必每次登陆都输出明码 iOS证书申请和真机调试测试,上架App Store的请查看具体教程,联合Appuploader应用,疾速 的帮忙测试app和上架app

November 24, 2022 · 1 min · jiezi

关于ios:2022最新整理iOS-app上架app详细教程

上架iOS须要一个付费688的开发者账号,还没有的话申请一个或者借用。 申请苹果开发者账号教程上架App Store之前是先装置到苹果手机测试调试好,app能失常运 行再上架iOS真机调试测试教程上架过程分七个步骤,按步骤一步步来。认真看这个流程, 少走很多弯路,不必一步步去试错,节省时间。 1、创立APP身份证(App IDs) 2、申请iOS公布证书 3、申请iOS公布形容文件 4、上传ios证书编译打包IPA 5、在iTunes Connect创立App 6、Windows下上传IPA到App Store 7、上传好IPA回到iTunes Connect填写APP信息并提交审核 一、创立惟一标示符BundleID (App IDs)APP IDs在前面创立公布文件,创立APP时都要用 到。(appid十分重要,整个上架流程就是用appid关联在一起)如果之前iOS真机调试时创 建过了,就不必从新创立了,还是用那个appid。首先关上开发者核心 https://developer.apple.com/a...,进入证书页面。 1.1点击证书、ID及配件文件,进入设置。很多搭档登录开发者核心没有这个界面进去,那 是因为没有付费成为开发者。能够看 免开发者账号申请ios证书真机调试的教程 1.2抉择App IDs –>点击+创立一个新的App ID其中有两项须要你本人填:第一项Name,用来 形容你的App ID,这个轻易填,没有什么限度,最好是项目名称,这样不便本人辨识(不允 许中文)第二项Bundle ID (App ID Suffix),这是你App ID的后缀,须要认真填写。用来 标示咱们的 app,使它有一个固定的身份,和你的程序间接相干。填写 Explicit App ID 的格局为:com.company.appName(要有两个点.)照着格局写,写个不便记的.像这串 com.yesgame.tianbiao就是appid了,前面申请ios证书、打包ipa和在itunesconnect创立 APP就是用这个格局的appid。整个app上架流程就是靠这个appid关联在一起。第三项配置服 务权限,默认会抉择2项,不能批改,其它罕用的苹果领取,APP推送告诉,依据本人须要的 服务抉择上,而后点击Continue确认,下一步。抉择苹果领取和推送告诉,还须要创立对应 的iOS苹果领取证书和iOS推送证书。个别没什么要求默认就好。查看下没有错的话间接点击 Register后点击Done实现App ID的创立。 二、申请公布证书iOS各类证书申请教程、各种证书用法不同。iOS开发证书申请(xcode开 发手机测试)iOS公布证书申请(公布上架App Store)iOS推送证书申请(APP推送告诉) iOS真机调试证书申请(装置到非越狱手机测试)iOS企业证书申请(免上架App Store装置 手机应用)这里是上架App Store所以申请iOS公布证书2.1关上Appuploader,输出苹果开发 者核心账号,登录。 如果还没装置Appuploader先装置好Appuploader装置教程关上Appuploader,用苹果开发者 账号登录。 2.2、抉择证书选项 2.3、点击右下角+ADD抉择,下拉抉择公布证书,输出证书名称(不要中文、随便设置), 邮箱(随便),明码(证书的明码、比方设置123这样,不必很简单,记好、打包时要用、 很重要)、点击ok创立。留神:iOS公布证书最多能申请3个,如果账号曾经有3个公布证书 了,将申请报错。一个公布证书能够用于多个APP上架,不是说只能申请3个公布证书就只能 上架3个app,齐全不必每个app都申请个公布证书p12,辨别开上面步骤申请的的形容文件就 行了。也能够删掉之前的公布证书,从新创立,不会影响已上架的app。 2.4、创立胜利后,找到刚创立的公布证书,点击p12 文件,下载保留.p12证书文件到电脑。 ...

November 24, 2022 · 1 min · jiezi

关于ios:React-native-ios上架

1.申请开发者账号,去苹果开发者核心申请2.applicationloader 集申请证书、真机调试、公布于一身,防止繁琐的官网申请过程http://kxdang.com/topic/appup...3.具体的公布过程https://jingyan.baidu.com/art...4.xcode配置证书http://kxdang.com/topic/appup...5.react native 打包https://www.jianshu.com/p/f75...6.审核注意事项 须要受权的字段,需具体增加应用目标;iphoneX 截图需iphoneX 的手机非iphone的截图为非iPhone X系列手机的截图

November 21, 2022 · 1 min · jiezi

关于ios:iOS之APP上架

 前几天在忙着上线,只管之前曾经上线过一次,但因为自身比拟菜,还是情况百出. 好在明天终于胜利提交,因而来写写心得. 接下来我讲一讲对于我版本更新过程中的一些问题.  Bundle Identifier :         检查一下当初的id 是够跟上一个版本的统一,如果不统一,那么可能你须要从新下载证书之类的. 而后进行打包上传至appStore.(个别倡议保持一致.我就是因为之前版本是外包公司做的,而后本人开发的时候将这个改了,所以绕了很多弯路)  进入 https://itunesconnect.apple.com/         在我的app 中点击之前版本进入详情. 增加新版本  (点击内部的+ 号是公布新利用,只是更新的话就没必要了)  上传屏幕截图要留神以下几点:  尺寸问题:以下是正确的尺寸        3.5:  640 x 920 640 x 960 960 x 600 960 x 640        4.0:  640 x 1096 640 x 1136 1136 x 600 1136 x 640        4.7:  750 x 1334 1334 x 750        5.5:  1242 x 2208 2208 x 1242       iPad: 1024 x 748 1024 x 768 2048 x 1496 2048 x 1536 768 x 1004 768 x 1024 1536 x 2008 1536 x 2048       iPad Pro: 2732 x 2048 2048 x 2732       ICON 一张1024 x 1024的利用图标    注:如果是因为尺寸不正确,会提醒xxxx wrong 若提醒 无奈上传您的文件,请再试一次.     a.能够先尝试将之前的版本的截图上传试试,如果之前的图片上传胜利了,当初的图片上传不胜利,那么就是当初的图片有问题了,让美工从新切,切图需注意:图片不能含透明度.即 Alpha通道:否, 必须为JPG 或PNG 格局,最低分辨率至多为 72 DPI,并采纳RGB色调空间,且不能蕴含图层或圆角. 另外:文件名称不能为中文.     b.如果之前的图片上传报同样的谬误,那么你就得检查一下版本了.  自己就是因为将版本填错了,导致折腾了一天才弄好.    注:在苹果开发文档上看到说不能显示状态栏,然而上传的图外面有状态栏也上传胜利了.还有,状态栏局部千万不要弄错了,我第一次上架的时候就是因为将安卓的图片拿过去,让美工改一下尺寸就上传了,最初导致被拒了.       如果公司没有美工,没人给你切图怎么办呢? 用模拟器截吧. 将模拟器放到最大,而后快捷键com+s ,轻松就搞定啦. 对于IDFA    提交的时候会提供抉择,如果利用中应用了IDFA,就会让你答复一系列的问题,最初有可能也会被拒.   查看IDFA 的办法:         1、关上终端cd到要查看的文件的根目录。         2、执行下列语句:grep -r advertisingIdentifier .   (别少了最初那个点号)。    而后你就能够找到罪魁祸首了.找到了问题出在哪里,就好隔靴搔痒了.  提交审核了,心愿尽快审核怎么办?      给苹果发邮件申请加急审核(https://developer.apple.com/c...)或者打苹果开发者核心技术支持的电话(400-670-1855 ).            发邮件的时候留神: 要填写的Apple ID of App 是你的itunesconnect app 信息中的Apple ID 曾经提交审核了,发现呈现了bug怎么办?   能够应用JSPath. 举荐:http://www.methodname.com/jsp...好了,我的教训大略就是这些了,心愿会对你们有用. 有什么有余的中央也心愿大家能提出来.  ...

November 21, 2022 · 1 min · jiezi

关于ios:iOS上架的坑

有3D-touch机型的坑昨天在上线的时候遇到了一个坑,最初导致的后果是找了好几个小时,间接到中午能力上线。入正题: 坑是:我的项目运行在456上没什么问题,然而在6S以上的机型就有点击事件不响应的状况呈现,我的是间接登录界面就点击按钮都没有反馈,有的时候轻点就有可能有响应,然而响应很慢。首先本人从点击事件的不响应开始去排查,发现响应事件也开着,也不是触摸范畴的问题,再者是狐疑是不是VC的层级构造的问题,开始尝试各种跳转,还是在6S上没有反馈,甚至新建了一个类控制器来跳转测试,下面就丢了一个按钮,还是没有响应,筹备奔溃。起初在百度中无心看到一个说法:我的项目中对UIButton有分类的,有可能会对3D-Touch的机型有影响的,我的天啊,而后查看我的项目,把对于UIButton的扩大去掉后,我的项目失常了。所有机型都测试一遍后,都失常了。或者是因为我的那个UIButton的分类里加了touch办法才导致这个后果,而没有写touch办法的UIButton的分类应该是没有影响的。

November 21, 2022 · 1 min · jiezi

关于ios:UIControllerView-加载之后UITableView-无法滑动到最底部

我的项目中,须要在进入 UIViewController 后对它外面的 UITableView 滑动到最底部,那么须要把代码写在 viewDidLoad 中。 上面这一行代码要使得 previewTable 这个UITableView 滑动到最底部的地位。(home.tickTasks 是我对代码中这个 tableView 的数据源,可依据理论须要设置) self.previewTable.scrollToRow(at: IndexPath.init(row: (Home.tickTasks.count - 1), section: 0), at: .bottom, animated: false)然而,不论是否须要动画,以上代码总是不能精确地滑动到指定地位,滑动的动作须要一点点工夫。 以下应用同步机制来期待一小段时间。 DispatchQueue.main.asyncAfter(deadline: .now() + 0.01) { self.previewTable.scrollToRow(at: IndexPath.init(row: (Home.tickTasks.count - 1), section: 0), at: .bottom, animated: false) }猜测,是因为代码管制对 tableView 的滑动须要在 tableView 初始化好并且把 cell 的数据加载进来之后,如下代码,若这样写,则会呈现 tableView 划不到最底部的状况。 override func viewDidLoad() { super.viewDidLoad() bindTableView() // 配置 tableView 的 dataSource、delegate 等信息 loadFromCoreData() // 加载数据到 tableViewCell 中 self.previewTable.scrollToRow(at: IndexPath.init(row: (Home.tickTasks.count - 1), section: 0), at: .bottom, animated: false) // 此时存在数据未加载实现但滑动动作异步执行,所以未滑到最底部,滑动就被终止了。 }问题出在于未加载实现就进行界面的滑动,所以咱们让对界面滑动略微提早 0.01 秒,如下代码所示 ...

November 19, 2022 · 1 min · jiezi

关于ios:iOS逆向与安全fridatrace入门

前言frida-trace是一个用于动静跟踪函数调用的工具。反对android和ios。装置教程请参考官网。工欲善其事必先利其器。本文将以某App为示范,演示frida-trace的各种办法在iOS中的利用。 一、指标让看文章的你在应用frida-trace时更得心应手。 二、工具mac零碎frida:动静调试工具已越狱iOS设施:脱壳及frida调试 三、应用1.命令格局frida-trace [options] targetiOS罕用的可选参数: // 设施相干-D 连贯到指定的设施,多个设施时应用。示例:frida-trace -D 555315d66cac2d5849408f53da9eea514a90547e -F -U 连贯到USB设施,只有一个设施时应用。示例fria-trace -U -F// 应用程序相干-f 指标利用包名。spawn模式。示例:frida-trace -U -f com.apple.www-F 以后正在运行的程序。attach模式示例。示例:frida-trace -U -F或frida-trae -UF-n 正在运行的程序的名字。attach模式。示例:frida-trace -U -n QQ-N 正在运行的程序的包名。attach模式。示例:frida-trace -U -N com.apple.www-p 正在运行的程序的pid。attach模式。示例:frida-trace -U -p 2302 // 办法相干,以下参数在一条跟踪命令中可重复使用-I 蕴含模块。示例:frida-trace -UF -I "libcommonCrypto*"-X 不蕴含模块。示例:frida-trace -UF -X "libcommonCrypto*"-i 蕴含c函数。示例:frida-trace -UF -i "CC_MD5"-x 不包名c函数。示例:frida-trace -UF -i "*MD5" -x "CC_MD5"-a 蕴含模块+偏移跟踪。示例:frida-trace -UF -a 模块名\!0x7B7D48-m 蕴含某个oc办法。示例:frida-trace -UF -m "+[NSURL URLWithString:]"-M 不蕴含某个oc办法。示例:frida-trace -UF -M "+[NSURL URLWithString:]" // 日志相干-o 日志输入到文件。示例:frida-trace -UF -m "*[* URL*]" -o run.log2.常用命令frida-trace中的办法匹配命令反对含糊匹配,星号匹配0个或多个字符,问号匹配1个字符: ...

November 18, 2022 · 3 min · jiezi

关于ios:ios-app上架流程是什么怎样避免提交审核被拒

一、上架流程1、申请开发者账号 2、创立APP ID及申请证书 3、itunes connect 创立APP 4、打包 上传APP 5、提交APP,上线胜利二、可能会遇到的问题1、App 里不应蕴含测试版的性能,不能呈现“beta”字样2、利用内蕴含查看更新性能iOS 利用的版本更新必须通过 App Store 进行,本身 App 内不能蕴含提醒更新性能。3、采集设施IDFA但利用没有广告性能Apple 回绝采集 IDFA (identifier for advertising) 却未集成任何广告服务的利用进入 App Store。4、含UGC却未提供用户协定及举报性能如果你的 App 内有发帖等UGC(用户产生内容)性能,必须提供用户协定,并留有内容举报性能,否则就会被审核回绝。5、iOS 大小写写错了被打回。在简介里如果波及到苹果的商标或者词汇,肯定一个字母都不能错,包含每个字母的大小写。6、没有提供测试账号。这个过后有点莫名其妙的,其实我的 App 不须要测试账号,起初轻易填了个,而后就过了。7、app里不容许呈现“暂未凋谢”或“敬请期待”或罗唆有个按钮点击了没反馈的状况。如果提审时有相似的问题,请把入口间接干掉,哪怕界面上空一块也没有关系。8、虚构产品不要退出第三方领取的 SDK以上内容都筹备好了的话,那最初就须要留神一下:如果你的 App 内购买我的项目是虚构产品的话,不包含实物,请不要退出领取第三方的 SDK,不然检测进去可能会被拒掉。9、审核能够分割苹果开发者客服,会有回应的

November 8, 2022 · 1 min · jiezi

关于ios:ios-app上架流程是什么怎样避免提交审核被拒

一、上架流程1、申请开发者账号 2、创立APP ID及申请证书 3、itunes connect 创立APP 4、打包 上传APP 5、提交APP,上线胜利二、可能会遇到的问题1、App 里不应蕴含测试版的性能,不能呈现“beta”字样2、利用内蕴含查看更新性能iOS 利用的版本更新必须通过 App Store 进行,本身 App 内不能蕴含提醒更新性能。3、采集设施IDFA但利用没有广告性能Apple 回绝采集 IDFA (identifier for advertising) 却未集成任何广告服务的利用进入 App Store。4、含UGC却未提供用户协定及举报性能如果你的 App 内有发帖等UGC(用户产生内容)性能,必须提供用户协定,并留有内容举报性能,否则就会被审核回绝。5、iOS 大小写写错了被打回。在简介里如果波及到苹果的商标或者词汇,肯定一个字母都不能错,包含每个字母的大小写。6、没有提供测试账号。这个过后有点莫名其妙的,其实我的 App 不须要测试账号,起初轻易填了个,而后就过了。7、app里不容许呈现“暂未凋谢”或“敬请期待”或罗唆有个按钮点击了没反馈的状况。如果提审时有相似的问题,请把入口间接干掉,哪怕界面上空一块也没有关系。8、虚构产品不要退出第三方领取的 SDK以上内容都筹备好了的话,那最初就须要留神一下:如果你的 App 内购买我的项目是虚构产品的话,不包含实物,请不要退出领取第三方的 SDK,不然检测进去可能会被拒掉。9、审核能够分割苹果开发者客服,会有回应的

November 8, 2022 · 1 min · jiezi

关于ios:关于apple上架常见问题汇总

最近在钻研apple上架的我的项目,其中发现要真正把一个我的项目上传到App Store是很艰难的,而后我去把目前遇到的问题整顿成一片文章不便当前上传再次须要和供其他人做个参考。Apple“上传谬误”解决办法 - 勾销选中“位码”和“上传您的符号”有什么区别?如果他们正在解决这个问题,Apple 会告诉咱们吗? 这无效,上传速度恢复正常。 Apple 可能没有立刻留神到这个问题,因为一些二进制文件正在失常运行。我想晓得苹果是否还晓得这个谬误。显然,新的 iOS 14 配置为失常上传搞砸了一些货色。 在这一点上,预计会抵赖问题并让咱们晓得 Apple 正在解决这个问题。 答:更多信息。仿佛曾经降级 Xcode 的人和没有降级 Xcode 的人都在让他们的二进制文件隐没。仅仅是因为咱们查看了“位码”和“上传您的符号”。 而已。这就是大故障。直到 iOS 14 掉线之前都很好。这影响着每个人。 只有敞开这些货色的二进制文件才会通过。 那么这是一个 Xcode 谬误吗?还是后端处理错误?那是苹果的工程师要找进去的。 咱们须要的是 App Store Connect 底部的一个疾速“BUG ALERT”按钮——它能够轻松地向 Apple 报告此类重要信息。 ICloud Drive 上传须要一个抉择选项iCloud Drive 上传默认上传桌面上的所有文档、文档和照片。 应该有一个选择器来抉择要上传的文件夹或右键单击“不上传”的选项。 答:我批准,但我认为这应该实用于两种形式。 应该能够强制仅本地应该能够只强制云(选择性地开释 Mac 上的空间 - 但留下一个图标,容许像明天一样下载) 据我所知,没有其余云解决方案能做到这一点(OneDrive 上有一个有点像这样的性能,但它仿佛曾经隐没了),所以这将是苹果真正的 USP。苹果音乐一直上传我的 Apple Music 资料库一直上传。我明天在 beta 1 中遇到了这个问题,当初在 beta 2 中也遇到了这个问题。我曾经重新启动了 Mac,但没有区别。直到明天工作失常。答:我有同样的问题。登录和退出。重新启动。依然是“加载 iCloud 音乐库”,仅此而已。Beta 1 也存在问题,该问题在重新启动时失去解决。独自上传到苹果商店这是咱们遇到的问题。咱们想请咱们的应用程序开发人员将应用程序上传到苹果商店,因为他们不想给咱们应用程序的源代码。咱们晓得咱们须要提供咱们与内容供应商之间的协定,以证实内容是非法的。然而,咱们不想将此类文档提供给应用程序提供商。您有什么倡议咱们能够向您发送咱们与内容提供商之间的协定,而无需将信息提供给应用程序开发人员?答:1.这听起来像是一种十分全面的关系。您是否首先签订了接管源代码的合同?2. 他们不想给咱们源代码,我会开始寻找新的开发人员。Apple Transporter 应用程序异样上传行为我正在应用 Apple transporter 应用程序将我的一个应用程序上传到 Testflight。应用transporter利用的起因是上传卡在管理器中很长时间。 ...

November 7, 2022 · 1 min · jiezi

关于ios:云音乐iOS端代码静态检测实践

图片来自:https://unsplash.com 本文作者:尘心一、前言随着我的项目的扩充,依附纯人工 Code Review 来保障代码品质、避免代码劣化变得”力不从心“。此时有必要借助代码动态剖析能力,晋升我的项目可继续倒退所须要的自动化程度。针对 C、Objective-C 支流的动态剖析开源我的项目包含:Clang Static Analyzer、Infer、OCLint 等。它们各自特点如下: 联合以上剖析和对理论利用中可定制性的强烈诉求,最终咱们抉择了可定制性最强的 OCLint 作为代码动态检测工具。接下来将从以下四点介绍 OCLint 的实际利用过程: OCLint 环境部署、编译和剖析。自定义规定实现。动态检测耗时优化。利用动态检测能力继续对启动性能防劣化管制。二、OCLint 简介下面有对 OCLint 做一个简略介绍,具体来看其总体构造如下: Core Module:是 OCLint 的引擎。它会将工作按程序调配给其余模块,驱动整个剖析过程,并生成输入报告。 Metrics Module:是一个独立的库。这个模块实际上不依赖于任何其余 OCLint 模块。意思是咱们也能够在其余代码检测我的项目中独自应用这个模块。 Rules Module:OCLint 是一个基于规定的工具。规定就是动静库,能够在运行时轻松加载到零碎中,基于此 OCLint 领有很强的可扩展性。此外,通过遵循开/闭准则,OCLint 可通过动静加载扩大规定而不必批改或从新编译本身,所有规定都作为 RuleBase 的子类实现。 Reporters Module:在剖析实现后,对于检测到的每一个问题,咱们都晓得节点的详细信息、规定、诊断信息。Reporters 将获取这些信息,并将其转换为可读的报告。 三、环境部署3.1 OCLintbrew tap oclint/formulaebrew install oclint上述办法是官网举荐,但装置的版本并不是最新的,这里倡议应用brew install --cask oclint装置最新版本。 3.2 xcpretty是一个格式化 xcodebuild 输入的工具。 gem install xcpretty 四、输入编译产物环境装置好后,接下来就能够 clone 工程,筹备好全源码编译环境。通过 xcodebuild 与 xcpretty 格式化输入编译产物。 在工程目录下通过终端执行: xcodebuild -workspace "${project_name}.xcworkspace" -scheme ${scheme} -destination generic/platform=iOS -configuration Debug COMPILER_INDEX_STORE_ENABLE=NO | xcpretty -r json-compilation-database -o compile_commands.json ...

November 7, 2022 · 5 min · jiezi

关于ios:iOS-上架流程图文详解2022版-下5填写App-Store的发布信息

进入Apple developer首页,点击进入App Store Connect,增加新的App 等在这些页面都填写完信息后,就等着公布构建版本了6.Xcode构建上传新的App须要将工程改成release 模式,点击Xcode-->Product-->Archive按钮进行打包,如果该按钮是灰色不可用状态,则须要在我的项目Bulid抉择Any iOS Device,而不是虚拟机 进入打包页面,抉择要公布的我的项目,点击"Distribute App"抉择App Store Connect接着下一步抉择Upload接着下一步,(如果抉择Export 导出ipa包应该也行)抉择对应的证书和Profile文件持续下一步一路下一步,直到提醒上传App Store Connect胜利7.提交审核在苹果开发者平台上,进入App Store Connect,增加构建版本,抉择刚刚上传的App)所有信息都填写结束后,点击右上角的“提交以供审核”就静等音讯吧,顺利的话个别两天左右吧。也有可能会被打回批改,外面的起因就各式各样了,到这里就祝好运吧:)

November 4, 2022 · 1 min · jiezi

关于ios:iOS-上架流程图文详解2022版-上

到了2021年,尽管网上也有大牛写过很多IOS App上架流程材料,但随着苹果公布机制的微调 有些曾经过期了。我就趁着这次刚刚公布胜利的鲜活教训,记录下来,做一下补充。 1、首先得注册Apple Developer的开发者账号,最初如果要上架苹果商店,这个账号是要交年 费的,核算下来大略600多元人民币。2、接下来要登录Apple Developer网站,点击 “Account”栏目 3、如果该App须要多人合作开发,请进入People进入人员编辑。留神负责上架AppStore的人 员须要有治理级别的权限。 4、人员设置实现过后,进入“Certificates...”页面了。 1)先申请证书 2)如果还在开发App,就须要申请下Apple Development证书,外面能够申请开发人员的 AppleID以及测试真机如果App额定的敏感性能,比方大部分App都须要的推送,则要申请Apple Push Notifucation service SSL(Sandbox & Production)如果须要公布,则要申请iOS Distribution(App Store and Ad Hoc),而后点击下一步"Continue" 增加形容这里就须要上传CSR文件了,CSR是Certificate Signing Request的英文缩写,即证 书申请文件。咱们须要在电脑上《钥匙串拜访》中生成。增加形容点击钥匙串拜访-->证书助理-->从证书颁发机构申请证书...进入CSR生成界面,抉择"保留到磁盘",在Create a New Certificate页面抉择改文件,持续 下一步,而后点击存储,双击下载后的证书就能实现配置。 3)增加Identifiers,而后抉择App IDs 接着下一步, 抉择App接着下一步,这边要填写App的形容和Bundle ID,如果有须要权限的性能也要在这边勾选,比方"Push Notifications"接着申请Profiles 如果还在开发阶段,能够抉择iOS App Development。 如果要公布就抉择App Store,接着抉择你要公布的App ID,而后抉择你之前申请的Certificates证书。 在Xcode App我的项目Release Signing签名中抉择方才生成的Profiles

November 4, 2022 · 1 min · jiezi

关于ios:iOS-161-正式版发布苹果-App-Store-上架首批支持实时活动应用

10 月 25 日音讯,明天苹果公布了 iOS 16.1 正式版,苹果 App Store 介绍了 iOS 16 新 性能尝鲜,包含锁定屏幕、实时流动,以及更多精彩。苹果精选了一些用户可能会喜爱的内 容,搭配井水不犯河水的 App 和游戏,供一览为快。 实时流动,就在眼前 有了“实时流动”功 能,用户能够随时获知罕用 App 的最新信息。 获悉,无需解锁设施,即可在锁定屏幕上关注出租车的达到工夫、球赛最新比分,或者下一个 闹钟揭示。在 iPhone 14 Pro 上,如果解锁设施,“实时流动”信息还会呈现在灵动岛。 以下 App 都反对“实时流动”,不便一览各种重要事项。其中包含高德地图、盒马、喜马 拉雅、QQ 音乐、网易云音乐等。 上面是利用示例: 盒马 QQ 音乐 高德地图 锁定屏幕,随 心自定 在 iOS 16 中,用户能够在锁定屏幕上增加青睐的小组件,让罕用 App 中的信息 高深莫测。另外,锁定屏幕的字体款式、墙纸与照片都能够随心调整,不便打造个性化布局。 专一模式,更进一步 无论工作、学习,还是与家人共度时光,专一模式都能帮用户更好 地分心当下。通过 iOS 16 的“专一模式过滤条件”,能够自定义当某一专一模式关上时,App 展现哪些内容。比方,开启“集体”专一模式时,能够将《日历》App 中的工作日历暗藏起来。 挑战好友,Game Center 见 Game Center 从新设计的面板与个人资料,能够让用户一览 好友们正在玩的游戏,以及在反对相应性能的游戏中获得的成就。 快捷指令,走走捷径 用户能够应用 Siri 和“聚焦”运行 App 预置的快捷指令,无需另外设置。用户也能够应用 《快捷指令》App 创立本人的效率配方。 ...

November 4, 2022 · 1 min · jiezi

关于ios:iOS-App上架流程

iOS App上架流程一、[endif]筹备:一个已付费的开发者账号(账号类型分为集体(Individual)、公司(Company)、企业(Enterprise)、高校(University)四种类型,每年资费别离为$99、$99、$299、收费。)。一个曾经开发实现的我的项目。二、[endif]生成公布证书关上苹果开发者核心:https://developer.apple.com,点击:Account苹果开发者核心上面输出已付款过的Apple账号和明码登录(如果你的电脑曾经保留了明码,会间接进入)开发者登录账号点击:Certificates,Identifiers & Profiles(专门生成证书,绑定Bundle Id,绑定device设施,生成形容文件的中央)Member Center点击Certificates生成证书抉择iOS, tvOS, watchOS抉择All点击右上角新增加证书增加新证书1 因为是做App上传,抉择生产证书(抉择App Store and Ad Hoc)抉择App Store and Ad Hoc留神:一个开发者账号只能创立(1-2个开发(测试)证书,2-3个生产(公布)证书),如果你的App Store Ad Hoc后面的按钮不能抉择,则代表你的这个账号无奈再创立新的生产证书了。解决办法:从独特应用这个账号的人电脑上生成.p12文件,导入本人的电脑。(尽量不要执行上面第2步)如果你想生成的话,把现有的删除一个(倡议删除工夫比拟靠前的)。留神:如果删除一个证书,那么正在应用这个证书的人将不能再应用了,除非从新生成,而后利用.p12从新导入本人的电脑里!如果你想删除证书,执行上面步骤,否则略过。删除证书而后接上上图,生产证书局部持续生成证书2生成证书3生成证书4上传CSR文件去获取证书(CSR文件须要咱们到本机钥匙串里去创立)在Launchpad的其余外面,点击钥匙串拜访弹出如下界面其余钥匙串拜访工具栏抉择钥匙串拜访->证书助理->从证书颁发机构申请证书...申请证书证书信息将CSR文件保留到MAC磁盘的某个地位(这里我抉择的是桌面,进行存储)存储证书点击实现CertificateSigningRequest.certSigningRequest 文件而后回到浏览器,点击Choose File...抉择CSR文件抉择创立好的:CertificateSigningRequest.certSigningRequest文件,点击选取选取CSR文件点击Generate上传证书上传CSR证书跳转到如下界面,点击DownLoad下载生成的证书(cer后缀的文件),而后点击Done,你创立的公布证书就会存储在帐号中。下载生成的证书cer后缀的文件留神:这个证书只能下载一次。点击下载后,敞开页面后就不能再回到下载页面了。如果不须要给别的电脑应用,则间接跳过上面附加项,跳转到第五步(绑定Bundle Identifier)附加项:生成p12文件在其余电脑上应用这个公布证书双击装置证书后,关上钥匙串拜访,抉择装置的证书右键单击装置的公布证书留神:如果没有导出,能够把这个证书删除,而后从新双击下载的证书文件装置。导出证书导出证书存储证书存储导出的证书留神:存储的文件格式肯定要是.p12设置明码能够为证书设置明码,也能够不设置明码;如果设置了明码,那么他人装置这个证书的时候就要输出明码,否则无奈装置。这里就不设置明码了。设置明码保留导出的证书p12公布证书如果须要在其它电脑上也能公布App,那么就必须要装置这个公布证书。[if !supportLists]三、[endif]创立App IDs和绑定你的App的Bundle Identifier回到方才的页面:https://developer.apple.com/a...点击App IDs,进入如下界面,点击右上角的+号点击App IDs填写App IDs和Bundle Identifier填写App IDs和Bundle Identifier留神:[if !supportLists]1. [endif]上传App应用的Bundle Identifier(不要有-,都是英文+数字)必须是固定的,不能应用占位符。[if !supportLists]2. [endif]如果你的Bundle Identifier曾经在网站上绑定了,如果你又批改了你工程外面这个Bundle Identifier的话,须要从新进入到开发者账号外面绑定。批改工程的Bundle Identifier上面抉择App中蕴含的服务,默认有两项,其余的依据本人我的项目的需要进行抉择App Services点击Continue点击continue点击Register点击Register点击Done点击Done四、[endif]生成形容文件(形容文件的作用就是把证书和Bundle Identifier关联起来)找到Provisioning Profiles,点击All,而后点击右上角+号Provisioning Profiles因为是公布,所以抉择上面App Store这个形容文件,点击Continue抉择App Store在App ID 这个选项栏外面找到你刚刚创立的:App IDs(Bundle Identifier) 类型的套装,点击Continue抉择公布我的项目的Bundle Identifier抉择你刚创立的公布证书(或者生成p12文件的那个公布证书),依据本人电脑上的公布证书日期来抉择,点击Continue抉择创立的公布证书在Profile Name栏里输出一个名字(这个是Provisioning Profiles文件的名字,可轻易输出,在这里我用工程名字,便于别离),而后点击Generate给形容文件起个名字Download生成的PP文件,而后点击Done,双击装置(闪一下就完事了,没其它成果)Download生成的PP文件生成的形容文件在App Store开拓空间回到Member Center,点击iTunes Connect点击iTunes Connect登录开发者账号(还是之前已付费的账号)Snip20160315_68.png登录胜利后,点击我的App点击我的App点击左上角那个+号,点击新建(留神:咱们是iOS App开发,不要选Mac App啦)新建App顺次按提醒填入对应信息(SKU是公司用于做统计数据之类的id,依据公司需要填写),而后点击创立填写App信息留神:如果都填好当前,可能会通知你,你的App名称曾经被占用,那么不好意思,你只能改名了!(而且倡议大家起名不要往比拟闻名的App上靠,否则审核可能会被回绝)填写App其它信息App信息填写价格和销售范畴(因为我的开发者账号没有签订征税合同,所以不能上线免费利用,所以只能临时收费)填写价格和销售范畴顺次把不同尺寸的App截图拉入到对应的外面须要填写不同尺寸的手机屏幕截图(也就是拿不同尺寸的模拟器运行后,挑出至多3页最多5页进行截图而后拖到响应的区里)(在模拟器Command+S就能够保留屏幕截图到桌面了)(留神:如果提醒拖进去的图片尺寸不对,则把模拟器弄成100%而后再Command+S) 尺寸参照表在上面设置不同尺寸的App截图尺寸参照图尺寸参照图填写App简介填写App简介按提醒顺次输出按提醒顺次输出谬误提醒:如果上传App图标失败,提醒Alpha谬误的话,看上面。关上你的图标图片,勾掉这个勾掉这个点击分级前面的编辑,如实填写后,点击实现分级信息填写审核信息填写审核信息版本公布就是:(而后最上面抉择主动公布的话就是如果审核通过,就主动上传到App Store供人下载)此时这个构建版本还没有生成,咱们先把根本信息填写结束,而后再进入Xcode中把我的项目打包发送到过去。留神:填写完肯定要点击右上角的保留。[if !supportLists]五、[endif]在Xcode中打包工程找到你刚刚下载的公布证书(后缀为.cer)或者p12文件,和Provisioning Profiles文件,双击,看起来没反馈,然而他们曾经退出到你的钥匙串中。在Xcode中抉择iOS Device(这里不能抉择模拟器),依照下图提醒操作抉择iOS Device如果你的利用不反对横屏,把这两个勾去掉如果你的利用不反对横屏,把这两个勾去掉查看版本号和构建版本号查看版本号和构建版本号配置公布证书(ps:截图时抉择的证书是谬误的,大家留神一下,要抉择公布证书)配置公布证书留神:如果这里没有黄色叹号,代表你的配置没问题,如果有,那就是证书和形容文件不匹配,或者形容文件里方才选的Bundle和当初的工程的Bundle Identifier不统一,去https://develop.apple.com上找到你的形容文件在确认下绑定的Bundle Identifier和你工程是不是一样的?查看将断点、全局断点,僵尸模式等都要去掉。去掉断点、全局断点Snip20160315_36.pngSnip20160315_37.png去掉僵尸模式6.设置Release模式(Debug是测试的,Release是公布用的)Snip20160315_39.pngSnip20160315_40.pngSnip20160315_41.pngSnip20160315_42.png7.抉择Xcode下Product下Archive(专门用于传我的项目,或者打包我的项目)抉择Archive8.呈现下图阐明你没有增加开发者账号,点击右下脚Add...按钮就能够增加没有增加开发者账号9.输出付费的开发者账号输出开发者账号可能会弹出上面这个界面,如果不弹出,按Command加。10.而后回到Archive(抉择已付费的账号),而后点击Choose抉择已付费的账号而后期待期待11.抉择Upload提交Upload提交12.如下就代表上传胜利,如果出错,请参照iOS App上传我的项目遇到的问题上传胜利13.返回Itunes Connect网站上你本人的App信息中查看一下在App信息中查看14.在这个构建版本这里就能够增加代码增加代码点击+号之后抉择代码版本增加构建版本15.提交以供审核提交以供审核16.App曾经从筹备提交,变成正在期待审核状态正在期待审核状态17.期待苹果的审核...[if !supportLists]六、[endif]补充[if !supportLists]1. [endif]构建版本的办法有两种,一种是应用Xcode(下面曾经介绍了),另一种就是应用一个叫Application Loader这个软件:Application Loader应用Xcode构建版本:下面曾经介绍(曾经Archive的话,能够在Xcode: Window -> Organizer进入)Upload to App Store…应用Application Loader构建版本:如上图,点击Export...,导出一个ipa文件(ps:为了保险起见、让苹果审核顺利一点,这里能够先点击Validate...来验证一下,这里就懒得验证了)Application Loader下载Xcode的时候就曾经下载了(没有的请自行下载),Xcode右键弹出上面界面Open Developer Tool关上Application Loader(如果没有登录,会提醒你登录你的开发者账号)Application Loader选取你导出的ipa文件(或者双击“交付您的应用程序”选取ipa文件),之后按提醒操作就行,上传完毕没有报错的话,过几分钟左右就能够在ITunes Connect外面就能够看到你上传的这个版本了。 ...

November 4, 2022 · 1 min · jiezi

关于ios:Zoom在App-Store上架10周年之际-全球iOS和Google-Play的累计下载量已超10亿次

Zoom在App Store上架10周年之际 寰球iOS和Google Play的累计下载量已超10亿次鞭牛士 7月20日音讯,依据data.ai数据,就在Zoom在App Store上架10周年之际,它在寰球iOS和Google Play的累计下载量已超10亿次。疫情期间,Zoom的需要飙升,近90%的下载量产生在2020年4月当前。随着世界各地陆续公布疫情隔离、居家办公政策和社交间隔指导方针,Zoom的下载量在2020年4月达到峰值。然而,随着混合办公模式的推广、近程工作机会的增多,以及家人敌人间视频通话的需要增长,直至2022年上半年,Zoom依然是寰球人们应用最多的商业应用程序。

November 4, 2022 · 1 min · jiezi

关于ios:IOS-上架流程简洁版

1、manifest.json根底配置 利用版本名称:1.0.2(请依据本身APP版本填写)利用版本号:11(请依据本身APP版本填写) 2、Hbuilder IOS App云端打包 勾选iOS(ipa包),不须要勾选Android(apk包) Bundle ID:xxx(填写APP利用标识) 勾选反对iPhone、反对iPad 抉择应用IDP/IEP证书 证书私钥明码:xxx(生成的ios证书密钥) 证书profile文件:xxx.mobileprovision(.mobileprovision后缀的)私钥证书:xxx.p12(.p12后缀的)抉择打正式包前面的选项全副都不必勾选(原生混同、广告联盟、换量联盟)提交打包,期待云端打包实现后,下载ipa包 3、关上Transporter 关上Transporter将已下载的ipa包拖拽到Transporter程序 点击交付,验证通过并交付胜利后,期待苹果构建版本4、提交上架 浏览器中关上 http://developer.apple.com登陆苹果开发者账号密码进入Developer后,点击右功能区的 App Store Connect=》Go to App Store Connect进入App Store Connect =》我的App =》APPName =〉1.0.1(10)筹备提交(右边性能栏) =》请在提交 App 前先抉择一个构建版本。 =》抉择1.0.2(11)=〉实现 =》点击存储(右上角) =〉点击提交以供审核 =》前面依据提醒点击“是”

November 3, 2022 · 1 min · jiezi

关于ios:不越狱下载未上架的APPios签名工具永久有效吗

苹果APP上架难,不必越狱,下载未上架APP! 苹果的ios零碎生态一项是晦涩平安的,没有乌七八糟的货色,APP都是在苹果App Store利用商店来下载,对于开发者来说,一个APP上架须要经验严格审核,上架前要实现内测,没有上架的APP,怎么来下载呢,很多人会抉择用ios签名工具,或者找签名商来实现。 ios签名工具装置了软件后会主动生成一个 ios签名,下载到软件后就会主动生成一串新的 ios签名,让您当前装置软件的时候都不必再手动签名了。当您装置好软件后须要关上软件能力查看零碎,在界面的左上角有个“查看利用”按钮,点击这个按钮后您就能够看到所有的软件页面。 还能够查看到每一款软件下的 ios签名状态!能够说是你随时随地都能够用来应用和签名在应用装置了软件后无需再手动装置新软件,只需按一下下方的按钮即可让您应用软件并保留你想要签名和应用的文件。如果不想设置账号密码的话还能够设置主动签名、自动更新等性能。这款软件为你带来最多益处之一就是你无需再手动签名或更新软件了! ios签名工具永恒无效吗? Ios签名软件都是有有效期的,很多收费是签名工具有1天、3天、7天有效期,掉签须要从新签名,如果没有本人的账号,能够找签名商,目前市场有三种签名形式,超级签名、TF签名、企业签名,TF签名有90天有效期,企业签名根本是一年有效期,不越狱也能够下载安装,被宽泛应用。

November 3, 2022 · 1 min · jiezi

关于ios:海外新规丨苹果正式允许NFT应用上架iOS-分成30%

2022年10月26日16:18天津扬帆出海官网账号10月24日,苹果对其海外版App Store审核指南进行了更新,并首次正式为提供iOS应用程序制订了NFT相干规定。 依据其更新后的审核指南,“利用能够应用外部领取来销售和销售与NFT相干的服务,例如铸造、上市和转让。”这也意味着海内iOS开发者将能够在苹果生态中搭建本人的NFT平台。苹果在指南中强调:“应用程序能够容许用户浏览别人领有的NFT汇合,前提是应用程序不得蕴含按钮、内部链接或其余将客户疏导至利用内购买以外的购买机制的口头号召。” 对于所有出海者来说,这一扭转有两个值得关注的点。 闸门松动,但仍有底线不会变置信出海者对于苹果的做事格调有所理解,苹果始终对于本人的生态“阀门”牢牢把控,触碰底层逻辑的陈腐事物很少可能失去反对。 NFT也是一样。因为NFT底层采纳了区块链技术,与之相干的基础设施——加密钱包也被苹果死死盯防,这也使得NFT进入苹果商店成为空谈。尽管本次苹果商店凋谢入驻,然而也追加了诸多例如:“应用程序不得应用本人的机制来解锁内容或性能,例如许可证密钥、加强事实标记、二维码、加密货币和加密货币钱包等。”这样的条款。 此次更新中,对于加密货币交易所的审核苹果也退出更新,示意iOS应用程序能够促成加密货币在经批准的交易所的交易或传输,但前提是它们仅在应用程序具备适当许可和权限以提供加密货币交易所的国家或地区提供。所以总结来说,苹果终于在NFT趋冷的时刻,选择性承受了这种玩法。然而NFT并没有受到非凡的关照,依然采纳了30%手续费的高抽成模式。这让大多数NFT公司在苹果商店都无奈站得住脚。显然苹果的这次扭转并没有给生态带来太多惊喜。 NFT的寒冬还将持续 受到加密货币的影响,NFT的冷冬早在今年夏天就曾经降临。依据DappRadar近日公布NFT报告显示:NFT市场交易量相比第二季度曾经缩小75%。另外,Top100的NFT企业中,总体市值曾经降落了44%。 另外,与2021年第三季度相比,独立交易者的数量减少36%。可见,从霎时暴发到间断遇冷,NFT赛道曾经走向成熟和稳固,但对于创业者来说,进入的机会或者曾经错过,像ImmutableX交易量相比第二季度逆势减少87%的少之又少。 正因如此,起初创业者们心愿NFT能够进入App Store,从而可能接触到更多的受众。 但本次的“接收”并没有让开发者狂喜,只管苹果将年收入低于100 万美元的公司佣金分成升高到 15%,然而仍把许多初创企业拒之门外。 另外销售问题也是NFT市场面临的外围痛点,在苹果生态下尤难解决。 咱们曾理解过,NFT利用进入App Store或将破费几个月能力上架,但Google Play Store 只需几天工夫,这种状况不知在新规后是否会有恶化,毕竟几个月工夫对于NFT来讲,或者过于漫长。11月18日16:30-18:30扬帆出海将举办2022GICC|线上泛娱乐分论坛。在线上泛娱乐分论坛中,咱们特意邀请泛娱乐出海行业一线大咖到场,针对泛娱乐产品出海的广告投放、经营以及新技术的利用等作出最深度的剖析。

November 2, 2022 · 1 min · jiezi

关于ios:代码显示苹果-iOS-162-将允许-iPhone-更频繁刷新实时活动但也更加耗电

 10 月 26 日音讯,随着本周 iOS 16.1 正式版的公布,苹果推出了实时流动 —— 更多第三方应用程序可提供有用的信息。有了“实时流动”性能,用户能够随时获知罕用 App 的最新信息。无需解锁设施,即可在锁定屏幕上关注出租车的达到工夫、球赛最新比分,或者下一个闹钟揭示。在 iPhone 14 Pro 上,如果解锁设施,“实时流动”信息还会呈现在灵动岛。随着周二向开发者公布的 iOS 16.2 Beta 测试版,苹果将容许用户抉择更频繁地刷新“实时流动”。该新选项目前在 iOS 16.2 Beta 中尚未启用,它将为“实时流动”提供“更频繁的刷新”。9to5Mac 看到的代码证实,当该选项启用时,实时流动(以及随之而来的灵动岛互动)将在更短的工夫距离内要求更新,以显示“更多实时信息”。同时,在代码中发现的同一信息正告称,为“实时流动”启用更频繁的刷新也会更快地耗费 iPhone 电池电量。更频繁的刷新容许更频繁的刷新让你看到更多的实时信息,但会更快地耗费电池电量。一旦可用,用户能够在设置利用中取得新的选项。更频繁的刷新对一些利用十分有用,如 Flighty,反对实时流动来显示对于行将到来的航班细节。送货和乘打车利用也将从中受害。据揣测,苹果将在 iOS 16.2 正式版公布前公开这一性能。

November 2, 2022 · 1 min · jiezi

关于ios:AppStore-打包上传后提示二进制文件无效-的解决方法

昨天提交打包提交App,将包上传到iTunes Connect之后,认为就能公布了,便点击构建版 本,发现没有刚刚上传的包,于是就点击"预发行"看一下,会看到"已上传",过不久再刷新一 次再看,就变成了二进制有效,无比的郁闷,上传了五六次都是二进制文件有效。在查看了 app是否反对64位当前,我认为是传错了版本,把debug版本传上去了,排查了后发现不是。查 了很多的材料都说是应用了公有API或者是iDFA设置不对的问题,然而茫茫多的代码和援用的 第三方库,鬼晓得那里用到了公有API或者iDFA,一行行的查工作量也太大了。幸好找到了 stackoverflow上一个问答,能够不便的检测公有api,地址。为了避免生效截个图: Snip20171218_3.png然而惋惜,没查出来。。。查看IDFA的办法:步骤:1、关上终端cd到要查看的文件的根目录。2、执行下列语句:grep -r advertisingIdentifier . (别少了最初那个点号)。仍然没有。。。这个时候想到去邮箱里看一下苹果发的邮件(其实应该首先去看的),看到了这个 不容许监听锁屏告诉???立即去全局查问关键字:CFNotificationCenterGetDarwinNotifyCenter;screenLockStateChanged;NotificationLock;screenLockStateChanged;满载而归。。。然而我感觉会监听锁屏告诉的应该是那些须要在后盾做操作的性能,于是我先去排查了一下利用里的音频性能,而后在一个没有被援用的监听办法里发现了这个:com.apple.springboard.lockstate因为之前的码哥废除了这个监听,改用applicationProtectedDataWillBecomeUnavailable:然而原来的代码没有删除也没有正文当初苹果不论你用没用只有你代码里有"com.apple.springboard.lockstate"关键字就判断二进制文件有效,我真的是躺枪(:ゝ∠)! 

November 2, 2022 · 1 min · jiezi

关于ios:苹果-App-Store-开始支持隐藏上架应用

只能通过链接下载据MacRumors报道,苹果公司最近发表,正如其开发者网站上所概述的那样, App Store当初反对只能通过间接链接能力发现的暗藏利用。 本地紅书推广渠道一手价 KOC种草/达人笔记博主价公布×图片来自 Apple领有不适宜公开公布的 利用的开发者能够在苹果网站上提交申请,公布未上市的利用,这些利用不会呈现在任何App Store类别、举荐、图表、搜寻后果或其余列表中。未列名的应用程序也能够通过苹果商务治理 和校园教务治理拜访。苹果公司示意,针对特定组织、非凡流动、钻研或员工销售工具和资源的 App 是暗藏发行的良好候选者。所有提供 App Store 的国家 / 地区都反对该性能。开发者可 认为新的和现有的应用程序提交苹果的申请表格。如果取得批准,该利用的散发形式将变为 「非上市利用」,并将实用于该利用的任何将来版本。暗藏应用程序可供任何可能拜访该链接 的人应用,如果该应用程序曾经在App Store上可用,其以后链接将放弃不变。

November 1, 2022 · 1 min · jiezi

关于ios:苹果iOS-App上架流程非iOS开发人员上架教程

iOS利用上线公布流程个别蕴含相干证书文件的配置、Xcode的设置、App Store Connect填写 App的相干信息、ipa包上传、审核后果以及相干邮件回复。相干证书文件的配置与Xcode的设 置个别由iOS开发人员来实现,上面只讲拿到iOS开发人员给的xxxx.ipa包后的上架App Store 公布流程另外:iOS开发者证书的注册、申请、领取个别由iOS开发人员来配合实现。 一、登录Apple开发者核心Apple开发者核心网站:https://developer.apple.com/cn/用浏览 器输出苹果开发者核心网址,进入主页如下图:苹果开发者主界面点击右上角账户(英文)进入登录界面,在登录界面上输出开发者账号用户名和明码进行验证,验证通过后则进入苹果开发者核心如下图:二、 App Store Connect填写App的相干信息登录App Store Connect点击App Store Connect进入App Store Connect: 持续点Go 头App Store Connect击进入 进入到App Store Connect主界面如下: 新App的创立在上图中点击我的App能够进入App治理界面,如下图: 在上图右上角点击➕号再点击新建App 即可创立新的App,要填写一些信息,跟iOS开发者沟通索要就行。如下图: 填写完信息,App利用就创立胜利啦!App根本信息填写新建完App后,须要填写App的根本信息,比方App的名称,语言、类别等,详情请参照下图: App价格与销售范畴填写。填写完App的根本信息后,接着就是填写App的价格及销售范畴。个别状况下,App的销售价格为收费的,销售的地区抉择所有国家和地区,如果App利用反对bitcode,侧抉择主动编译bitcode。如下图: App版本信息填写填写实现价格与销售范畴后,点击左侧xx.x筹备提交按钮,即可进入App版本信息填写界面,首先是增加App预览图和屏幕快照,可间接将对应的图片拖到该区域,如下图:App预览图的尺寸大小,如下图所示: 接着是App的宣传文本,形容以及关键词,别离是须要填写,详情请参照下图:填完App的宣传文本关键词后,接下来须要抉择上传的App包,行将下面打包好的App包(ipa)通过Application Loader进行上传,上传胜利后,构建版本右侧即可呈现➕,如下图所示,点击抉择对应的版本包即可,接着填写App的综合信息,如App Store图标,版本,版权等,详情如下图:最初是填写App的审核信息,包含用户登录名明码,联系人信息等,如下图。填完过后就能够点击右上角保留按钮,保存信息啦。三、将xxxx.ipa包上传到App Store Connect(一)、由iOS开发人员负责上传ipa包到App Store Connect(二)、非iOS开发人员通过Transporter工具将ipa包到App Store Connect1、Transporter 可视化工具能够在 macOS、Windows 和 Linux 操作系统上装置和运行 Transporter,下载安装后登陆开发者账号即可上传ipa包,具体用法就不说了。2、包上传完期待15到30分钟就能够在App Store Connect看到了。如果包有代码问题这个过程会收到邮件提醒。上传胜利也会收到邮件提醒实现。四、提交审核1、ipa包上传胜利后,在App Store Connect中构建版本那里就能够抉择方才上传的ipa包了,而后保留,如下如:2、点击增加以供审核就能够提交审核了,接下来就是期待审核了,中途有啥问题,会收到邮件提醒,审核通过了也会收到邮件提醒。3、如果抉择的是手动公布,审核通过后须要到App Store Connect中手动点击公布按钮,如果是抉择主动公布则无需操作。附上App公布形式抉择图:App公布形式抉择图这就是iOS App的整个公布流程!!!!!!

October 31, 2022 · 1 min · jiezi

关于ios:iOS上架流程iOS上架流程

1 筹备2 申请App ID2.1 关上苹果开发者官网,点击Account登陆账号。2.2 进入ID申请3 创立证书申请文件(*.cerSigningRequest文件)4 增加软件开发证书和散发证书 并下载(*.CER文件)5 创立Profile配置文件6 新建开发者利用7 打包上架AppStore1 筹备开发者账号可编译的我的项目不论是什么框架开发的iOS利用,上架的形式都是一样的,需要申请开发者账号。开发者账号的性能蕴含利用散发治理、测试等,否则就只能在本人的手机或虚拟机中运行。2 申请App ID为你的软件申请一个惟一的ID,appStore中所有的AppID都是由官网散发的2.1 关上苹果开发者官网,点击Account登陆账号。 2.2 进入ID申请 增加一个App ID 抉择App IDs 抉择App 点击蓝色按钮持续,注册,而后就能看到注册的AppID3 创立证书申请文件(*.cerSigningRequest文件)这个证书文件是从mac中应用程序“钥匙串”中申请的,申请后会产生一个文件,这个证书是关联电脑的,后边创立开发者证书的时候须要把该文件上传上去,来生成开发者名义的开发证书和公司名义的软件散发证书。后边的证书生成完之后,这个文件就没啥用了,须要用到再从新获取一下就行 从证书颁发机构申请证书 把证书文件存储到桌面,这一步就实现了4 增加软件开发证书和散发证书 并下载(*.CER文件)回到开发者网站,苹果开发者官网,进入证书治理页面https://developer.apple.com/a...一共须要增加两个证书,开发者调试用的和上架App store散发软件时用的,这个证书是关联开发者的,开发者开发的多个app都能够用同一个证书 抉择iOS App Development,先创立开发者证书,待会再创立一个散发证书 抉择本地证书文件 增加实现,点击下载,下载实现之后双击装置,或者关上,这个证书会被装置在钥匙串中。两个证书都增加并下载安装就行了。 钥匙串中装置胜利的成果 如果创立谬误,可点击证书进去删除5 创立Profile配置文件同样须要两个,development和app store用的两套,这个是和App产生关联的不同的app工程有不同的配置文件。 增加一个配置文件 先增加一个开发模式的配置文件,待会再新建一个AppStore用的配置文件。 抉择App ID 抉择开发证书 抉择反对调试的设施 填入配置文件名称,点击右上角蓝色按钮 Generate生成配置文件,下载双击装置,主动装置到Xcode,或者在Xcode中抉择导入,也能够在Xcode中间接下载 6 新建开发者利用返回网页到App connect中增加利用 抉择我的App 新建App app新建实现之后,欠缺App的详细信息,填写app简介,关键词,截图等。把测试账号也填写进去。如果你的app个别用户是通过短信验证登陆的,那最好在代码中让测试账号免验证进去,不便审核7 打包上架AppStore关上Xcode,配置相干信息。

October 31, 2022 · 1 min · jiezi

关于ios:图文详解丨iOS-App上架全流程及审核避坑指南

App Store作为苹果官网的利用商店,审核严格周期长始终让用户头疼不已,很多app都“死”在 了审核这一关,那咱们就要放弃iOS用户了吗?当然不是!本期咱们从iOS app上架流程开始梳 理,具体理解下iOS app上架的那些事。iOS app上架总体流程: 1登录苹果开发者核心,注册开发者账号如果你是第一次申请注册应用Apple ID登录苹果开发 者网站,须要批准“苹果开发者协定”,提交申请,这个时候你的Apple ID 就曾经成为了一个 开发者的ID了。如图1-1:苹果开发者核心网址:https://developer.apple.com/ 图1-1 批准苹果开发者协定并提交申请2、申请付费开发者,退出苹果开发计划 图2-2 开始注册图2-3 注册阐明补充阐明2-1:双重验证相干苹果新规定Apple ID需开启双重验证能力注册开 发者账号,所以在退出开发者之前须要依据提醒开启设施进行双重验证;验证办法采纳登录电 脑上的iCloud依据提醒进行验证(或者其余设施,如登录手机进行双重验证),以下是局部相 关图片图2-4 双重验证相干图2-5双重验证相干抉择开发者类型补充阐明2-2:Apple 开发者账号集体账号:集体申请用于开发 Apple App 所应用的账号,仅限于集体应用,能够在 App Store 公布利用,申请比拟容易, ¥688.00/年 ($99.00/year)。公司账号:以公司名义申请的开发者账号,用于公司外部的开 发者共用,能够在 App Store 公布利用,申请流程绝对麻烦,¥688.00/年 ($99.00/year)。企业账号:个别是公司规模在 500 人以上的企业,用于内部测试、散发 利用的账号,不能在 App Store 公布利用,申请流程绝对麻烦,¥1988/($299.00/year)。 不同开发者账号步骤与所需材料 填写具体的注册信息,对立相干协定,通过验证审核之后再次点击持续进入领取页面,具体步 骤参考图2-7:图2-7 填写注册信息图2-8 批准协定并且持续图2-9 注册期待验证通过图2-10 领取图2-11 再次登录图2-12 填写付费信息的页面领取胜利后,苹果会在48小时内对订单进行解决,之后可能会收 到邮件要求到指定的页面上传身份证照片。如果遇到任何问题,能够拨打苹果开发的售后服务 电话4006701855。补充阐明2-3:邓白氏DUNS的申请邓白氏DUNS编码相当于公司在苹果公认的 权威组织中注册了本人的身份证;能够点击相干链接先进行验证,没有能够间接申请。具体申 请步骤能够参考百度教训:https://jingyan.baidu.com/art...创立证书应用 APICloud平台开发iOS利用须要用到几个证书,上面的图为各个证书应用的中央。接下来为各 个证书的创立教程。4创立App ID首先关上苹果开发网站,通过Account进入开发账户,如图:登录胜利后抉择 Certificates, Identifiers & Profiles(如果没有这一项请查看教程最开始的阐明),如图:如图,在左侧菜单抉择Identifiers,而后点击增加按钮抉择App IDs,点击右上角的Continue按钮在Bundle ID处抉择Explicit,填写本人我的项目的ID,这里填写的ID即是控制台上传证书页面须要填写的App IDs如果利用须要应用推送性能,在上面的Capabilities列表中勾选上Push Notifications项,点击Continue确认信息无误后点击Register,实现创立。5云编译p12证书制作若开发账号下曾经存在certificate了能够跳过创立的步骤,一个账号下有一个certificate即可,多个利用能够共用。生成certSigningRequest文件如图,关上应用程序->实用工具->钥匙串拜访如图,抉择从证书颁发机构申请证书接下来填写邮件地址,抉择存储到磁盘,如图,保留文件到桌面。制作p12证书如图所示,点击右边的Certificates,而后点击增加按钮如图,如果是集体或公司账号,抉择iOS Distribution (App Store and Ad Hoc),如果是企业账号,则抉择In-House and Ad Hoc,点击Continue如图,抉择Choose File抉择之前生成的certSigningRequest文件,点击Continue实现创立如图所示,cer证书创立胜利,点击Download将证书下载到本地双击关上证书将其装置到钥匙串,若弹出装置提醒,抉择装置到“登录”,在钥匙串中找到装置的证书,若提醒此证书是由未知颁发机构签名的,请下载Apple Worldwide Developer Relations Certification Authority证书进行装置,地址http://developer.apple.com/ce...,在右边抉择“登录”和“我的证书”,找到证书,在证书下面点击鼠标右键,而后在菜单中选择导出证书,如图:在弹出页面中指定证书名,点击存储,而后输出证书明码(此明码在控制台上传证书页面输出),点击好,生成p12格局证书。)6云编译mobileprovision公布证书制作这里以集体、公司账号创立App Store类型公布证书为例,企业账号创立In House类型公布证书相似。App Store类型证书App Store证书只能用于公布利用到AppStore,不能装置在非越狱设施下面。如图,点击左侧菜单Profiles,而后点击增加按钮增加图片正文,不超过 140 字(可选)抉择App Store,点击Continue如图,抉择下面创立的App ID,点击Continue如图,抉择certificates,点击Continue输出证书名称,点击Generate,实现创立7云编译mobileprovision测试证书制作集体或公司账号生成的App Store类型mobileprovision证书,利用在没有公布到App Store之前只能在越狱设施上装置,若要在非越狱手机下面装置,则须要把设施udid增加到测试设施列表Devices里,并且生成Ad Hoc类型mobileprovision证书。获取设施udid获取设施udid能够通过老版本iTunes获取(最新版本无奈获取),macOS Catalina及更新零碎则能够间接通过“访达”获取,另外也能够通过其它一些手机助手获取。1、macOS Catalina及更新零碎中通过”访达“获取。关上”访达“,连贯设施,如图,点击划线下面区域后,会展现出序列号及udid信息,而后点鼠标右键拷贝(拷贝的内容蕴含序列号、udid等,需手动再筛选udid)。增加图片正文,不超过 140 字(可选)增加图片正文,不超过 140 字(可选)2、通过老版本iTunes获取。关上iTunes,连贯设施,如图,找到序列号,而后点击序列号,该栏会变成UDID,点击鼠标右键,拷贝UDID。增加测试设施如图抉择左侧菜单Devices,点击增加按钮增加图片正文,不超过 140 字(可选)输出Name和获取的UDID,点击Continue增加图片正文,不超过 140 字(可选)点击Register,最初点击Done,增加设施实现。Ad Hoc类型证书对于集体和公司账号,Ad Hoc类型证书能够装置到指定的测试设施下面调试。如图,点击左侧菜单Profiles,而后点击如图,抉择Ad Hoc,点击Continue进入下一步增加图片正文,不超过 140 字(可选)如图,抉择App ID,点击Continue进入下一步增加图片正文,不超过 140 字(可选)如图,抉择certificates,点击Continue进入下一步抉择设施,而后点击Continue)输出证书名称,点击Generate实现创立更多内容详见:https://docs.apicloud.com/Dev...创立App图6-1 进入iTunes Connect图6-2 新建App补充阐明6-1“名称”是新建的app在App Store中显示的名字;“SKU”能够填写当天日期外加一个编号即可,这是你为你的利用指定的一个标识符。图6-3 点击“1.0筹备提交”填写App相干信息接着增加预览图和屏幕快照,编写利用形容和关键词,设置利用图标编辑利用分级,利用图标必须提供1024×1024的图片且图片不能设置alpha通道(透明度);利用分级是为了确定利用应用群体的年龄段。补充阐明6-2苹果官网对于app屏幕快照及预览的标准要求:如果你的利用中有须要登录后能力应用的性能那么就必须提供一个演示账号以供审核利用时应用。图6-4 提供联系人信息和演示账号图6-5 抉择公布形式并保留利用信息注:依据本人状况抉择,是否手动公布版本。9打包IPAAPICloud平台间接云编译生成ipa包,下载下来用Transporter工具上传到AppStoreConnect。App审核相干苹果的三种审核机制外媒 CNBC 在一篇对于苹果 App Store 如何审核App 的报道中分享了一些对于利用审核的细节。报道称,目前 App Review 总部有 300 多名评审员,苹果的每个评审员每天大略须要审核 50 — 100 个应用程序,Watchtower 会跟踪每一个 App 的审核状况,以便回复开发者或通过开发者批改后从新提交审核时进行比对,同时也为苹果收集 App 品质相干数据。对于评审员来讲,苹果为其制订了 SLA 的考核制度(服务级别协定),要求评审员在 24 小时内须要达到 50% 的利用实现审核,48 小时内须要达到 90% 的利用实现审核。苹果称,会有 40% 的 App 被拒审或更新被驳回,核查出相干问题,并反馈给开发者。在同时多维度考核数据时,SLA 会达到失常规范,低于正常值时,评审员会收到邮件告诉进行正告。新闻报道地址:https://www.cnbc.com/2019/06/...苹果审核规范共分为五大类:平安、性能、业务、设计及法律,咱们要严格依照审核规范来开发和提交咱们的APP。当然,在提审之前还有一些筹备工作须要确保实现好:要确保APP没有显著的解体和谬误。确保APP的可用性和完整性,不能是演示APP或demo。APP所有预览图、简介、关键词等都要是和产品业务相干的。更新您的分割信息,以便 App Review 部门在须要时与您取得联系提供无效的演示帐户和登录信息,以及审核所须要的资源。APP启用后盾服务,确保其在审核期间处于流动和可用状态相干权限要阐明其⽤用处,如果是壳上架或混同代码,就更须要留神官网审查指南:https://developer.apple.com/a...上面是七麦数据统计的近30天的被拒条款统计,仅供参考。 ...

October 28, 2022 · 1 min · jiezi

关于ios:最全iOS-上架指南

一、上架根本需要材料1、苹果开发者账号(公司已有能够不必申请,须要开明开发者性能,每年 99 美元) 2、开发好的APP 二、证书上架版本须要应用正式的证书 1、创立证书 Apple Developer 2、上传证书 Sign In - Apple 3、进入开发者核心 Certificates, Identifiers & Profiles 点击 Certificates 旁边的+ 新增证书 4、抉择最新的散发版证书 Apple Distrbution,右上角 continue 5、按要求填写后提交。 个别都要创立两个证书一个用于开发,一个用于上架,如果有领取内容,还必须要 Apple Pay 的证书 6、创立 profile 左侧菜单选 profile 点+号创立,抉择 App Store,创立好后取得一个 TYPE 为 App Store 的 Profiles, 可用于打包上架利用 三、打包1、版本配置,双击左侧菜单我的项目关上 xcodeproj,编辑 Version 或 build 第一次能够随便,然而提交版本胜利后,这两个必须有一个值是新的,以作辨别,否则提交上传就肯定会被拒收 2、配置签名,抉择 Signing&Capabilities 3、 而后是惯例操作,设施选 Any Ios Device,Archive 后就是漫长的期待 个别为防止打包空间不够,能够先clean 一下 4、打包实现后,点击 Distribute App 上传到 App Store Connect,稍后 appid 邮箱会收到后果告诉 ...

October 28, 2022 · 1 min · jiezi

关于ios:iOS-最全的真机测试教程

想要上架的同学请看:《iOS-最全的App上架教程》因为最近更新了Xcode 8 ,证书的创立都大同小异,只是在Xcode 8中的设置有一些变动,我就在上面补充,如有什么疑难,请分割我。。注 同样能够在Build Setting 的 sign中设置证书,然而有点麻烦,倡议就在General中设置证书,比拟不便,还能够查看谬误的中央。筹备开发者账号自从Xcode7 进去之后,个别的真机测试不须要 开发者账号,也就不须要看这篇教程,只有app具备 “推送”等性能的时候,要真机测试就必须要开发者账号和设置证书。苹果只是让你体验一下它的基本功能,要深刻还是要花钱的。待测试的我的项目真机测试步骤一、创立App ID二、创立证书申请文件 (CSR文件)三、依据CSR创立开发者证书(CER)(开发、测试用的Develope证书)四、增加设施(Devices)五、依据Devices创立Provisioning Profiles配置文件 (PP文件)六、设置Xcode 而后真机调试重点应用P12 文件 使多台Mac进行真机调试(或者公布) 【重点】一、创立App ID1.关上苹果开发者网,点击“Account”登录会员中心。 2.填写信息创立app ID 点击+创立ID第一个选项:明确的app id 与我的项目中的Bundle Identifier绝对应如果你打算将应用程序中退出Game Center,或在利用中应用应 用内购买,进行数据保护,应用iCloud,或者想要给你的应用程序一个惟一的配置文件,你就必须申请Explicit App ID。第二个选项:通用app id能够在所有不须要明确id的app中应用淘宝上卖的真机调试证书就是这个 二、创立证书申请文件(CSR文件)创立CSR文件请看《iOS-最全的App上架教程》的第二点这里就不多说了三、依据CSR创立开发者证书(CER)1、 找到Certificates ,点击All,而后点击右上角 + 号2 、 点击Developement中的iOS App Developement选项** 点击Continue 4.点击Continue 5. 点击choose File.. 抉择创立好的证书申请文件:CertificateSigningRequest.certSigningRequest 文件,点击Generate 6. 点击Download下载创立好的公布证书(cer后缀的文件),而后点击Done,你创立的公布证书就会存储在帐号中7. 双击装置。如果装置不上,能够间接将证书文件拖拽到钥匙串拜访的列表中 四、增加设施1、点击+增加设施到开发者账号中,为制作PP文件做筹备Name:设施的形容 能够轻易填 不便你记忆UDID:设施的标号2、获取UUID(这里轻易提供一种办法获取UUID)将iPhone手机插入到电脑上 ,关上iTunes,而后按如图操作 3、填入UUID就OK了五、依据Devices创立Provisioning Profiles配置文件 (PP文件)1、找到Provisioning Profiles ,点击All,而后点击右上角 + 号 2、 抉择iOS App Developement,点击Continue3、在App ID 这个选项栏外面找到你刚刚创立的:App IDs(Bundle ID) 类型的套装,点击Continue ...

October 28, 2022 · 1 min · jiezi

关于ios:iOS-逆向-私有方法LSApplicationWorkspace

获取LSApplicationWorkspace头文件:https://github.com/JaviSoto/i...获取手机中所有装置的app办法 -(void)getAppPlist{ Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];NSArray*apps = [workspace performSelector:@selector(allApplications)];// NSArray*appsActivity = [workspace performSelector:@selector(applicationForUserActivityDomainName)]; NSMutableArray*appsIconArr = [NSMutableArray array];NSMutableArray*appsNameArr = [NSMutableArray array];NSLog(@"apps: %@",apps );[apps enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL* stop) { NSDictionary*boundIconsDictionary = [obj performSelector:@selector(boundIconsDictionary)]; NSString*iconPath = [NSString stringWithFormat:@"%@/%@.png", [[obj performSelector:@selector(resourcesDirectoryURL)]path], [[[boundIconsDictionary objectForKey:@"CFBundlePrimaryIcon"]objectForKey:@"CFBundleIconFiles"]lastObject]]; UIImage*image = [[UIImage alloc]initWithContentsOfFile:iconPath]; id name = [obj performSelector:@selector(localizedName)]; if(image) { [appsIconArr addObject:image]; [appsNameArr addObject: name]; } // NSLog(@"iconPath = %@", iconPath); NSLog(@"name = %@", name); // 输入app的属性 ...

October 27, 2022 · 2 min · jiezi

关于ios:iOSnavigationItemtitleView不居中的解决办法

当咱们对导航栏的题目的视图进行设置的时候,如果titleView的尺寸太大,因为两侧的rightBarButtonItem和leftBarButtonItem的挤压,会导致titleView不居中。网上找了许多办法,都是用到计算的尺寸实现的,太过繁琐。最初终于找到一个解决的方法。应用NSLayoutConstraint对titleView进行设置其尺寸即可解决问题。原代码: UIView *titleView = [[UIView alloc] init];titleView.frame = CGRectMake(0, 0, 200, 44);self.navigationItem.titleView = titleView;更改后的代码: UIView *titleView = [[UIView alloc] init];NSLayoutConstraint *constraint1 = [NSLayoutConstraint constraintWithItem:titleView attribute:(NSLayoutAttributeHeight) relatedBy:(NSLayoutRelationEqual) toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:44];NSLayoutConstraint *constraint2 = [NSLayoutConstraint constraintWithItem:titleView attribute:(NSLayoutAttributeWidth) relatedBy:(NSLayoutRelationEqual) toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:200];[titleView addConstraint:constraint1];[titleView addConstraint:constraint2];self.navigationItem.titleView = titleView;通过NSLayoutConstraint设置之后的尺寸能够完满适配因为titleView宽度太多挤压两边的navigationItem导致的无奈居中问题。

October 25, 2022 · 1 min · jiezi

关于ios:IOS实用玩机技巧爱思助手-IPA-签名功能常见问题汇总

爱思助手 IPA 签名性能常见问题汇总 应用 Apple ID 签名 IPA 文件也就是常说的“集体签”,很多小伙伴在应用Apple ID签名 时,有时候会呈现证书申请失败,或者签名失败,这类报错信息。以下汇总爱思助手 IPA 签名性能在应用时可能遇到的问题和解决办法。 1.装置已签名的软件须要越狱吗? 不须要。不论是应用证书签名还是应用 Apple ID 签名,装置时都不要求设施越狱,和越狱 并没有什么关系。 2.用于签名的 Apple ID 须要敞开双重认证吗? 不须要。不管 Apple ID 敞开或者开启双重认证,都能够用来签名 IPA 文件,只不过已开 启双重认证的 Apple ID 在第一次应用时须要进行验证,之后应用时不须要再次验证。 3.签名的有效期是多久? 应用证书签名的 IPA 文件,装置后的应用工夫取决于证书的有效期,如果在有效期内证书 被撤消,软件将无奈再次关上,也就是常说的“掉签”;应用 Apple ID 签名装置的利用无效 期为 7 天。 4.反对批量签名吗? 反对。导入后勾选须要签名的文件,抉择证书或者用于签名的 Apple ID,而后点击“开始签 名”即可。 5.应用 Apple ID 签名后的 IPA 文件能够装置到其余的设施上吗? 不能够。应用 Apple ID签名的利用和设施标识绑定,签名时如果抉择的是 A 设施的设施标 识,就无奈将签名后的 IPA 文件装置到 B 设施上。6.签名后的安装包为什么没有装置到设 备上?IPA 签名工具目前没有主动装置性能,签名实现后须要手动“关上已签名 IPA 位 ...

October 24, 2022 · 1 min · jiezi

关于ios:什么是p12证书ios-p12证书怎么获取

  .cer是苹果的默认证书,在xcode开发打包能够应用,如果在lbuilder、phonegap、 HBuilder、AppCan、APICloud这些跨平台开发工具打包,就须要用到p12文件。 .cer证书仅 蕴含公钥,.p12证书可能既蕴含公钥也蕴含私钥,这就是他们的区别,除开xcode开发工 具,其余都须要用p12能力打包。 上面介绍如何申请ios p12证书文件 个别的办法是申请 到.cer证书而后再用钥匙串助手转换p12,须要用到苹果Mac电脑,过程比较复杂。 这里介 绍个十分简便的办法,应用Appuploader苹果APP上架辅助工具申请,Appuploade能够跨平台 应用,Windows、Linux或Mac零碎都能够应用,没有苹果电脑在Windows电脑也能疾速不便的 申请ios证书,几秒就能够申请到p12证书。 Appuploader的装置应用介绍 以申请ios公布证 书为例  一、创立iOS公布证书 1、关上Appuploader,输出苹果开发者核心账号,登 录。 如果还没装置Appuploader先装置好 Appuploader装置教程 关上Appuploader,用苹 果开发者账号登录。    2、抉择证书选项    3、点击右下角+ADD抉择,下拉抉择公布证书,输出证书名称(不要中文、随便设置), 邮箱(随便),明码(证书的明码、比方设置123这样,不必很简单,记好、打包时要用、 很重要)、点击ok创立。   留神:iOS公布证书最多能申请3个,如果账号曾经有3个公布证书了,将申请报错。 一个公布证书能够用于多个APP上架,不是说只能申请3个公布证书就只能上架3个app,齐全不必每个app都申请个公布证书p12,公布证书p12是能够通用的,辨别开上面步骤申请的的形容文件就行了。也能够删掉之前的公布证书,从新创立,不会影响已上架的app。   2.4、创立胜利后,找到刚创立的公布证书(iOS Distribution这个类型的就是公布证书,如果之前创立过请看过期工夫就晓得哪个是新创建的了),点击p12 文件,下载保留.p12证书文件到电脑。   二、创立iOS公布形容文件,跟p12配套的,一起介绍下。 1、返回Appuploader首页,抉择形容文件。   2、点击新增,抉择公布版形容文件,公布抉择distribution类型,开发抉择development类型,bundle id 的设置,如com.app.taobao),勾选上个步骤申请的公布证书p12(如果申请了多个公布证书,这里会显示多个,间接选中全副就行了)输出名称(不必中文,随便,123之类的就行),点击ok创立。   3、抉择刚创立的公布版形容文件(iOS Distribution这个类型的就是公布形容文件,找刚创立的输出的名字),点击Download下载,保留到电脑 

October 20, 2022 · 1 min · jiezi

关于ios:iOS开发-打包ipa让别人设备安装你的App

iOS开发- 打包ipa,让他人设施装置你的App个别在接外包的时候, 通常第三方须要装置你的app进行测试(这时候你的app必定是还没传到app store之前)。 这种状况下,如果是企业账号就好办了, 轻易装置.. 然而集体开发者账号呢? 如果他的机子不是开发测试的 间接装包的, 那么能够通过导出一个ipa供他装置。当然,你必须晓得他人设施的udid。 具体做法: 1。 登录开发者核心。https://developer.apple.com 2。增加对方设施到你的Devices中。 留神, 须要晓得对方的udid。 3。申请一个App ID,这个和其余证书的做法一样, 不反复阐明,如果不懂能够留言。 4。生成对应的Provisioning Profiles。 这里要抉择Distribution, Ad Hoc类型的, 像这样 点击Continue, 之后抉择你的Distribution证书。 (这个应该之前曾经都有的, 就不反复了。 如果不晓得是什么能够留言) 持续Continue,抉择须要的测试设施。 而后就配置好须要的Provisioning Profiles了。 下载下来, 装置。 5。装置实现后,批改你的工程,在info.plst 的Bundle identifier 中改为你申请的那个证书名字。 6。先在真机上跑一下, 确保没问题。 抉择 Xcode -->Product--->Archive--->Distribute---->抉择第二个(Save for Enter....)------>抉择之前的Provisioning Profiles---->导出。 即可失去对应的 .ipa文件 7。 功败垂成,发给他人测试吧。 原文链接:https://blog.csdn.net/hitwhyl...

October 20, 2022 · 1 min · jiezi

关于ios:ios数据管理软件AnyTrans-for-iOS-mac中文

AnyTrans for iOS中文激活版一款简略实用的ios数据传输管理工具,能够更无效的治理、传输、备份、删除、批改所有的iOS数据和文件体验您可能设想的最欢快的生存 不仅实用于您最重要的集体数据和媒体文件,还能让您在应用iOS设施的各个方面取得更轻松愉快的体验。你齐全享受你的生存,AnyTrans将接管所有繁琐的管理工作。只需点击一下,甚至不须要任何操作,您须要做的所有事件都将完满实现。 通过主动无线备份爱护您的重要数据 每个iOS用户都必须领有最新的备份,但定期备份数据并不容易 - 是的,咱们晓得它有多难。当初,AnyTrans接管了苦楚但至关重要的工作。你不须要做任何事件,甚至不必把你的iPhone从口袋里拿进去。您的所有照片,信息,应用程序和更多重要数据将主动,无线和平安地备份到您的计算机上。你再也不必放心失去重要的货色。 AnyTrans for iOS 中文下载:

October 17, 2022 · 1 min · jiezi

关于ios:苹果APP上架App-Store被拒常见问题及解决思路分享

苹果APP的审核是一道大难关,遇见被拒是很失常的事件,如果被拒就依据反馈问题,和上面提供的思路去寻求解决方案。苹果审核大体分为三局部,预审、机审和人工审核。ipa包上传后首先进入的是预审,会被扫描API等,预审通过后会在https://itunesconnect.apple.c...,而后才能够提交审核(如果没通过,会有反馈邮件,查看起因,很多上传ipa胜利了,但后盾没看到ipa构建版本,就是预审都没过。)在 提交审核开始显示是(期待审核)这个阶段个别是机审,机审次要是对代码进行机器审核,排查APP是否反复利用,“2.1苹果狗年大礼包”事件就更多地依赖机器主动审核,缩小人工成本;通过后会显示为(审核)这个阶段,即人工审核阶段,这个阶段次要看的是App的元数据,例如APP封面、性能、体验等等,重视用户体验,到了这步很快就会有后果了。目前机审机制越来越欠缺了,而且也越来越受器重,相比前几个月,近期的苹果审核工夫逐步缩短,均匀审核工夫为23.9 小时。2.1 App 完成度次要有利用呈现解体、加载失败等非常明显的Bug、利用不反对 IPv6网络下应用、测试账号、暗藏开关等。解决办法:提前测试产品是否有bug、在IPV6网络下是否能应用等,依据反馈邮件,一个个审查本身产品信息是否合乎,适当状况下能够发送截图视频给苹果官网以证实本人的清白。2.3 精确的元数据次要是利用题目、形容、截图等与利用性能重大不符。如用安卓手机截图,浏览器截图!解决办法:从新更换截图,保障整个APP性能、流程看起来是统一的。去除暗藏功能模块代码或将须要暗藏性能的代码及定向跳转链接网址做混同解决,适当减少逻辑复杂度。3.2.1 可承受的商业模式次要是没有资质。解决办法:最佳计划是拿到资质,如果切实没有资质,倡议大家尽可能多的把本人公司合规的证据材料发给苹果,而套壳、换新账号碰运气上架等操作,不得已的话能够尝试。5.1.1 数据收集和存储次要是App 强制用户注册,且基于不须要用户信息的性能之上、暗中采集/共享用户的个人信息。解决办法:先与用户协商,让用户批准后注册,有“强登陆”性能的肯定要批改为提醒登陆的版本。4.3 反复 App次要针对的是反复App,意思就是你的App跟他人上架的APP性能或者代码很类似,通常就是苹果认为是马甲包。解决办法:可通过批改名字、icon、主色调、代码等解决,并且留神雷同的APP包提交至多距离一天以上。4.2 最低性能要求次要问题在于苹果认为局部开发者上传的App性能不够,或者没有本人的外围性能,比方间接打包一个网页上架的很容易触发这个问题。解决办法:能够增加一些功能丰富产品(导航栏,下拉刷新,推送告诉等性能),如果感觉性能曾经全了,还没有通过审核,能够向苹果解释产品解决的用户需要,以及具体性能的展示。3.1.1 购买我的项目次要是接入第三方领取,支付宝、微信等。解决办法:老老实实地走苹果领取的领取形式,用内购。如果暗藏虚构产品或者通过后更改领取形式,都是有肯定危险的。2.5 软件要求次要是产品退出违规代码解决办法:很可能是三方库中含有SDK,能够更新所有三方库,或者反编译提交的ipa,查看文档中是否有违规字符串,有的话删掉。5.1.5 定位服务次要是 App 未失去容许,与第三方共享收集的用户数据,且并未阐明应用目标等,例:地位、账号……解决办法:如果要采取用户数据信息,须要给予用户提醒,并失去用户的容许,或设置为可选,并且明确告知苹果采集用户数据信息的应用目标。总的来说就是要弹出提醒阐明应用这个权限做什么用,写分明。5.2 知识产权次要是未经受权,应用受版权保护的第三方资料、App不得与苹果现有产品相似等。解决办法:确保 app 只蕴含由您创立或领有应用许可的内容,提交产品时应用受版权保护的第三方的书面证据或者将产品中蕴含的未经第三方受权的局部暗藏。审核还会遇到各种各样的问题,依据反馈来进行相应的批改。

October 13, 2022 · 1 min · jiezi

关于ios:ios推荐的美食小游戏

GSD_WeiXin 高仿微信v2ex - v2ex 的客户端,新闻、论坛。V2ex-Swift - 用 Swift 写的 V2EX 客户端。iBBS-Swift - “老手开源一个用Swift(2.0)写的论坛客户端”。BBS 服务端。wikipedia-ios - wikipedia-ios 客户端。jetstream-ios - 一款 Uber 的 MVC 框架。它同时提供了多用户实时通信反对,一旦启动 JetStream 后端服务,通过 WebSocket 协定能够分分钟建设多用户实时通信利用。DeckRocket - 在雷同 WiFi 网络环境内,通过iPhone 管制并播放 Mac 中的 PDF 文档。ScanBook - 扫扫图书:能够扫描条形码查问图书,也能够关键字搜寻,遇到合乎你口味的书,还能够看看他人的读书笔记,不同角度去领会。DesignerNewsApp - Swift 开发的 DesignerNews 客户端,看着美美的!KYWeibo - 调用新浪API本人写的第三方微博客户端。DouQu_IOS - 逗趣IOS手机端(一款笑话软件),领有残缺的性能的手机利用app 。IT江湖iOS客户端 - IT江湖iOS客户端。Eidolon - 艺术品拍卖的招标亭平台,用swift与反应式编程框架 ReactiveCocoa。CrazyPuzzle - 模拟“看图猜成语”App,功能齐全,配有音效,成果很不错。游戏应用cocoa框架实现,没有应用cocos2d的框架。WhoCall - 谁CALL我,iOS复电信息语音揭示,无需越狱。(须要iOS 7.0及以上版本。)骚扰电话预警、复电归属地揭示、联系人姓名播报,这些有中国特色人性化的电话性能,iOS上也应该有。电话揭示、公有API。仿iOS猎豹垃圾清理(实现原理+源码) - 仿iOS猎豹垃圾清理(实现原理+源码),用到公有API。DSLolita - 模拟新浪微博做的一款app,有发送博文,评论,点赞,私聊性能。STPhotoBrowser - 高仿新浪微博的图片浏览器,极佳的编写形式,易扩大,低耦合。GSD_ZHIFUBAO - 支付宝高仿版。Tropos - Tropos, 由 thoughtbot 推出的一款用 Objective-C 写的开源天气类利用, 截至明天, thoughtbot 已在 GitHub 上奉献了 174 个开源我的项目, 切实令人钦佩。SmileWeather -开源天气类利用,天气图标很残缺。MVVMReactiveCocoa - GitBucket 2.0 通过审核啦,她是我在公司实际了一年多 MVVM 和 RAC 的根底上,利用业余时间开发的第三方 GitHub 客户端,旨在可能对想实际 MVVM 和 RAC 的 iOS 开发者有所帮忙。AppStore地址,欢送下载应用GitBucket和珍藏MVVMReactiveCocoa。Tomate - 这个圆盘式计时器让你更专一于工作或学习。P.S. App Store 上架免费利用(0.99 欧)。StoveFireiOSMenu - 炉火餐饮零碎iPad点餐端。BaiduFM-Swift - 百度FM, swift语言实现,基于最新xcode6.3+swift1.2,初步只是为了实现性能,代码比拟粗燥,前面有工夫会整顿,反对Apple Watch。WNXHuntForCity - iOS高仿城觅我的项目(开发思路和代码)。ZYChat - 对于聊天界面的可音讯类型扩大,响应绑定设计。NiceAppDemo - 仿最美利用-每日最美的钢琴律动成果。meituan - 美团5.7iOS版(高仿),性能包含,团购首页,高德地图搜索左近美食并显示在地图上,上门服务,商家,友盟分享。MeituanDemo - 造美团利用界面构建的 iOS 利用, 第一个是 @叶孤城___ 的 MeituanDemo。JFMeiTuan - 造美团利用界面构建的 iOS 利用, 第二个是 @tubiebutu 的 JFMeiTuan。chuanke - 高仿百度传课iOS版。Tuan - 模拟MJ老师iPad版美团(swift版),偶有bug 见谅。SXNews - 模拟网易新闻做的新闻软件,实现了主导航页,新闻详情页,图片浏览页,评论页。成果不错,比网上流传的各种和网易新闻UI架构无关的代码都要残缺,都要好。Monkey - Monkey for GitHub是一个GitHub开发者和仓库排名的开源App。这次次要减少了登录GitHub的性能,顺手follow和star,并且减少发现模块,包含GitHub的trending,动静,showcases等。Uther - 跟蠢萌的外星人聊天,还能帮你记事”。itunes下载 。CocoaChinaPlus - CocoaChina+是一款开源的第三方CocoaChina挪动端。整个App都用Swift2.0编写(除局部第三方OC代码外,比方JPush和友盟)。高仿斗鱼TV - 高仿斗鱼TV,点击头部滚动视图能够播放视频。LXZEALER - 模拟着做了zealer客户端,App里简直所有申请都是Post,所以内容都是固定的URL加载的,登录性能只做了微博的第三方登录。ShiXiSeng_ios - 残缺app的UI框架。Coding-iPad - Coding-iPad 是@Coding的官网 iPad 客户端, 又是一个残缺的开源利用。SimpleMemo - 易便签曾经转到Swift2.0,全面适配iOS9和Watch OS2,并反对iPhone6s和iPhone6sPlus的3D Touch性能,包含图标快捷键和内容预览。XXYAudioEngine.swift - 基于NSURLSession 和 AVAudoPlayer的在线音乐的工具,能够把音乐保留在本地,也能够反对后盾播放,后盾下载,最低反对iOS7,swift版本1.2。furni-ios.swift - furni-ios.swift是由 Twitter 开发团队出品的一款用 Swift 写的 iOS 家居商城利用, 其次要目标在于让开发者从这款 Demo 利用中看出 Fabric 的弱小。SelectionOfZhihu.swift - 『看知乎』iOS 客户端, 我的项目阐明。WFZhiHu - WFZhiHu仿知乎日报客户端app。NirZhihuDaily2.0_swift - 精仿了知乎日报iOS端练手,Swift2.0,正文相当具体。Yep.swift - Yep 一个由蠢才开发给蠢才们应用的社交软件。LoveFreshBeen.swift - 高仿爱鲜蜂 - Swift2.0trySwiftApp.swift - trySwiftApp一款较为残缺的会议原型利用。有需要的同学能够做为开发参考。PinGo.swift - PinGo.swift:纯Swift编写的仿“随遇”App。UmbrellaWeather.swift - UmbrellaWeather.swift应用 Swift 编写的一款天气利用,现已上架 AppStore。SwiftWeather - SwiftWeather清爽浓艳继续改良天气预报我的项目。Phonetic.swift - Phonetic一个 iOS 版的 Phonetic Contacts,性能很多,其中昵称性能十分实用,已在 GitHub 开源并上架 App Store。edhita.swift - edhita.swift反对Markdown, HTML预览的文本编辑器。PilesSugar.swift - PilesSugar.swift:Swift高仿我的项目,堆糖。react-native-gitfeed - 目前最实用简洁的github客户端了。phphub-ios - PHPHub的iOS客户端,同时兼容iPhone和iPad。SoundCloudSwift - SoundCloud的Swift版本,采纳Swift2.0,Reactive API with ReactiveCocoa 4.0。LeagueofLegends - 一个对于英雄联盟的残缺iOS开源我的项目,接口均来自多玩,腾讯各大游戏平台。Coderpursue.swift - 一款 Github 第三方客户端,应用最新 Swift 语言编写。BTApp - BTApp 仿半糖 iOS App 的 Demo 利用。iOS残缺App资源收集 - iOS开发学习者都心愿失去实战训练,然而很多材料都是只有一小部分代码,并不能造成实现的App,笔者在此处收集了很多开源的残缺的App,都有源代码哦!--标哥的技术博客XCFApp-1 - 高仿下厨房App,Objective-C,Xcode7.2,数据通过Charles抓的,有接口也有本地数据。阐明:对于代码被清空,会用git的你必定明确,教程XCFApp-2 - 高仿下厨房APP。YoCelsius - 曾经上线的一款天气预报的利用,简直所有的交互动画成果,想学习动画的开发人员能够作为参考。XiMaLaYa-by-HansRove- - 仿喜马拉雅FM, 对AVFoundation框架的一次尝试,采纳MVVM模式,教程。好的文章 ...

October 12, 2022 · 6 min · jiezi

关于ios:苹果App-Store上传应用流程详解

苹果App Store上传利用流程详解,在向AppStore提交利用之前,开发者首先要成为苹果iOS开发者我的项目的成员,每年向苹果缴纳99美元或199美元的费用(具体申请办法前期更新)。其次创立相应的证书 Development是开发环境下的证书, Production是生产环境下的证书(往appStore上传)。一、上架条件:1、苹果开发者账号(公司已有能够不必申请,须要开明开发者性能,每年 99 美元)2、开发好的APP二、证书上架版本须要应用正式的证书1、创立证书 Apple Developer2、上传证书 Sign In - Apple3、进入开发者核心 Certificates, Identifiers & Profiles 点击 Certificates 旁边的+ 新增证书4、抉择最新的散发版证书 Apple Distrbution,右上角 continue5、按要求填写后提交。个别都要创立两个证书一个用于开发,一个用于上架,如果有领取内容,还必须要 Apple Pay 的证书6、创立 profile左侧菜单选 profile 点+号创立,抉择 App Store,创立好后取得一个 TYPE 为 App Store 的 Profiles, 可用于打包上架利用三、打包1、版本配置,双击左侧菜单我的项目关上 xcodeproj,编辑 Version 或 build 第一次能够随便,然而提交版本胜利后,这两个必须有一个值是新的,以作辨别,否则提交上传就肯定会被拒收2、配置签名,抉择 Signing&Capabilities3、 而后是惯例操作,设施选 Any Ios Device,Archive 后就是漫长的期待 个别为防止打包空间不够,能够先clean 一下4、打包实现后,点击 Distribute App 上传到 App Store Connect,稍后 appid 邮箱会收到后果告诉四、审核第一次提交审核时,这一步大多都会被回绝,要求调整批改;这些要求都 会通过邮件发送,及时查看邮件并依据要求调整就好常见的有问题:1、权限未申请或申请权限的提醒文字不符合标准,在上面配置2、应用了过期的 api,如 UIWebView3、无奈独立实现程序操作,如,领取集成了第三方,然而没有 apple pay的选项4、权限未作具体阐明5、图标蕴含alpha通道6、包内有framework未签名胜利

October 11, 2022 · 1 min · jiezi

关于ios:MobPush-iOS端常见问题

推送的下发逻辑是什么样的,什么叫离线推送推送下发时候目前如果利用过程处于在线状态,走咱们MobTech通道,当利用过程完结,推送下发会走厂商通道,如果厂商下发失败,或者未配置厂商等配置,且利用过程是杀死状态,那么推送会进入到离线池中,在离线工夫有效期内,当用户再次关上APP,推送会再次下发。接口推送时候默认离线工夫为1天,离线工夫可自定义最高为30天。 告诉和自定义音讯区别告诉:告诉是推送的惯例类型,在线走tcp通道,完结过程走厂商(APNS),能够通过零碎层面讲告诉展现到手机的告诉栏。自定义音讯:自定义音讯理论为透传音讯,须要利用过程存活,服务端会将推送的boday等参数下发到客户端,由客户端回调接管,自行处理。 什么叫regsiterid,别名和标签别离是什么含意regsiterid和别名:其实都是设施的惟一标识,推送实质是将音讯推送到设施上,regsiteid是MobTech给您生成的,然而regsiteid并不是不会扭转,所以须要每次获取最新的regsiterid。别名相当于您自定义的设施标识。其本质是和regsiterid绑定,所以也是惟一的,且同一台设施只能设置一个,如果有AB俩台设施同时设置一个别名,那么依照设置程序最初设置的那台设施别名失效。regsiterid和别名均实用于单点登录。标签:标签性能,能够了解为群体推送,能够用来辨别用户群体,一个标签能够给多个设施设置,每个设施也能够具备多个标签,实用于用户群体辨别。也应用于多点登录逻辑。 推送胜利后,后盾没有数据推送胜利后,后盾统计不到数据,分为俩种状况(此处默认推送您客户端能够获取到regsiterid)。第一种状况:当推送下发的设施推送权限被关掉,那么不会下发,且没有推送数据统计;第二种:推送工作胜利下发,然而推送工作进入到离线池中,此时当用户再次关上APP收到推送,能力被后盾统计到 推送手机收不到怎么办iOS:目前推送分为在线推送和厂商APNS推送,因为iOS辨别开发环境和生产环境所以第一工夫查看下推送是否环境不匹配,第二步肯定要确认利用运行状态下是否收到推送。调试推送程序,先调试debug环境下的在线推送,在调试debug环境下杀死APP的推送。如果在线能够收到,杀死APP收不到,可通过smartpush工具校验证书。Android:安卓和iOS实质推送原理一样,然而安卓不辨别测试和生产,所以肯定要确定是否在线能够收到推送,如果在线收不到推送,请查看下AppKey相干是否配置有问题,客户端获取regsiterid是否能获取胜利,推送告诉是否关上,留神有一些告诉会被归类到不重要告诉栏。如果在线能够收到,请查看厂商相干配置,以及是否推送内容,推送频次被厂商限度。留神:如果还不能解决收到请及时分割技术支持帮您解决。 推送有测试环境和正式环境吗iOS:推送存在测试环境和生产环境,这个是因为iOS自身推送就辨别推送开发证书和生产证书,只须要在代码中设置如下: // 设置推送环境#ifdef DEBUG [MobPush setAPNsForProduction:NO];#else [MobPush setAPNsForProduction:YES];#endi留神:iOS测试生产环境须要achiver打ADHOC类型的ipa包去测试生产哦 Android:安卓不辨别推送环境,测试时候倡议通过精准推送去测试,避免影响线上的设施利用。推送反对富媒体推送吗,反对语音播放以及图片展现吗iOS: 反对富媒体推送,须要iOS零碎10以上设施,依照demo设置推送扩大,即可实现图片的播放,音频播放因为利用过程被杀死,所以须要在扩大中只能播放本地音频哦。Android: MobPush通道反对富媒体,厂商通道暂未开明,后续会开明厂商通道反对) 静默推送和失常推送的区别失常推送用户会收到推送内容、声音,利用处于后盾或者kill能够收到推送信息,然而不会走任何回调,点击推送内容进入APP后才会进入点击回调,要想处于后盾走apns回调的话,须要勾选静默推送, 静默推送是一种非凡的近程推送,没有推送内容声音,不必点击推送内容也不必进入APP就会执行回调,用户毫无感觉。 MobPush反对自定义声音吗,反对自定义跳转吗?iOS:反对自定义声音,只须要将声音文件拖入到我的项目中,对应推送传入声音文件名称即可,反对自定义跳转,可在对应vc中设置标识跳转,详情参考demo。Android :反对自定义声音设置,办法同上,反对自定义跳转,可通过scheme跳转,详情参考demo。 {"statue":4801,"error":"申请IP不匹配或者未设置"}MobTech后盾能够设置IP白名单,如果设置后只有固定ip能够进行推送,不设置的话默认所有IP均能够推送。 推送工作是否有限度目前推送限度分为以下几种:第一种:播送限度,推送播送类型每天限度100,每小时限度最高10次;推送regsiterid或者别名以及标签无限度,但单次下发最高下发1000个regsiterid,别名或者标签(备注别名长度自定义限度字节长度【1-100】)。第二种: 接口频率限度,推送接口(发送+查问)的接口频率限度,默认500次/分钟;webapi全副接口的申请频率限度,默认800次/分钟。(可通过技术支持调高频率如果需要比拟高)。 推送工作可依据地区进行天文范畴推送推送是能够通过设置推送天文条件进行区域推送的,目前精准到为市级。参考v3推送接口。 调用服务端推送报错怎么办 4001 4002 4005等服务端推送报错,4001申请短少必要参数。4002申请参数谬误,4005数据校验失败(sign校验失败)这些通常都是参数设置或者加密时候的问题,能够通过postman进行尝试参数: {"source":"webapi","appkey":"2ecbc7bc53712","pushTarget":{"target":1},"pushForward":{"scheme":"mlink://com.mob.mobpush.link","nextType":2,"schemeDataList":{"key":"Iskey","value":"IsValue"}},"pushNotify":{"plats":[2],"iosProduction":0,"content":"推送的内容","type":1}}/*****参考链接:[MobPush 的接口 以及一些示例 - 简书 (jianshu.com)](https://www.jianshu.com/p/0aa7308476de)*****/推送回调有的时候能够走,有的时候不能走,断点也没走是什么导致的[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMessage:) name:MobPushDidReceiveMessageNotification object:nil]; 须要查看这个办法是不是每次都调用到了,有可能是只调用了一次这个办法,并不是每次都调用了 后盾显示推送音讯是已勾销状态第一您这边rid或者别名传的不对,或者rid或者别名未入库,第二种手机设施敞开推送权限等等都会已勾销,须要关上推送重新启动利用 如果推海内的话,须要加以下接口设置国内推海内也是能够的,然而达到率应该会降落,因为海内连国内tcp服务不稳固,所以最好切换到海内服务器,须要调用这个接口[MobPush setRegionID:1],如果切换到海内服务器,推送的时候,后盾推送须要抉择海外版推送,如果调用api接口推送,须要用海内域名接口 http://abroad.api.push.mob.co... 接口去推送,传值能够参考国内接口去传值 企业账号的证书是否应用MobPush企业账号的证书也能够 应用MobPush 推送关上APP能够收到图片,然而敞开APP就收不到图片,是什么问题呢须要查看下扩大是否增加 Push后盾上传证书,始终报错问题有些用户始终说他的证书是对的,然而上传还是报错,可能他之前申请的证书是能够反对开发环境也能够反对生产环境测试的,这样的上传的不行的,须要去依据咱们的文档里的制作证书的办法在从新制作一个只反对开发环境的证书在上传 API申请的时候始终提醒5001:服务端未知谬误问题须要查看申请的参数,参数里可能有的传值有问题 对于Push推送的一些阐明新增用户数:当日新增与MobTech服务器放弃连贯的用户数沉闷用户数:当日内MobPush SDK与MobTech服务器建设过长链接的用户总数量指标数:近30天内MobPush SDK与MobTech服务器建设过长链接的用户总数量,且在装、推送权限开启(其实也叫无效指标数)下发数:由服务器理论下发到客户端的音讯总数,蕴含TCP下发数(不蕴含离线池的数据)+MobTech申请厂商,并厂商返回胜利的数量达到数:客户端SDK接管到音讯的数量点击数:Push点击数+补量点击数 Push点击数:点击告诉栏音讯的音讯数量(透传不统计点击)补量点击数:通过补量工作带来的点击数下发率:下发数/指标数达到率:达到数/下发数点击率:点击数/达到数触达率:达到数/指标数对于率的统计都准确到小数点2位在flutter上生产环境推送APNS收不到通过flutter build iOS来打包而后公布到蒲公英上,推送的时候抉择iOS正式环境推送,前台能收到,但后盾不能收到的问题,须要改用achiver打ADHOC类型的ipa包 而后公布到蒲公英后,在重新安装测试,这样前台后盾能力收到。

October 11, 2022 · 1 min · jiezi

关于ios:2022最新iOS证书p12描述文件mobileprovision申请和HBuider打包及注意注意事项

 一、制作p12证书1、在钥匙串界面中,选中装置好的开发者证书,【右键】选 择导出  2、在弹出的界面中 3、在接下来的弹窗中填写p12文件的装置明码(前面别人装置 该p12文件时须要输出这个明码,重要)  4、持续下面的步骤,这里须要输出电脑的开机明码,p12开发 者证书到这里即制作实现。 以上就是p12开发证书制作全过 程,p12公布证书制作步骤一样。  证书制作具体图解: 1. 进入证书页面,点击苹果证书2. 新增苹果证书3. 点击安卓证书,新增安卓证书  二、创立APPID 1、在【Certificates, Identifiers & Profiles】抉择 【Identifiers】,而后点【Identifiers +】创立AppId   2、在接下来的界面中抉择【App IDs】 3、抉择【App】,点击【Continue】持续 4、在接下来的界面填写形容信息(英文名称之类的)、 Bundle ID(即利用包名),填写完点击【Continue】持续  5、确认信息无误,点击【Register】注册 以上就是APPID 的创立过程   三、创立形容文件Profiles 1、在【Certificates, Identifiers & Profiles】抉择 【Profiles】,点击【Profiles +】 2、在接下来的界面中抉择【iOS App Development】(这 里创立的是开发形容文件,如果创立公布形容文件,抉择App Store),点击【Continue】持续  3、在该界面中抉择形容文件要蕴含的利用,点击 【Continue】持续  4、在该界面中抉择形容文件要蕴含的证书,开发形容文件选 择开发证书,点击【Continue】持续  5、在该界面中抉择形容文件要蕴含的调试设施,点击 【Continue】持续  6、填写形容文件名称,点击【Generate】创立形容文件  7、形容文件创建实现,点击【Download】下载形容文件到本 地 以上就是形容文件的创立过程,如果要和别人合作开发, 将形容文件和p12文件一起发给对方装置即可,例子中创立的 为开发形容文件和证书,如果要公布,还须要创立公布形容文 件和公布p12证书。 形容文件详解图: 1. 进入形容文件页面   2. 新增形容文件  四、增加调试设施1、在【Certificates, Identifiers & Profiles】抉择 【Devices】,点击【Devices +】  2、在该界面填写设施名称和设施UUID,点击【Continue】 持续  3、确认界面,点击【Register】注册设施号  4、注册实现 以上就是增加设施的全副步骤,提醒:在创立描 述文件的时候,务必把所须要调试的设施勾选上 

October 10, 2022 · 1 min · jiezi

关于ios:iOS上架App-Store之苹果发布证书的申请流程

iOS公布证书用于上架App Store,当开发好APP后须要上架就要用iOS底部证书有p12及 mobileprovision两个文件去打包!只有用iOS公布证书打包的ipa能力上传到App Store一、申请iOS公布证书(p12文件)应用Appuploader软件申请,能够 辅助在Windows、linux或mac零碎间接申请iOS证书p12,及上传ipa到App Store,最不便在Windows开发上架没有苹果Mac电脑的开发 者!1.1、用苹果开发者账号登录appuploader软件后,抉择证书进入,点击右下角+ADD抉择 类型:下拉抉择公布证书证书名称:不要中文、不要太长了、随便设置邮箱:随便 明码:证书的明码、比方设置123这样,不必很简单,记好、打包时要用、很重要 利用id:这里不必选点击ok创立。1.2、创立胜利后,找到刚创立的公布证书 (iOS Distribution这个类型的就是公布证书,如果之前创立过看过期工夫或者 ID就晓得哪个是新创建的了)!点击p12 文件,下载保留.p12证书文件到电脑。 二、创立iOS公布形容文件(.mobileprovision文件)2.1、点击右下角BACK、 返回Appuploader首页,抉择形容文件进去。2.2、点击右下角+ADD,进入申请界面!Type:下拉抉择公布版profile利用id: 下拉抉择对应的利用id(又称套装id,appid,BundleID,包名)证书:选中全 部就行Devices:公布版不必选设施输出名称:不要中文,随便,123之类的就 行,留神不要跟之前申请过的名称一样),点击增加。2.3、抉择刚创立的公布版形容文件(iOS Distribution这个类型的就是公布描 述文件,找刚创立的输出的名称),点击Download下载,保留到电脑把申请到的iOS证书(.p12)和形容文件(.mobileprovision)这两个文件下载,上 传到打包平台打包即可。

October 9, 2022 · 1 min · jiezi

关于ios:iOS逆向某运营商签名算法分析

一、指标剖析某运营商App的x-lemon-sign签名 二、工具mac零碎frida-ios-dump:砸壳已越狱iOS设施:脱壳及frida调试IDA Pro:动态剖析Charles:抓包工具 三、步骤1.寻找切入点抓包获取到登录接口的信息如下: 2.x-lemon-sign还原该值长度32位,字母蕴含a-f,咱们先用命令frida-trace -UF -i CC_MD5跟踪CC_MD5函数:js代码如下 { onEnter(log, args, state) { this.args0 = args[0]; this.args2 = args[2]; this.backtrace = 'CC_MD5 called from:\n' + Thread.backtrace(this.context, Backtracer.ACCURATE) .map(DebugSymbol.fromAddress).join('\n') + '\n'; }, onLeave(log, retval, state) { var ByteArray = Memory.readByteArray(this.args2, 16); var uint8Array = new Uint8Array(ByteArray); var str = ""; for(var i = 0; i < uint8Array.length; i++) { var hextemp = (uint8Array[i].toString(16)) if(hextemp.length == 1){ hextemp = "0" + hextemp } str += hextemp; } log(`CC_MD5(${this.args0.readUtf8String()})`); log(`CC_MD5()=${str}=`); log(this.backtrace); }}点击登录按钮后,获取到的日志如下: ...

October 9, 2022 · 3 min · jiezi

关于ios:2022最简单易懂的IOS-App打包发布完整流程

创立appid标识符进入apple开发者核心点击Account 创立一个公布证书创立开发证书也是相似。 咱们创立个能够给多个app利用应用的公布证书,(这个证书能够搭配所有appID创立公布时须要的 profile文件。创立完公布证书,前面会讲创立profile) 创立苹果证书,点击苹果证书 新增苹果证书)创立安卓证书新建证书须要留神抉择证书品种,如图分为软件和服务两种。须要打包时抉择软件类证书。 须要推送时抉择服务类证书。 按需抉择,我在里抉择iOS Distrbution(App Store and Ad Hoc), 点击Continue。 填写用户 电子邮箱地址和罕用名称,并抉择存储到磁盘,点击持续按钮。创立胜利后,证书文件后缀 为.certSigningRequest。反复前述上传CSR文件步骤。 回到页面把生成的.certSigningRequest 后缀名的文件上传,点击Continue。 推送证书创立胜利效果图,点击Download按钮把创立的证书 下载下来,后缀为.cer文件。 点击左侧 钥匙串-登录-品种证书,找到方才导入的证书,右击导 出.p12证书,并为其设置明码,而后p12证书就生成好了。找不到的话,将下载好的XXX.cer拖到图下列表里。 导出的时候须要设置证书的明码,当前须要用到这个证书就应用该明码。 留神:Apple Push Services: 命名是 通用环境推送证书 Apple Development IOS Push Services: 命名是 开发环境推送证书 Profile 文件创建就是 HBuilder云打包时候要用的证书profile文件apple开发者核心, Certificates, Identifiers & Profiles中,抉择左侧Profiles,点击+新建 即可生成形容文件1.先看一下抉择 App Store 流程抉择app ID, 点击Continue按钮。 抉择证书这个证书就是在 Certificates创立的证书,也是用来生成p12文件的证书。 未来打包应用的p12文件和 当初要生成的profile用通一个 Certificates证书。 填写 profileName,点击Generate.Download就能够下载profile文件,即可应用。 2.再来看一下抉择 Ad Hoc 的流程Ad Hoc的流程大抵和App Stroe差不多,咱们只说不通点选到Configure的时候, 多一个步骤,抉择设施。抉择全副设施,如果你没有增加设施的话,它这里是空。 或者想增加新设施的时候(上面讲怎么增加设施) 增加设施,在Devices下是咱们所有的设施,点击+号增加设施 填写完信息,点击Continue。而后就能够在上一个步骤里抉择了。其余流程统一创立完,点击 Download就能够下载profile文件,即可应用。HBuider打包 ...

October 9, 2022 · 1 min · jiezi

关于ios:如何最简洁的使用iOS-开发证书-和-Profile-文件

如果你想在 iOS 设施(iPhone/iPad/iTouch)上调试, 须要有 iOS 开发证书和 Profile 文件。 在你拿到这两个文件之后,该如何应用呢? 证书应用阐明: 1.  iOS 开发证书:开发证书 (Development Certificate)是一个后缀为 .p12 的文件(Certificates.p12); 在Mac 零碎下, 双击这个文件,这个证书会主动导入到 Mac 下的 key chain (钥匙链) 目录下。  2.   iOS 公布证书:公布证书 (Distribution Certificate)是一个后缀为 .p12 的文件(Certificates.p12); (兴许你会遇到,关上证书时,提醒输出明码。 这就看证书提供者是否加密了)。 图示:  Profile 文件应用阐明: 1. 供真机装置和调试用的Profile: 这个profile 用于将Xcode 生成的iPa文件装置到你的真机上。 留神,Profile文件与设施的UDID(串号)是绑定的。 只有通过签名的iOS设施,能力应用这个对应 Profile;  2.  供内测用的Profile: 这个Profile 是指 Ad-hoc profile, 如果你想把ipa 发给指定的用户测试,可通过这个profile 签名。 留神:内测用户的真机与须要签名。  Profile 文件的应用办法:  将Profile 文件拖拽到Xcode 工程中。 在Xcode 的菜单栏,点击 windows -》Organizer, 在左侧栏中,可看到Profile 的形容。  下载Profile文件(*.mobileprovision),先双击装置到Mac 电脑上; 将Profile拖拽到Organizer或iTune的Device上即可,之后关上Organizer的Device->Summary,在Provisioning上面能够看到。   关联 Provisioning Proffile 在 Xcode 中,关上 Project, 或双击 Target, 在 Build 选项中,找到你所须要的 Development Provisioning Profile. 通过以上设置, 即可将ipa 文件装置到设施中进行测试。 

October 8, 2022 · 1 min · jiezi

关于ios:关于iOS问题

问:当初开发者 UDID 审核 7 15 30 怎么搞问:我是Windows零碎的,没有xcode,包我是用 uniapp那个打包的,上传完IPA后,没有显示,第二张图是邮件提醒 问:你好,请问我要怎么做能力用真机进行调试呢?有教程吗怎么解决 支付宝受权登录 android 和 ios 受权登录插件https://ide.dcloud.net.cn/bui..., 打包自定义基座报错,帮忙看下什么问题证书生成了,打包老是失败,uniapp下面打包报错,是什么起因? 12.我每次上传都失败怎么回事啊 13.能打包了 又呈现一个新问题:无奈装置此app因为无奈验证其完整性,在设施治理外面找不到这 个形容,是怎么回事 14.请问uniapp用个推的推送的时候ios须要上传证书,然而我生成的p12始终提醒证书环境谬误是什么起因 Invalid App Store Icon - The App Store Icon in the asset catalog in 'HBuilder.app' can't be transparent nor contain an alpha channel.(利用商店图标无 效-HBuilder中资产目录中的利用商店图标。应用程序“不能是通明的,也不能蕴含alpha通道。) 16.这个链接下载,装置提醒,无奈装置,怎么解决 17上传商店 必须上传截图吗?不传的话是不是审核不通过? 18.苹果app审核回绝,提醒这个,应该怎么解决呢? 我的app是点击课程外面的章节,判断如果没登录,跳转至登录页,这难道也有问题么 19.这个要从新出ipa包么

September 29, 2022 · 1 min · jiezi

关于ios:使用appuploader工具如何生成发布证书和描述性文件教程

之前用AppCan平台开发了一个利用,平台能够同时生成安卓版和苹果版,想着也把这利用上架到App Store试试,于是找同学借了个苹果开发者账号,但没那么简略,还要用到Mac电脑的钥匙串申请发 布证书和上传ipa,可没有Mac,同学的大老远的也不不便拿过去用,而后捣鼓了个虚拟机,卡的我 狐疑人生,前面找到了一个工具,在Windows环境下终于上传胜利,把我的iOS app上架流程分享给各位。 上面从七个步骤进行具体介绍! 1、创立惟一标示符App IDs 2、申请公布证书 3、申请公布形容文件 4、iTunes Connect创立App并填写信息 5、AppCan抉择证书编译打包 6、Windows下上传IPA到App Store 7、上传好IPA回到iTunes Connect提交审核 上架只须要一个开发者账号,一个辅助工具Appuploader,一台PC电脑,在这里Mac电脑就能够不必了。 不多说,进入步骤 一、创立惟一标示符App IDs APP IDs在前面创立公布文件,创立APP时都要用到。 首先关上开发者核心https://developer.apple.com/cn/,进入证书页面。 1.1点击证书、ID及配件文件,进入设置。 1.2抉择App IDs -->点击+创立一个新的App ID 其中有两项须要你本人填: 第一项Name,用来形容你的App ID,这个轻易填,没有什么限度,最好是项目名称,这样不便本人辨识(不容许中文) 第二项Bundle ID (App ID Suffix),这是你App ID的后缀,须要认真填写。用来标示咱们的 app,使它有一个固定的身份,和你的程序间接相干。填写 Explicit App ID 的格局为: com.company.appName,照着格局写,写个不便记的,前面很多中央要用到。 第三项App Services,默认会抉择2项,不能批改,其它依据本人须要的服务抉择上,而后点击 Continue确认,下一步。 查看下没有错的话间接点击Register后点击Done实现App ID的创立。 二、申请公布证书 这里就要用到不须要钥匙串在Windows间接创立证书的工具Appuploader. 先下载安装 http://www.appuploader.net/ap... 2.1关上程序,输出苹果开发者核心账号,登录。 2.2抉择Certification 2.3点击+ADD,这里有开发证书等等创立选项,这里选第三项公布证书。 2.4输出,证书名称(随便) 邮箱(任何邮箱都行) 明码(前面打包编译时用到)而后点击ok,此 时生成了好了一个公布证书,点击p12 File,下载证书文件,保留到电脑。 这样公布证书就创立好了,很简略吧。 ...

September 28, 2022 · 1 min · jiezi

关于ios:ShareSDKPlus-APICloud-模块

前言ShareSDKPlus封装了ShareSDK,是对APICloud平台的反对,为APICloud开发的App提供社交分享性能的一个组件,反对包含QQ、微信、新浪微博等多家支流社交平台,帮忙开发者轻松实现社会化分享、第三方登录、关注、取得用户材料、获取好友列表等支流的性能。 以后ShareSDK版本,iOS:v4.2.5、Android:v3.5.2 集成筹备注册Mob利用开发者应用本模块之前须要先到 Mob官网申请开发者账号,并在账号内填写相应信息创立本人的 APP,从而获取AppKey和AppSecret。 详情参考: 获取AppKey和AppSecret 创立APICloud利用APICloud提供了两种创立利用的形式,不便开发者在云端或APICloud Studio中创立利用。 云端创立利用:注册并登录APICloud零碎:https://www.apicloud.com/console 点击左上⻆“创立利用”, 如图:抉择“Native”,填写“名称”及“阐明”,利用创立实现。 APICloud Studio中创立利用:下载并装置开发工具:APICloud Studio 2 登录APICloud Studio,没有账号点击“注册账号”,曾经注册,用之前注册的APICloud账号登录APICloud Studio 这两端能够互相同步信息: 同步本地利用到云端资源库,开发者在APICloud Studio创立的利用会和云端资源库建设连贯。我的项目代码改变后,能够应用APICloud Studio的代码提交性能提交代码到云端资源库。 关上APICloud云端,退出咱们的ShareSDK模块和comlib模块 模块配置应用此模块之前倡议先配置 config.xml 文件,配置结束,需通过云端编译失效,配置办法如下: iOS配置配置config.xml文件上面是配置各个平台URL Scheme例子,开发者自行删减。上面的值都是ShareSDK Demo测试应用,开发者可自行依据本人的AppKey批改配置 <feature name="shareSDKPlus"> <param name="urlScheme" value="wx617c77c82218ea2c" /> <param name="urlScheme" value="wb568898243" /> <param name="urlScheme" value="tencent100371282" /> <param name="urlScheme" value="QQ05FB8B52" /> <param name="urlScheme" value="ap2017062107540437" /> <param name="urlScheme" value="fb1412473428822331" /> <param name="urlScheme" value="line3rdp.com.mob.product.ShareSDK" /> <param name="urlScheme" value="yx0d9a9f9088ea44d78680f3274da1765f" /> <param name="urlScheme" value="pdk4987008320438021391" /> <param name="urlScheme" value="kakao9c17eb03317e0e627ec95a400f5785fb" /> <param name="urlScheme" value="dingoabcwtuab76wy0kyzo" /> <param name="urlScheme" value="pocketapp1234" /> <param name="urlScheme" value="vk5312801" /> <param name="urlScheme" value="twitterkit-viOnkeLpHBKs6KXV7MPpeGyzE" /> <param name="urlScheme" value="rm226427com.mob.product.ShareSDK" /> <param name="urlScheme" value="ak1412473428822331" /> <param name="urlScheme" value="aw9ivykfjvi4hpwo" /></feature>字段形容: URL Scheme:用于实现利用间跳转及数据交换,跳转到第三方利用客户端进行分享或受权后,从第三方利用客户端平台跳回到以后利用。URL Scheme的value值依据第三方平台规定设置。能够配置多个URL Scheme。 ...

September 27, 2022 · 9 min · jiezi

关于ios:MobTech-秒验常见问题

双卡双待手机如何登录针对双卡双待手机只取以后流量卡号 用其余手机号如何登录应用传统验证形式登录,例如验证码登录 一键登录只反对4G吗电信反对4G,5G网络取号,挪动, 联通反对5G,4G, 3G, 2G网络取号但在非5G,4G网络状况下容易取号失败 是否反对三网反对 能够用在H5或网页上吗临时不能够 对数据流量有什么要求免密登录能力必须通过运营商网关取号,所以必须开启挪动数据流量能力实现一键登录,但流量只消耗一点点 对手机型号有要求吗没有 反对国外手机号吗不反对 手机号码咱们会存储吗有存储,须要将手机号传给运营商。 是否须要本人服务器配合是的,须要服务器配合的,客户端那边只能是返回运营商,预取号以及token等信息,不能返回手机号,必须要对接服务端,把这些参数传给服务端那边,服务端那边就会返回手机号 这个平安嘛 sim卡是能够复制的卡复制了是没用的,因为SIM卡外部是有加密信息的,那个信息是必须由运营商进行解析能力获取到的数据 ,安全性是没有问题的。 如果曾经审核了安卓的,还须要审核iOS的怎么办在从新提交,填写上ios的Bundle id就行,不会影响安卓的,然而如果ios的之前曾经审核过了,那么再次提交会笼罩掉之前审核的,是同一个key的话,会笼罩的。能够从新再创立个利用,提交秒验包名审核 秒验是否反对集体应用秒验的话,已上线利用公司集体都可应用,公司官网什么的审核的时候能够不写,然而未上线利用 集体临时无奈接入 公司须要填写相干信息 ,官网上公司信息需与app业务性质统一。没有官网的话,有app介绍下载页面也能够,下面也需有所属公司名称。 新人专享礼 · 新用户接入即送 (秒验+SMSSDK)零碎主动送集成秒验一键登录SDK或短信SMSSDK的新用户即可收费取得1000条应用额度。 7.1开始新注册并实现认证的用户会在1小时内到账30元,无应用期限注: 秒验与SMSSDK 短信流动,参加用户只可二选一,不可同时加入两项流动;1000条应用额度以金额模式充入账户,赠送额度不予开具发票、不能提现;赠送流动只反对中国大陆,国外,港澳台都不反对;秒验是怎么免费的是在客户端失去token之后,而后调用服务端接口置换手机号胜利之后才会免费 秒验充值单价的问题不能累积计费,以单次最多充值的来计费 为什么要先调用预取号接口,间接调用登陆接口是否能够能够的,预取号接口一方面次要是为了减速一键登陆接口的响应速度,另一方面可能提前预知以后设施/网络环境是否能够进行一键登陆,所以咱们倡议先调用预取号接口,胜利之后在调用一键登陆接口,预取号接口能够屡次调用,第一次预取号胜利后,1小时内是有本地缓存的,所以1小时内的第二次预取号会走本地缓存,速度十分快。 预取号超时工夫默认是4s,能够通过接口设置,预取号工夫间接取决于运营商,所以如果预取号工夫较长只能检查一下网络环境,另外多尝试几次,有时可能是网络稳定引起的。 服务端置换token报错token非法token非法是客户端和服务端的Appkey不一 iOS端status=5119302, res=null, error=未找到配置, seqid=316869966368829440}报这个谬误个别是审核没有通过的问题,用户能够本人先到后盾查看下有没有提交我的项目里的包名审核,如果查看不到,能够给到AppKey和Bundle id让Mob技术人员去查 iOS端预取号失败,谬误的申请包签名Code = 6119127,resultCode=103102...desc=谬误的申请包签名这个谬误个别可能审核过了,然而Bundle id有加空格或者换行,须要找审核的人让运营商那边查下 iOS端resultCode:104201,desc:token invalid,seqid:186063876160012288,status:5119507optoken过期,不存在,或者曾经应用过了 iOS端status:4119310,res:null,error:“token未找到”如果是form表单传的就要先encode传到本人的服务端,不然会被本义。也就说在调服务端接口传参之前,在iOS端先把token先encode了,在传过来 iOS端挪动报 获取挪动token失败 Code=1003 “(null)” UserInfo=【获取token失败、谬误的申请签名、103101】(老版本,倡议降级)工程中的Info.plist中增加bundleId对应的key-value。搜寻Xcode我的项目工程中的.strings国际化文件,如果app存在本地国际化文件,请在每个本地国际化文件中增加CFBundleIdentifier,各个语言版本文件中都须要增加。 iOS端拉起受权页办法无回调[错误码为: 170206](老版本,倡议降级)请查看拉起受权页接口配置参数传参,传入模型是否为空或者传入的model.currentViewController是否为以后控制器 确认配置是否传入vc,拉起页面时vc必须为以后正在显示的vc;若传self,需确认以后self就是以后vc iOS端预取号间断报170606 或者是20101 (老版本,倡议降级)运营商限度不容许短时间内间断屡次频繁调用登录接口,请过段时间再试,测试时不要短时间内频繁调用 iOS端秒验报错问题:170001,谬误形容:私网IP有效,中国联通,网络谬误,error_code=1102能够试试开关下航行模式,这个是运营商基站缓存的问题,比方你在A基站获取的是IP1,这时你走到跨基站B拿到的是IP2,那么这时的IP1就生效了,只有重启手机或开关航行模式或重启流量能够刷新IP,这个是联通运营商外部SDK的缓存机制没有做好,和联通反馈过的,然而还是有局部地区没有解决好。 iOS端秒验2.1.2版本,挪动卡能够拉起界面,电信卡拉不起界面倡议用户更新版本,之前旧的SDK可能调用的电信sdk是老的接口,可能是电信SDK问题,更新到新的SDK,曾经能够 iOS端Demo预取号 resultDic: (null) error: Error Domain=SecVerifyErrorDomain Code=170001 "(null)" UserInfo="(null)"这个是联通的旧版SDK的域名问题,联通那边已提交证书从新审核通过,已解决或者是更新咱们的SDK到最新版本 iOS端Error Domain=拉起受权页失败,请查看SecVerifyCustomModel.viewController是否为顶层vc Code=6119144传的VC有问题,要么没有传,要的传的不是以后VC ...

September 22, 2022 · 2 min · jiezi

关于ios:MobTech-短信验证-Flutter插件

这是一个基于SMSSDK性能的扩大的Flutter插件。应用此插件可能帮忙您在应用Flutter开发利用时,疾速地实现获取验证码性能。Demo例子:https://github.com/MobClub/SM... 开始集成 在pubspec.yaml文件中退出上面依赖 dependencies:mobsms:mobcommonlib: 而后执行:flutter packages get 导入package在你的dart工程文件中,导入上面头文件,开始应用import 'package:mobsms/mobsms.dart';import 'package:mobcommonlib/mobcommonlib.dart';iOS: 平台配置参考 iOS集成文档Android: 导入SMSSDK相干依赖 在我的项目根目录的build.gradle中增加以下代码: dependencies { classpath 'com.mob.sdk:MobSDK:2018.0319.1724' }在/android/app/build.gradle中增加以下代码: apply plugin: 'com.android.application'apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"// 导入MobSDKapply plugin: 'com.mob.sdk'平台相干集成 在我的项目的/android/app/build.gradle中增加: android { //.........}apply plugin: 'com.mob.sdk'MobSDK { appKey "您的appkey" appSecret "您的appsercret" SMSSDK {}}这样就能够在你的project/android/src下的类中import cn.smssdk.flutter.MobsmsPlugin并应用MobsmsPlugin中的api了。 隐衷协定接入展现MobTech隐衷协定:开发者须要展现MobTech隐衷条款,并将批准后果回传给MobTech即可,举荐如下形式: 将MobTech隐衷协定的URL嵌入app本身隐衷协定形容中(举荐应用)第一步:将咱们sdk的隐衷形容增加到您的隐衷政策内容中 参考表达方式: 为了实现【 】性能,咱们应用了MobTech的【 】产品,此产品的隐衷策略条款,能够参考:http://www.mob.com/about/policy 第二步:先将mobFoundation.framework更新到3.2.24及之后的版本(能够在我的项目根目录找到这个mob库,看外面的plist文件,外面有版本号),而后须要在我的项目的plist文件里增加MOBNetLater参数配置,参数值配置为2配置如图: 第三步:回传用户隐衷受权后果(应用隐衷版本,如果不回传受权后果,sdk性能将无奈应用)接口如下: import 'package:mobcommonlib/mobcommonlib.dart';Mobcommonlib.submitPolicyGrantResult(true, (dynamic ret, Map err) => {});只须要在应用sdk性能接口之前调用一次这个接口回传,把用户承受您们隐衷条款与否的后果调用upload接口通知咱们即可。为了使MobTech的SDK产品能更好的兼容ios14零碎,同时合乎苹果将于2020年12月8日失效的要求应用程序(APP)开发者配置隐衷“标签”新政策,咱们根据MobTech不同的SDK产品制作了不同的配置操作文档。建议您在接入MobTech SDK服务时更新到最新版本,接入咱们的隐衷政策链接,同时在App Store Connect 后盾,参考对应SDK的配置操作文档,增加您App的隐衷“标签”数据内容。 App Store Connect 后盾配置参考文档:链接 接口办法阐明回传用户隐衷受权后果 (submitPrivacyGrantResult) /** * 回传用户隐衷受权后果 * @param status 用户是否批准隐衷协定 * @param result 默认传null */ Mobcommonlib.submitPolicyGrantResult(bool status, Function(bool)? result) ...

September 22, 2022 · 1 min · jiezi

关于ios:AppStore审核被拒otherother过审核不过审的经历

最新版Other问题,请查看我最近的一片文章 我次要开发小型利用,周期较短,提审较频,应用帐号也多,失常申请的三方购买的都有应用。提审时常常会遇到这样那样的问题,独自说other-other,也曾遇到过不下10次,我将会导致呈现这个问题的起因分为几类:1、帐号问题:大略半年前的那段时间苹果对帐号注册进行调整,目前曾经较为稳固。然而调整的这段时间常常会呈现各种问题,帐号注册不下来,付款付不了。在这期间,我买过一些集体开发者帐号,在利用没有问题的状况下,更新时根本都会被other-other,这些帐号能够确认都是用各种非正规伎俩申请的(比方黑卡),这类帐号要慎用,最好别用2、利用问题:某些利用较为敏感,比方网赚、传奇等,这类审查力度大,也有概率被other-other3、新帐号:无论是集体还是公司帐号,新的帐号被other-other的概率绝对会大很多上面说几个实在的提审经验:1、other-other被拒后立刻封号(没有14天)买的几个集体帐号,第一次提交利用顺利通过,过几天迭代版本的时候因other-other被拒,申述之,过几天告知被封号(立刻)剖析:次要是帐号问题,买的帐号大概率没有付费给苹果或申请的身份有问题,利用算是被波及,这几个利用other-other被拒均是机审,审核工夫不超过3分钟体现:反馈工夫1周内2、other-other被拒14天封号该帐号是本人申请,失常付费身份信息、手机都是实在存在的,所以帐号不存在问题,但提交的利用是网赚类的一款游戏,尽管齐全是污浊版(1.0还无任何网赚内容),但other-other后两天仍旧被提醒14天封号剖析:起因不是很确定,大概率和利用无关,可能利用较为敏感,所以封号了,上诉也有效体现:反馈工夫1周内3、other-other被拒,第2天返回4.3这是一个other-other后仍然失常审核的利用,帐号为公司帐号,申请下来不超过2周,帐号中只有这一个利用。提交第3个迭代版本的时候因other-other被拒,反馈之,第二天返回4.3,该利用自身代码不会4.3,次要说的是性能4.3剖析:帐号没问题,利用没问题(其实这个利用还真有问题,只是苹果没有发现),反馈的速度还是蛮快的,之所以4.3,我感觉应该是轻易给的理由,都other-other了不找出点问题切实是没有体面体现:反馈工夫1天4、其余(other-other)此外有的帐号反馈工夫超过6个月,反馈也是机械式的主动回复,大抵是这样的内容:哥晓得你有点焦急,然而焦急并没有什么卵用,等着吧您内~在此期间用该帐号提什么利用包含更新,都是other-other,最初14天封号,也是比拟喜剧2021-10-28 更新总结几点躲避other的形式1、账号坚定不能用购买的账号,这些账号能够必定付款100%有问题,就算幸运提过一个版本,也时刻有other的危险2、新账号提交第一个利用的时候要分外小心,要尽量避免4.3的问题和最小利用的问题,保障第一个利用能顺利上线,后续利用就平安很多2022-2-7 更新other的问题目前看来将会始终存在,目前能够总结出几点问题可触发other1、购买账号,触发other概率极大,就算第一次过审,后续更新也可能other并封号,所以不要买账号2、新账号,新账号触发other概率要比老账号大一些3、新利用,就算是老账号,新利用提交也有可能触发other4、更新触发other绝对概率较小,然而最好不要间隔上一个版本工夫太长对于other问题有如下总结:1、other必然是机审,只是模式未知2、other后不封号的概率也就30%,封号概率较大

September 22, 2022 · 1 min · jiezi

关于ios:云音乐-iOS-启动性能优化开荒篇

本文作者:Lazyyuuuuu一.背景 App 启动作为用户应用利用的第一个体验点,间接决定着用户对 App 的第一印象。云音乐作为一个有着近10年倒退历史的 App,随着各种业务不停的倒退和简单场景的重叠,不同的业务和需要不停地往启动链路上减少代码,这给 App 的启动性能带来了极大的挑战。而随着云音乐用户基数的不断扩大和深度应用,越来越多的用户反馈启动速度慢,况且启动速度过慢更甚至会升高用户的留存志愿。因而,云音乐 iOS App 急须要进行一个专项针对启动性能进行优化。 二.剖析2.1 启动的定义 大家都晓得在 iOS13 之后,苹果全面将 dyld3 代替之前的 dyld21,并且在 dyld3 中减少了启动闭包的概念,在下载/更新 App、零碎更新或者重启手机后的第一次启动 App 时创立。所以 iOS13 前后对冷启动的概念会有所区别。 iOS13之前:冷启动:App 点击启动前,零碎中不存在 App 的过程,用户点击 App,零碎给 App 创立过程启动;热启动:App 在冷启动后用户将 App 退回后盾,App 过程还在零碎中,用户点击 App 从新返回 App 的过程; iOS13及之后:冷启动:重启手机零碎后,零碎中没有任何 App 过程的缓存信息,用户点击 App,零碎给 App 创立过程启动;热启动:用户把 App 过程杀死,零碎中存在 App 过程的缓存信息,用户点击 App,零碎给 App 创立过程启动;回前台:App 在启动后用户将 App 退回后盾,App 过程还在零碎中,用户点击 App 从新返回 App 的过程; 在云音乐 App 启动治理过程中始终以 iOS13 之后的冷启动为对齐规范,不论是以用户视角测量的启动工夫还是用 Instrument 中 App Launch 测量的启动工夫都是在手机重启后进行的。 ...

September 21, 2022 · 7 min · jiezi

关于ios:上传了ipa但iTunes-Connect没有构建版本问题

AU上传ipa呈现下图红框提醒阐明胜利上传,如果App Store后盾没有呈现构建版本, 请登录 apple账号对应的邮箱查看反馈,特地注意垃圾邮箱,无论胜利还是失败,apple都会发邮件 一、首先登录iTunes Connect 后盾、查看ipa构建状况https://appstoreconnect.apple... 点击进入APP,点击流动,所有构建版本选项(下图所示),有两种状况! 1、ipa包没问题,显示正在解决,这种就是胜利上传,(期待解决即可,个别十几分钟解决工夫,偶 尔也会要几个小时) 2、ipa有问题,没有呈现版本正在解决,或者刷新页面正在解决的版本隐没(到开发者邮箱查看反 馈邮件起因,反馈邮件也可能在垃圾箱) 批改好苹果反馈的问题从新打包再传二、谬误反馈邮件示例及阐明谬误反馈邮件示例(如下图)!如 看不懂英文复制到百度翻译看下。 下图这个谬误的意思是此包用开发证书打包的ipa,上架须要用 公布证书打包。 当然还有其余各种各样的起因,具体复制反馈邮件翻译看下!证书类型不正确 上面这个是因为证书和形容文件不正确,公布须要抉择app store 类型的形容文件和distribution 类型的公布证书。 Invalid App Store Icon,还有一个十分常见的一个谬误(如下反馈)就是APP图标问题,不能使 用通明背景,个别把图标做成圆角,圆角那边就是通明的所以不行。 苹果的图标会主动圆角的,所 以不须要去改成圆角的,间接正方形的图标上传! ITMS-90717: Invalid App Store Icon – The App Store Icon in the asset catalog in ‘AppCanPlugin.app’ can’t be transparent nor contain an alpha channel.Best regards,The App Store TeamITMS- 90717:有效的App Store图标 – “AppCanPlugin.app”资产目录中的App Store图标不能通明, 也不能蕴含alpha频道。最好的问候,App Store团队三、批改相干谬误后从新打包版本号的批改修 改谬误从新打包的时候记得加下版本号,比方你刚上传的是1.0版本,从新打包时减少下版本号如 1.1,如果还是跟之前上传过雷同的版本号的ipa文件,上传不了原文链接: http://help.applicationloader...

September 21, 2022 · 1 min · jiezi

关于ios:MobTech-秒验审核流程指南

提交秒验审核之前,须要先在MobTech官网注册开发者账号,并在MobTech开发者后盾创立利用,详情能够点击查看注册流程。本文默认您在MobTech开发者后盾已创立利用并增加秒验产品。题目审核材料筹备提交秒验审核之前,您须要筹备好以下材料: 安卓端:包名、签名文件MD5 iOS:Bundle ID 提交审核流程关上需提交审核的利用进入MobTech开发者后盾,点击进入须要提交秒验审核的利用 点击立刻审核 填写审核材料确认填写的材料无误后,点击提交审核 点击提交后页面弹出“提交审核胜利!”的提醒,同时审核状态变为“审核中”。 审核后果确认审核通过下图为审核通过的 审核未通过 注意事项1、集体认证和公司认证账号都能够提交审核集成应用秒验SDK。 2、审核工夫:工作日当天15点之前提交,当天审核结束。其余工夫提交,在下个工作日审核结束。 3、审核无需上传利用,但需注意包名、签名信息要与理论统一。

September 20, 2022 · 1 min · jiezi

关于ios:iOS描述文件mobileprovision一键申请在主界面上点击描述文件按钮

iOS形容文件(.mobileprovision)一键申请在主界面上点击形容文件按钮。 新建ios形容文件而后点击新建,而后输出形容文件名称,形容文件名称字符和数字,本人好辨识就 能够。而后抉择形容文件类型,再抉择bundle ID,如果没有bundle id,能够点击 弹出框框上面 的增加bundle 按钮, bundle id也叫app id,app和形容文件绑定,不和证书绑定,所以每个app 有一个独自的形容文件,然而很多app能够专用一个证书。开发证书如果全副证书旁边没有证书 可 能的起因没有创立证书证书是ios push类型证书和形容文件不匹配,例如证书是ios app development,然而形容文件是app store类型解决办法是须要先去证书治理先创立好对应的证书类 型 测试设施如果抉择的类型是ios app development 类型,则全副测试设施旁边必须有测试设施并且 勾选上,如果没有显示测试设施,点击框框上面的增加测试,而后把测试设施的udid输出,把ios 设施连贯到以后pc,会主动取得设施的udid。 如果app编译后无奈装置到设施,可能是因为设施的 udid没有增加进入形容文件,则须要增加形容文件后从新编译。形容文件类型阐明带app store类 型的是公布类型,带development的是开发类型,push没有形容文件,所以不要问推送抉择哪种形容文件类型ios开发抉择ios app development类型公布app的时候抉择app store类型。

September 20, 2022 · 1 min · jiezi

关于ios:ShareSDK-开发过程中常见问题

QQ-分享报错901111,9001010等因为QQ当初须要审核后才能够分享(之前分享不须要审核),所以此谬误解决办法只需通过腾讯开放平台的审核即可,另外要查看注册好的利用的根本信息,包名、md5签名和Bundle id是不是填写正确,和我的项目里是统一的; 开放平台申请流程各个开放平台,第三方平台,用ShareSDK分享也是须要申请,失去第三方的受权的,所以申请是必须的,申请流程您能够参考:链接 Facebook如何分享链接卡片的模式fb分享链接,是依据链接中的配置,主动获取的,无奈从客户端中设置代码或者接口来配置,只能通过前端的配置来操作,具体能够参考此处阐明:Facebook显示卡片成果 Android端微信分享多图微信分享多图会报如下谬误;微信从6.7.3开始限度了多图的分享,从微信6.7.3版本之后微信的朋友圈还是好友都无奈分享多图的解决; Android端微信一个key是否能够绑定多个包名微信开放平台申请利用,一个key只能绑定一个包名,无奈绑定多个包名,如果须要申请多渠道包名的key的话,须要申请多个key; Android端微信没有回调微信回调:这个WXEntryActivity.java 类 必须要在wxapi下,wxapi必须要在您的工程的包名package下。此处的包名必须与您的微信开放平台配置的包名统一才能够的;目前ShareSDK提供了Gradle集成形式,会主动依据您的包名生成回调配置,如果gradle集成的话能够不须要本人手动配置; Android端ShareSDK跳到微信后,返回操作,勾销分享,还是提醒胜利您好,微信从6.7.2的版本之后批改了策略,是微信本人管制的,目前所有应用微信分享的都是这种成果; Android端ShareSDK for 微信小程序:ShareSDK能够关上小程序吗?能够的; ShareSDK能够分享后小程序,从小程序还原回app吗?能够的,且能够本人携带参数,具体详情见链接:链接Android端微信回调与利用宝渠道回调抵触微信规定回调类只能用WXEntryActivity。所以ShareSDK对其做了适配,如果利用宝抵触的话能够这样解决:链接 Android端新浪微博客户端分享报签名谬误查看没有微博状态是不是在草稿箱中,并且有SSO的相干提醒,此类问题个别是是因为微博开放平台配置的包名和签名与您的app的不统一导致的,确保签名和包名配置的 统一即可;Android端腾讯QQ与QZone分享没有回调,或者提醒勾销离线集成的话,须要在AndroidManifest中配置QQ的回调配置; <activity android:name="cn.sharesdk.tencent.qq.ReceiveActivity" android:launchMode="2" android:noHistory="true"> <intent-filter> <data android:scheme="tencent100371282" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> </intent-filter></activity>其中,tencent前面的是QQ的AppId,须要保障此AppId必须与你配置的QQ的AppId保持一致,否则回调会异样; 如果是Gradle集成,无需本人手动配置上述内容,ShareSDK会主动依据您的配置生成内容,防止本人配置谬误,如果gradle还是提醒勾销,能够删除build目录,从新加载即可; Android端Google登录提醒外部谬误?google开发者后盾,须要配置签名信息,这个谬误是因为您在google开发者后盾中的签名配置与您的app的不统一导致的,留神google配置的格局是SHA1,不须要去掉冒号; Android端Facebook想要分享胜利,须要做哪些内容Facebook,须要先申请利用,失去key,具体步骤查看链接:链接; 须要留神的是一些开关的关上,和回调地址的配置;配置完之后,将key配置到我的项目中,ShareSDK文档中有阐明,配置完即可分享; Android端ShareSDK的界面怎么删除不须要的平台离线集成,能够间接删除Jar包的形式即可,ShareSDK结尾的jar包,除了ShareSDK-core这个jar不能删除,其余的按须要的删除即可; Gradle集成的形式,是您在MobSDK下的ShareSDK外面加了什么平台,它就会有什么平台,具体参数能够参考Demo中的MobSDK.gradle文件,这里有全量的平台配置; Android端SDK配置第三方key的形式我认为第三方key的配置,配置在xml中,或者gradle中配置不平安,有其余的配置形式吗? A11.ShareSDK提供了三种配置形式,一是在ShareSDK后盾配置,二是在客户端中代码配置,三是惯例在xml中或者gradle文件中配置,SDK的拜访优先级顺次递加,也就是说如果您在ShareSDK后盾配置了,就不会拜访代码中和xml中的配置参数了; 具体配置查看文档:第三方平台初始化配置; Android端是否能够在App中不同中央显示不同的平台ShareSDK的OnekeyShare提供了接口,能够暗藏某个平台,oks.addHiddenPlatform(QQ.NAME);,比方这句就是暗藏QQ,想要暗藏其余的平台反复调用即可,留下您想留下的平台即可; Android端OnekeyShare分享,不同平台分享不同内容OnekeyShare的分享有提供接口,能够自定义某个平台分享的内容不同,具体详情见链接:链接Android端ShareSDK的默认onekeyshare的回调如何批改在oks.show之前增加代码,本人能够管制,留神oncomplete中是子线程,给提醒的话须要传到UI线程中增加提醒; oks.setCallback(new PlatformActionListener() { @Override public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) { } @Override public void onError(Platform platform, int i, Throwable throwable) { } @Override public void onCancel(Platform platform, int i) { }});Android端OnekeyShare分享UI界面的自定义配置private void showShare(String platform) { final OnekeyShare oks = new OnekeyShare(); //指定分享的平台,如果为空,还是会调用九宫格的平台列表界面 if (platform != null) { oks.setPlatform(platform); } //去除分享正在后盾的提醒 oks.setDisappearShareToast(true); //敞开一键分享默认ui oks.setSilent(true); // 暗藏QQ平台不显示(想暗藏什么平台,填写什么平台,能够屡次调用) oks.addHiddenPlatform(QQ.NAME); ............. //启动分享 oks.show(MobSDK.getContext());}Android端OnekeyShare分享是否能够不要九宫格页面能够的,在onekeyshare分享的代码中加上您先独自调用的参数即可;eg:oks.setPlatform(QQ.NAME);加上这句就是独自分享到QQ; ...

September 19, 2022 · 3 min · jiezi

关于ios:IOS证书制作教程

Appuploader能够辅助在Windows、linux或mac零碎间接申请iOS证书p12,及上传ipa到App Store,最不便在Windows开发上架没有苹果Mac电脑的开发者!配合本教程应用,能够疾速把握如 何真机测试及上架!点击苹果证书 按钮 点击新增输出证书明码,名称这个明码不是账号密码,而是一个爱护证书的明码,是p12文件的明码,此明码 设置后没有其余中央能够找到,遗记了只能删除证书从新制作,所以请务必记住明码。还有为了平安 起见,明码不要太简略。 证书名称是你为了在证书列表外面便于区别的一个字符,本人好辨识就能够,尽量是是字母和数字之 类抉择证书类型 带distribution的是公布类型,带development的是开发类型。 apple类型 =ios+mac,所以开发时抉择ios app development和apple development 类型都是能够的 抉择 bundle ID只有局部类型的证书须要抉择bundle id,例如推送证书。因为大部分证书是不和app关 联的。而是通过形容文件profile文件关联app。应用appuploader服务同步如果冀望制作好证书后 在其余电脑上同样能够下载到这个证书,或者和你共事同步此证书,则须要勾选应用appuploader服 务同步。否则您须要手动治理p12文件在不同电脑之间的传输,并且一但创立下载后,无奈在其余电 脑下载,只能手动复制文件过来。个别状况下,举荐应用appuploader服务同步。证书类型阐明IOS 开发抉择apple development或者ios app development 类型 ios 公布抉择 apple distribution或者 ios distribution (app store and ad hoc) 开发推送证书抉择 apple push notification service ssl (sandbox) 公布推送证书抉择 apple push notification service ssl (sandbox & production)其余证 书不是很罕用,能够自行百度各种证书阐明原文链接: http://help.applicationloader...

September 16, 2022 · 1 min · jiezi

关于ios:iOS-健康共享失败如何解决

问题形容应用iOS“衰弱”App尝试共享衰弱数据时,提醒无奈与***共享衰弱数据:***没有可查看你数据的设施 解决方案须要满足的条件单方(共享与被共享者)领有装有 iOS 15 或更高版本的 iPhone 或 iPod touch。单方(共享与被共享者)领有关上了“衰弱”和双重认证的 iCloud 账户。您要开始与之共享的对象必须曾经连同他们的 iCloud 账户邮箱一起保留在您的“通讯录”中(iCloud 账户邮箱即 iCloud 账户绑定的邮箱信息,不是强制要求 @iCloud.com 邮箱)。单方(共享与被共享者)领有了Apple ID 的 iMessage 信息(iMessage 信息登录 Apple ID 办法:设置 - 信息 - iMessage 信息<关上> - 发送与接管 - 登录Apple ID)。设置共享在 iPhone 上,关上“衰弱”App。轻点“共享”标签,而后轻点“与别人共享”。确保您的 iCloud 帐户已关上“衰弱”。搜寻联系人以与对方进行共享。如果联系人的姓名显示为蓝色,则表明这个人的设施反对共享。如果联系人的姓名显示为灰色,则表明这个人的设施不反对共享。轻点“查看倡议主题”或“手动设置”。抉择您想要共享的数据。轻点“共享”,而后轻点“实现”。

September 16, 2022 · 1 min · jiezi

关于ios:MobLink-iOS端快速集成文档

开发工具:Xcode集成形式:手动导入SDK或者Pod集成SDK版本反对:SDK反对Xcode 9.1.0, iOS8.0+及以上版本集成前筹备注册账号应用MobLink之前,须要先在MobTech官网注册开发者账号,并获取AppKey和AppSecret,详情能够点击查看创立利用流程MobLink后盾与我的项目配置注册完Mob账号后,须要在Mob后盾以及我的项目里进行相干信息的配置,详情能够点击查看具体配置信息MobLink流程图 增加配置下载SDK导入我的项目(1)CocoaPods形式引入按需在 Podfile 文件中增加命令pod 'mob_linksdk_pro'(2)手动下载SDK引入i.将整个SDK文件,外面MobLinkPro.framework,MOBFoundation.framework拖到我的项目中,如下图:ii.拖进去之后会呈现如下图选项,抉择以下3个选项: 增加依赖库 抉择我的项目Target - Build Phases - Link Binary With Libraries,而后抉择“+”进行增加零碎库: libsqlite3libz1.2.5libc++Xcode配置(1)在我的项目中的info.plist文件中增加键值对,键别离为 MOBAppKey 和 MOBAppSecret ,值为在之前在MobTech官网开发者后盾申请的AppKey和AppSecret: 接口调用回传用户隐衷受权后果(uploadPrivacyPermissionStatus)为保障您的App在集成MobSDK之后可能满足工信部相干合规要求,您应确保App装置首次冷启动且获得用户浏览您《隐衷政策》受权之后,调用Mob提交到的隐衷协定回传函数uploadPrivacyPermissionStatus回传隐衷协定受权后果。反之,如果用户不批准您App《隐衷政策》受权,则不能调用uploadPrivacyPermissionStatus回传隐衷协定受权后果。相干隐衷申明请参考链接合规指南 /** 上传隐衷协定受权状态 @param isAgree 是否批准(用户受权后的后果) @param OnResult 执行回调后果,可为nil (留神业务逻辑不要依赖于这个success后果,倡议业务逻辑在调用这个接口之后来写) */+ (void)uploadPrivacyPermissionStatus:(BOOL)isAgree onResult:(void (^_Nullable)(BOOL success))handler;示例代码调用地位开发者能够本人指定,只需在应用SDK性能之前调用即可。 oc/swift #import <MOBFoundation/MobSDK+Privacy.h>[MobSDK uploadPrivacyPermissionStatus:YES onResult:^(BOOL success) {}];制作场景(getMobId)(1)在须要复原的控制器中实现UIViewController+MLSDKRestore的办法,如下: /** 控制器初始化 @param scene 场景参数 @return 控制器对象 */- (instancetype)initWithMobLinkScene:(MLSDKScene *)scene;示例代码 #import <MobLinkPro/MLSDKScene.h>#import <MobLinkPro/UIViewController+MLSDKRestore.h>@property (nonatomic, strong) MLSDKScene *scene;//实现带有场景参数的初始化办法,并依据场景参数还原该控制器:-(instancetype)initWithMobLinkScene:(MLSDKScene *)scene{ if (self = [super init]) { self.scene = scene; } return self;}对于实现带有场景参数初始化办法的补充:如果您的控制器采纳xib的形式来初始化的,那么实现该初始化办法时请参考如下代码: ...

September 15, 2022 · 2 min · jiezi

关于ios:下载和安装appuploaderIOS

开发工具官网地址 http://www.applicationloader.... 最新版本曾经优化了没领取688给apple的账号登录流程,无需再装置其他软件。 立刻下载最新版本 在appuploader官网首页下载,如果您是windows电脑,则抉择点击 windows 版,如果是mac 电脑则抉择 mac版 下载后解压到电脑中就装置实现了。windows启动 windows零碎外面,解压后双击appuploader.exe就能够间接运行了。 尽量不要放c盘,不要放带 中文门路的盘。如果不行能够右击而后抉择管理员运行试试。 mac和linux 电脑启动解决 如果是在mac或者linux电脑中,须要应用命令行,对appuploader批改权限。 在appuploader解压后的目录,关上命令行工具,执行上面的命令,使 appuploader具备可执行权限。就能够双击启动了。sudo chmod -R 777 ./* 不会命令行的也能够试试,把各项权限都改查可执行。 mac电脑批改文件权限部 分性能不可用解决 有些电脑可能会对runtime下的组件进行权限管制,导致无奈调用组件,例如无 法上传,能够双击运行下试试是否被零碎权限阻止,失常会是一个彩色框一闪而 过,如果零碎提醒权限谬误,则放开权限,容许执行。 驱动装置 装置测试,主动读取设施udid须要装置苹果手机驱动,驱动下载地址。局部电脑 短少程序运行的根本库,能够装置驱动解决。下载后把文件夹内的exe都装置后 重启工具。 下载apple手机驱动如果是未领取688的apple账号,还须要装置 icloud。icloud下载地址:https://support.apple.com/zh-... 下载icloud原文链接:http://help.applicationloader...

September 15, 2022 · 1 min · jiezi

关于ios:IOS实用玩机技巧爱思助手-IPA-签名功能常见问题汇总

爱思助手 IPA 签名性能常见问题汇总 应用 Apple ID 签名 IPA 文件也就是常说的“集体签”,很多小伙伴在应用Apple ID签名时,有时候会呈现证书申请失败,或者签名失败,这类报错信息。 以下汇总爱思助手 IPA 签名性能在应用时可能遇到的问题和解决办法。 1.装置已签名的软件须要越狱吗? 不须要。不论是应用证书签名还是应用 Apple ID 签名,装置时都不要求设施越狱,和越狱并没有什么关系。 2.用于签名的 Apple ID 须要敞开双重认证吗? 不须要。不管 Apple ID 敞开或者开启双重认证,都能够用来签名 IPA 文件,只不过已开启双重认证的 Apple ID 在第一次应用时须要进行验证,之后应用时不须要再次验证。 3.签名的有效期是多久? 应用证书签名的 IPA 文件,装置后的应用工夫取决于证书的有效期,如果在有效期内证书被撤消,软件将无奈再次关上,也就是常说的“掉签”;应用 Apple ID 签名装置的利用有效期为 7 天。 4.反对批量签名吗? 反对。导入后勾选须要签名的文件,抉择证书或者用于签名的 Apple ID,而后点击“开始签名”即可。 5.应用 Apple ID 签名后的 IPA 文件能够装置到其余的设施上吗? 不能够。应用 Apple ID 签名的利用和设施标识绑定,签名时如果抉择的是 A 设施的设施标识,就无奈将签名后的 IPA 文件装置到 B 设施上。 6.签名后的安装包为什么没有装置到设施上? IPA 签名工具目前没有主动装置性能,签名实现后须要手动“关上已签名 IPA 地位”,而后双击应用爱思助手装置。 7.装置 IPA 文件失败提醒“设施未越狱”是什么起因? ...

September 14, 2022 · 1 min · jiezi