在iOS设备中安装SSL证书(.cer)

对于开发人员而言,在iOS设备中安装不同的证书是一个常见的工作流程步骤。 有很多方法可以做到,但是我认为这是最简单的一种方法。 高级步骤: 创建临时wifi网络 运行简单的Web服务器 浏览iDevice中的目录 安装证书 详细步骤: 1.建立一个特别的wifi网络 在我的mac机中创建临时网络并没有帮助我。 如果它不适合您,请继续创建热点,然后将iMac和iDevice连接到该wifi。 2.运行简单的Web服务器 在Mac中打开终端。 转到要安装证书的目录 运行以下命令。 python -m SimpleHTTPServer 在Mac中打开浏览器,然后尝试以下地址 http://本地主机:8000 / 理想情况下,您应该看到类似于以下屏幕的内容: 记下您Mac的IP地址。 3.浏览iDevice中的目录 在iDevice中打开safari,然后输入以下网址,然后点按go。 http:// xx:xx:xx:xx:8000 / 如果一切正常,您应该看到类似以下内容: 现在,选择要安装的证书,然后按照iOS抛出的提示进行操作。 请享用!

推出iOS版ScrollingCardView

对于Project Prox,我们被要求实施这样的设计¹: 具体来说,这是一个卡片视图: 拥抱内容,当内容出现时动态扩展高度 如果内容比卡片高,将滚动其内容 经过一番搜索,我们发现不存在这样的小部件! 希望我们的努力对其他人有用,我们创建了ScrollingCardView库。 用法 ScrollingCardView的用法与其他任何视图一样。 首先,创建视图,启用自动布局,然后将其添加到视图层次结构中: 然后像其他任何视图一样约束卡片视图: 最后,指定卡片视图的内容: 卡视图具有智能的视觉默认设置(包括阴影),但是您也可以自定义它们: 想要它? ScrollingCardView在CocoaPods上可用:您可以在GitHub上找到安装说明和源代码。 有什么问题吗 功能要求? 提出问题或在#mobile上找到我们。

由Apple推荐您的应用。

几天前,我收到了Apple评论小组的一封激动人心的电子邮件: 我下载了模板并创建了一个图形,该图形将显示在应用商店的标题上。 图片提交并获得批准后,我等待了几天,开始看到下载量显着增加。 Apple仅在某些国家/地区提供应用程序,因此我对功能区不是美国感到失望,但是当我前往马德里时,能够在Apple Store的iPhone上看到横幅。 这导致了一个大问题: 如何使我的应用程序具有特色? 商店中有超过280万个应用程序,但只有少数应用程序具有特色。 要获得此免费促销,您需要脱颖而出并完全遵守Apple的准则。 功能和设计是两个最重要的因素。 您应该拥有简洁简洁的设计,当用户查看您的页面时,该设计将脱颖而出。 获得特色归结于您给应用审阅者的印象。 确保您的应用代表Apple的设计价值和使命。 接下来,该应用必须具有明显的用途,并且可以用一个句子来总结。 该应用程序必须能够正常运行并且是唯一的。 苹果希望推广自己认为能够成功的应用程序,因为它可以赚钱。 不是因为他们想奖励有才华的开发人员。 确保该应用程序吸引广泛的受众。 苹果公司免费为您提供价值数百美元的广告,因为苹果公司希望从具有巨大潜力的应用中获利。 如果您的应用程序适用于小众社区,那么它将获得的下载量就非常有限,并且Apple不会对您的应用程序功能感兴趣。 利用新技术。 苹果希望用户采用新的iOS功能。 观看WWDC,并在Beta版中充分利用新功能。 如果您遵循这些准则,则将增加使应用程序具有特色的机会。 我的应用在发布不到一年后才被推荐。 请耐心等待并继续努力。 祝好运!

动态分析iOS应用程序而无需越狱

静态分析与动态分析 让我们从不同类型的分析和一些比较开始这个冒险。 静态分析可以帮助检测大量问题,例如硬编码的敏感数据,各种漏洞,错误和后门。 通过分析iOS应用程序,我们可以注意到有用的工具,例如IDA Pro,Hopper Disassembler,MobSF或Radare2。 这种方法的优点是能够自动扫描文件和代码,包括几乎不覆盖100%的未使用代码。 动态分析可帮助您在应用程序运行时对其进行浏览。 例如,在运行时检查程序的状态(内存内容,寄存器,变量值),了解工作的逻辑,等等。 使用这两种方法,您可以在分析应用程序时执行最定性的工作 ,覆盖整个攻击面,并找到最大数量的错误和漏洞。 动态分析 没有设备或仿真器,就不可能对移动应用程序进行动态分析。 几乎总是首选实际设备(除非非常需要对该任务进行并行化)。 但是设备的存在增加了研究价格。 此外,您必须能够在设备上安装自己的应用程序和工具以执行应用程序分析。 Android情况 在浏览Android应用程序时,通常可以在IDE中使用设备和模拟器的旧版和廉价版。 Android有一种简单的方法来提升用户的权限,即“获得root访问权”,以便在其上安装自己的工具和应用程序。 在先前来自中国的智能手机型号中,设置中的切换器可让您一次点击即可获得超级用户特权。 在每天使用的个人设备上,root用户会大大削弱系统的安全性并导致恶意软件感染。 在研究中,这是一件有用的事情,可让您加快并改善研究进度。 iOS问题 在审核iOS应用程序期间,还有一些其他要点: 设备的成本很高,但是需要单独的设备。 您不能使用个人设备。 设备型号:较旧的智能手机和平板电脑缺少新功能(例如,强制触摸/面部识别/ ..),因此不适用 设备类型:电话,平板电脑,手表-所有这些都在分析中起着重要作用(我们遇到了以下情况:同一应用程序中的漏洞仅在特定类型设备的版本中存在) 最新版本的iOS:API不断发展,为了进行定性分析,应在最新版本的iOS上进行分析 在设备上越狱:安装应用程序和工具进行检查,访问文件系统 越狱 早些时候,当第一部iPhone面世时,它在发布后几天就遭到了黑客攻击。 较低的安全级别一直保持到操作系统的第四版:研究人员创建了扩展(进行了调整),进行了iOS的组装并添加了应用程序。 随着时间的流逝,苹果通过在更新中添加了为越狱设备创建的一些最流行的功能,改变了其对安全性的态度并显着增强了系统保护。 例如,控制中心经过了调整,后来成为iOS的内置组件。 系统的每个新发行版都增加了查找和利用漏洞,更改API和可访问性功能的时间(将某些移动到私有区域,某些移动到公共区域)。 这些变化和许多其他变化使安全研究人员和调整开发人员(系统附加组件)和应用程序的工作变得困难,迫使他们更新其工具以使用新的API和功能。 对设备的增强保护还受到密切关注“坏蛋”,情报机构以及所有想要访问设备上数据的人员的影响。 因此,今天,iOS远程越狱的价格达到了150万美元。

如何为您的应用制作出色的,高转化率的App Store屏幕截图

您已经制作了下一个出色的应用程序。 您已经出汗,编码,经过测试,现在可以将最终代码提交给应用商店。 但是现在您将面临营销。 您的潜在用户会看到的最重要的事情之一就是您的应用程序的屏幕截图。 因此,他们不仅需要炫耀您应用程序的最佳元素,而且还需要说服用户您的应用程序是可以下载的。 应用程序应为用户解决一个问题。 游戏解决了无聊。 GPS应用解决了迷路(或迟到)的问题。 食谱应用可让您避免一遍又一遍地吃同样的东西。 因此,您的屏幕截图应反映出您应用的价值。 您的应用程序可以解决什么问题,应用程序的哪些部分向用户展示了它是如何做到的? 因此,逐个屏幕地引导模型用户浏览您的应用程序。 从您的应用程序主屏幕开始,并对其进行截图。 然后,逐步获取以下四个屏幕截图,这些屏幕截图显示了您的用户如何从问题到解决问题! 拥有五个屏幕截图(主屏幕以及另外四个屏幕截图)后,请转到AppToolkit.io并设置一个免费帐户。 设置免费帐户后,为“截图生成器”选择“入门”。 选择您要为其截图的应用程序商店(每个商店中可用的设备类型不同,因此在将应用程序提交给Android时不使用iPhone框架,反之亦然)。 然后,选择所需的布局样式-设备上方或下方的文本。 如果要显示整个设备或仅显示带有文本的屏幕快照,则这些功能是专业功能,但并非必需。 如果您有水平屏幕截图,只需上传它们,AppToolkit就会调整屏幕截图的框架和文本。 在屏幕截图上方编辑所需的文本,重点关注应用程序要解决的问题。 编辑背景颜色以补充应用程序屏幕颜色或上传您喜欢的背景图像。 AppToolkit中即将推出的功能将包括基于图标颜色或上传的屏幕截图中的颜色的建议背景颜色。 因此,将有一个选项可以上传从一个屏幕截图到下一个屏幕截图的连续背景图像,并在用户从左向右滑动时创建一个流程。 完成第一个屏幕截图后,您可以转到屏幕#2、3、4和5。请确保按所需的顺序从左到右对其进行组织,以便可以看到它们的外观。应用商店。 如果要在不同的幻灯片上的屏幕快照的上方和下方都显示文本,请确保交替进行操作,在第一张幻灯片的上方显示文本,在第二张幻灯片的下方显示文本,在第三张幻灯片的上方显示文本,等等。样式,还将帮助您转换用户。 而已。 完成屏幕截图集后,您可以下载和/或根据需要进行编辑。 如果您需要一组新的屏幕截图,则可以以每月19美元的价格设置一个专业帐户,并制作任意数量的集和版本。 很简单。 在图标之后,您放入应用商店中的屏幕截图是潜在用户看到的最重要的视觉内容。 因此,请充分利用它们,并利用它们来销售您的应用程序,以最好地解决用户的问题。 如果您查看培根使一切变得更好,则应用主屏幕让您渴望培根,我们可以为您解决该问题。 只需在这里获取培根,即可使一切变得更好 Ross Rojek是GoLocalApps的CTO 。 自2010年以来,GoLocalApps已开发并启动了90多个应用程序。最畅销的应用程序包括 Diners和Drive-Ins TV 以及 Secret Menu Starbucks Pro Edition 。 在Twitter上关注他 @golocalapps

CocoaTouch:框架和边界

用户界面是应用程序开发中最重要的部分之一。 我们的工作是创造出色的用户体验,以与其他应用程序脱颖而出。 但是,让我们先深入基础知识。 对于UI组件,我们必须考虑两件事: 我的元素有多大? 应该放在哪里? 我的元素有多大? 您必须考虑UI元素的宽度和高度 。 Core Graphics为该用例提供了一个结构。 CGSize结构{ CGFloat宽度; CGFloat高度; }; 应该放在哪里? UI元素使用坐标系定位。 这开始于(在iOS中)屏幕的左上角。 用CGPoint结构指定位置。 CGPoint结构体{ CGFloat x; CGFloat y; }; 两者在一起 现在我们有了大小和位置。 两者结合形成一个“矩形”。 还有一个同时包含信息的结构,称为CGRect 。 struct CGRect { CGPoint起源; CGSize大小; }; 仔细研究源代码,我们将看到矩形是一个包含已知结构(CGSize和CGPoint)的结构 。 帧 让我们创建一个新的UIView。 将矩形(大小和位置)指定为CGRect并将其作为参数传递给构造函数。 let rect = CGRect(x: 70, y: 70, width: 160, height: 100) let myView = […]

与技术女士的三个问题:Tinybop产品负责人Youngna Park

艾莉森·格林伯格·福恩斯的访谈 您是Tinybop产品负责人。 您能告诉我们更多关于公司以及您从事的工作吗? Tinybop为孩子们制作教育性的iOS应用程序。 他们旨在鼓励孩子们对周围的世界更加好奇-提出问题,想知道为什么? 如何? 并成为发明家和讲故事的人。 我们有两个不断增长的应用程序系列:资源管理器的图书馆和数字玩具。 Explorer的Library应用程序向孩子们介绍了通用的大型主题,例如The Human Body,Simple Machines,Weather和Skyscrapers。 Digital Toys应用程序使孩子们能够构建和测试不同的作品; 在Infinite Arcade中拥有自己的视频游戏,在The Monsters中拥有可怕的怪物,在The Robot Factory中获得了机器人,这是2015年度iPad应用程序。 现在,我们推出了11个应用程序,今年还将发布另外两个应用程序。 自Tinybop成立(2012年)以来,我一直领导并壮大产品团队,现在从事产品工作并监督日常运营。 在产品方面,这意味着要弄清楚我们的产品路线图(我们计划在明年扩展到Android并开发以学校为中心的产品),确保我们所有的项目都有适当的资源,弄清楚并向其传达产品战略。团队,并作为产品团队与设计,工程,市场营销,研究等之间的接触点,以确保我们位于同一页面上,并且所有产品在外观和感觉上都确实像Tinybop产品。 公司发展了很多。 对于正在成长的团队或正在迅速成长的团队成员的其他Tech Ladies,关于如何负责任地进行扩展,您可以提供一些建议吗? 缩放是如此艰难! 周围没有捷径。 在Tinybop,我们已经或正在做的一些事情: 保持对不断变化的流程的开放态度:作为一个团队,我们对流程本身非常迭代。 无论是决定使用哪种工具(Trello,Asana和Pivotal)还是如何召开概念会议,我们都对它是否有效持诚实态度。 从项目到项目,我鼓励我的团队问:“这项工作成功了吗? 如果是后者,我鼓励他们下次尝试并尝试一种更好的方法。 文档资料:我们最近雇用了几位新产品经理,我意识到在公司工作了很长时间的一些人中积累了多少信息。 我认为,向人们提供有关流程和产品的历史记录,策略和文档,以使他们有权制定决策并采取行动,这一点非常重要。 我们的产品团队目前正在处理大型产品入门文档,该文档涵盖了开发的所有主要阶段,产品价值,策略以及我们发布的每个应用程序。 不要只关注招聘,而要考虑内部增长:当您扩大团队规模并扩大流程时,我认为有一种趋势正在思考新员工如何解决您所有的增长问题。 但是,我认为重要的是要退后一步,了解团队中的技能,并确保您正在考虑团队中现有人员的成长空间。 许多人需要被授权去做最好的工作。 我们最近与所有人一起制定了职业发展计划,我学到了很多人想要努力的目标,而不仅仅是他们目前的工作。 Tinybop致力于激发儿童的好奇心。 如果您可以给年轻的自己一个建议,那会是什么? 哈! 我的年轻自我会从很多建议中受益。 我是一个认真认真的超级书呆子。 我会告诉自己放松一点,打破规则。 我太专注于适应和取得好成绩。 最好的事情来自有点奇怪。

编写一次-在整个项目中随处使用,无条件-无修改

视力: 更少的代码,更少的错误,更少的测试用例 任务: 通过在极端情况下减少每种情况下的项目代码,减少错误的可能性并提高可伸缩性。 挑战是什么? 您是否曾经考虑过为整个项目只编​​写一次表视图委托和数据源? 一旦您完成了在一个位置编写代码的工作,即实现数据源和创建表视图的委托方法,就不需要在整个项目中实现数据源和表视图的委托的视图控制器,就必须在一个位置编写仅放置一次并使用很多次,当您将使用不同的单元设计开发新的屏幕时,不需要任何条件或修改。 您的可重用代码也必须可在其他项目中使用,而无需任何修改或条件。 您的解决方案必须是框架级别的解决方案,而不是项目级别的解决方案。 您无需在此处创建框架,但我的上下文是,您不能限制用户使用他/她自己的现有基类(如果他/她已经在项目中),例如UIViewController和UITabelViewCell的基类。 您不得限制用户访问Apple的UIKit提供的API来创建表视图或表视图单元格,应允许用户使用纯代码或XIB或情节提要创建表视图或单元格。 用户-正在使用您的可重用组件的用户 在常规编码中,每当在视图控制器中确认UITableViewDatasource时,编译器都会要求您提供两个必需的方法cellForRowAtIndexPath: 和 numberOfRowsInSection: 如果您错过了这两种方法中的任何一种,则会出现编译时错误。 您的可重用组件必须允许用户在需要时无限制地在view controller手动编写委托和数据源方法。 这意味着如果用户只想编写cellForRowAtIndexPath: 具有自定义逻辑且未实现numberOfRowsInSection:如果用户想要在cellForRowAtIndexPath:自定义逻辑,则该方法必须起作用cellForRowAtIndexPath: 只要。 同样,所有UITableViewDelegate方法也是如此。 不允许使用闭包或块或obj-c运行时 , 它只能通过委托模式来实现。 开始考虑挑战。 如何参加这项挑战? 推动自我,学习新事物并成为赢家。 1.只需填写此Google表单: https : //goo.gl/forms/zj2YrQu3H1LTbEKw2 2.为您的解决方案提供适当的步骤或Readme.md,因此我可以通过创建新的视图控制器,新的单元格和新的数据模型或字典来测试您的组件,从而对其进行测试。 3.解决方案提交: https : //goo.gl/forms/RIgCO1EAqmHgPGPN2 优胜者的奖金是多少? 获奖者将获得151.00 USD的奖金。 可能会增加到200.00 USD或更多,具体取决于参与者和获胜者的总数。 如果将有不止一名获奖者,我将按获奖者人数分配奖金。 如果有两名获胜者,则奖金为151.00美元 ,则每位获胜者将为151/2美元或更多 。 获奖者将如何获得奖金? 贝宝 UPI付款 Paytm | 免费|电话支付| G Pay(Google pay)应用 […]

在Bitrise上为Cordova和Ionic项目引入自动预配置

现在,可以在 Bitrise 上分离Cordova和Ionic项目的准备阶段和构建阶段 ,因此您也可以对这些项目类型使用iOS Auto Provision步骤。 -! 我们最近发布了iOS自动配置步骤,该步骤可管理Xcode项目的iOS配置配置文件。 该步骤使iOS的代码签名更加容易:您只需上传iOS开发和发行证书,该步骤将处理Provisioning Profiles。 该步骤分析iOS Xcode项目(或工作区),以确定签署该项目需要哪些Provisioning Profiles。 Cordova和Ionic的构建步骤(Cordova存档和Ionic存档)使用Cordova和Ionic CLI生成本机项目(通过调用platform rm和platform add命令)并进行构建(通过调用build命令)。 与在工作流中运行Cordova archive和Ionic archive步骤之前一样,本机iOS Xcode项目不存在,因此自动配置功能不适用于这些项目类型。 为了让您的生活更轻松,我们进行了一些更改以使其正常运行: 1.分开的Cordova / Ionic项目的准备和构建阶段 Ionic和Cordova存档步骤都有输入: Should remove platforms as prepare step? ,它控制是否应在构建阶段之前删除并重新添加本机平台。 通过将此输入设置为false ,该步骤将不会触摸生成的本机项目。 2.为Cordova / Ionic项目的准备阶段创建了新步骤 我们在构建步骤中关闭了平台删除功能,但是我们还必须注意准备过程。 从现在开始,您可以使用: 和 脚步。 新的准备步骤可以通过调用platform rm和platform add命令从您的Cordova和Ionic项目生成本机项目。 3.更新了 iOS Auto Provision 步骤 最新步骤版本(1.1.2)导出 项目的开发团队 已安装的代码签名标识的名称 已安装的配置文件 这些输出可用于提供“ […]

WSJ iOS团队如何通过OKR驱动的功能请求促进跨团队协作

今年早些时候,《华尔街日报收入》团队的一些同事发现了一个完美的工具来帮助他们加大广告工作,但是他们需要WSJ iOS团队(我的团队)来实现该工具的软件开发套件(SDK)。 尽管这似乎是一个简单的请求,但我们很快发现了多个危险信号,其中包括由于SDK庞大而可能对WSJ应用造成巨大性能影响。 在我们的团队之间经过三个多月的反复交流之后,我们得出结论认为SDK不必全部实现。 我们仅需要SDK中包含的一项非常基本的功能。 两个团队都对结果感到满意,但是花了不必要的时间才能达到这个简单的解决方案。 当我们享受合作的广泛时,我们的团队想知道这个古老的问题: “我们如何更快地获得相同的结果?” 为了改善跨团队的协作,《华尔街日报》的产品,设计和工程(PDE)小组一直在实施“ 目标和关键结果 (OKR)”,这是一种流行的方法,鼓励个人设定可衡量的,面向团队的目标设定目标,支持团队目标,最终帮助推动公司目标。 为了给这些PDE OKR的规模提供一些背景信息,以下是《华尔街日报》上整个​​PDE组的示意图。 尽管事实证明OKR在整体PDE方面非常成功,但仍缺乏对功能级别的转换。 我和我的团队认识到了收入团队的要求的意图,但并没有完全理解其价值或重要性。 意识到缺乏对功能级别细节的关注,我的团队开始尝试在产品级别上使用OKR进行功能请求。 从那时起,我们已经看到了一些奇妙的好处,包括更好的团队之间的协作,更轻松地确定功能请求的优先级以及经过更好的功能审查。 现在,当另一个团队希望就某个功能进行协作时,我们要求该团队的产品负责人将请求与PDE级别的OKR以及具体请求的客观和预期关键结果以及如何进行度量保持一致。 通过解决以下问题: 团队确保他们正在考虑部门级别的目标 涉及功能请求的每个人(从工程,设计到产品)都了解为什么要通过已定义的预期结果来实现该功能 所有PDE都可以更好地集思广益,以达到相同的结果 还不清楚吗? 让我们看一个假设的场景:产品负责人要求WSJ iOS团队提供一项特定功能,即“添加一个新的介绍性视频,以显示通知在应用程序中的位置。”我们的模板如下所示: 功能要求:添加新的介绍性视频,以显示通知在应用程序中的位置。 PDE目标:使读者体验引人入胜。 PDE关键结果:到第三季度末,将至少具有一个针对iOS或Android应用程序的通知警报的读者数量从10,000个增加到12,000个。 功能目标:鼓励读者注册他们关心的通知。 功能关键结果: 在第三季度末,将至少已为WSJ iOS应用程序打开一个通知的读者数量从5,000个增加到6,000个 将第三季度访问通知设置的读者数量从10,000个增加到12,000个 将第三季度请求通知的客户服务票证数量从200减少到100。 当我们将这些由OKR驱动的功能请求带给更广泛的团队时,就会展开美好的协作。 设计师可能会说:“如果我们想让更多的读者进入通知部分,这将有助于将图标更新为更加醒目和直观的方式。”然后工程师可能会大声说:“因为我们要针对特定​​读者,我们可以使该应用再次向那些没有通知的读者显示入职通知屏幕。” 通过促进OKR驱动的功能请求,我们开始鼓励采用不同的观点,以便团队协作地考虑请求的基础价值,而不只是请求本身。 功能请求的讨论变得简洁明了,指向“把功能请求扔在篱笆上等待其完成”的心态已过时。 我们计划继续迭代此方法,以便将来使跨团队协作更好。