设置Charles Proxy并使其在VPN之后运行

Charles Proxy是移动开发人员工具包中最常用的工具之一。 这里简要介绍了使其在企业VPN设置中运行所需的步骤。 我在Mac上使用Charles代理版本4.1.2。 从这里下载并安装。 授予必要的权限。 2.确保在您的网络设置中,自动代理未打开。 3.要记住的一点是,任何与网络设置有关的更改都应在运行Charles之前进行。 另外,请确保仅在运行Charles后才运行iOS模拟器。 4.运行Charles并安装iOS模拟器的根证书。 5.成功后,您应该会看到: 6.现在,您可以看到来自Mac机器的所有流量。 有两种方法可以隔离UI中的数据。 它们是结构和序列。 在顺序模式下,您可以应用过滤器并仅查看您感兴趣的流量数据。 7.结构视图 8.应用了过滤器的序列视图 9.顺便说一句,最好在UI中将请求和响应分开。 10.运行Xcode项目,并确定到您感兴趣的域的流量。首先,您将看到如下所示的加密内容。 我刚刚在iOS模拟器的Safari应用中打开了apple.com。 11.在上面的示例中,我们对http://www.apple.com感兴趣。 为了以纯文本格式显示内容,我们需要为此域启用“ SSL代理”。 有多种方法可以做到这一点。 最简单的方法是在“结构视图”中右键单击域,然后从菜单中选择选项“ SSL代理” 12.您应该在所有域旁边看到一个蓝色的地球状图标,其内容已被Charles解密或读取。 13.完成后,您可以用纯文本格式查看所有流量 您还可以针对特定域设置断点,并根据需要编辑请求/响应。根据我的经验,如果要在VPN后面进行开发,则无需执行其他步骤。

在Swift 3或ObjC中的Xcode 8中查找非NSLocalized字符串

本地化是一个过程,其中我们将所有要显示的字符串移动到一个位置,因此,如果有任何更改,例如,“确定”按钮现在将显示为“确定”,那么我们只需要在一个文件中进行更改。 此过程也可以是使应用程序支持多种语言的第一步,以便可以在运行时更改字符串的显示语言。 如果用户习惯(说)法语,则用户必须以法语查看所有内容。 为此,您应该维护一个字符串文件,其中包含代码库中的所有硬编码字符串。 众所周知,与许多开发人员同时工作会导致字符串处理不当,从而进一步导致代码库中本地化和非本地化字符串的混合使用。 假设有一个新要求,要求您的应用程序支持多种语言。 知道您的应用尚未准备好,因为我们从不关心字符串,这可能是您最大的噩梦。 下一步将是什么? 您可能希望尽快了解未本地化的字符串,因此可以计划对其进行本地化。 在代码库中搜索NSLocalizedString并比较.strings文件中的每个字符串是您唯一的选择吗? 好吧,Xcode提供了一种简洁而非常简单的方法来实现这一目标,而只需更改Xcode中的模式设置就可以实现。 #warning:如果您从未对任何字符串进行NSLocalization,则必须首先进行。 然后,担心将其保存在本地化(.string)文件中。 请注意,此解决方案适用于以下代码: label.text = NSLocalizedString(“某些字符串”,注释:“”) 要么 label.text = NSLocalizedString(anyVariableName,评论:“”) 不是这个 : label.text =“某个字符串” 这是您的架构的样子: 您可以按照以下步骤操作: 在“运行目标”菜单中单击目标,然后选择“编辑方案”。 在右侧,选择选项。 选中“显示未本地化的字符串”复选框。 单击关闭按钮。 单击运行以此模式启动您的应用程序。 或者, 添加NSShowNonLocalizedStrings启动参数。 在“运行目标”菜单中单击目标,然后选择“编辑方案”。 在右侧,选择参数 在“启动时传递的参数”中添加“ -NSShowNonLocalizedStrings YES ”。 单击关闭按钮。 单击运行以此模式启动您的应用程序。 它是如何工作的: 在Xcode中启用此设置, 在运行时搜索NSLocalizedString。 在字符串文件中查找键的相应条目。 如果找不到任何匹配项,它将在UI上以大写形式显示文本,并在控制台上显示错误消息。 将显示这种错误: 在捆绑包CFBundle的字符串表“ Localizable”中找不到可本地化的字符串“ Key”

面向高级/领先IOS开发人员的面试指南

你好, 在这篇文章中; 我喜欢分享一个针对开发人员面试准备的指南,该指南基于我的经验和阅读。 因此,在我以前的职业生涯中,我收到了无数的工作机会,并接受了中型/大型公司的采访。 我决定写一个指南,这可能对您也有帮助。 我们都知道面试是一个挑战性的过程。 因此,您可能是全职工作,并且每天都在解决主要问题,执行常规任务和冲刺,每天举行Scrum会议或每天早上使用看板,运行冲刺等。 但是,如果您认为自己准备好接受具有挑战性的面试,那就错了。 因为您仍然需要保持敏锐,也许您认为为战斗做好准备,但是将自己推进是一个好主意。 您必须为今天的下一个职位做好准备,可能是内部公司或其他公司,尝试了解公司的文化,并了解团队组织如何在软件行业中工作以及如何更改业务需求。 所以,保持自己的锋利是最好的选择,让我们提高自己的技能吧!

Firebase动态链接

首先,我们将简要讨论深度链接概念。 深度链接的概念是从另一个应用程序打开移动应用程序的特定内容,或者单击Web链接打开移动应用程序。 让我们举个例子。 首先将您的Instagram帖子分享到Twitter。 现在转到Twitter应用程序或在移动浏览器中打开twitter.com。 现在在推文中查看您的Instagram帖子。 现在单击该帖子,这会将您重定向到自己在Instagram应用上的帖子(如果已安装),否则它将在浏览器中打开该帖子。 因此,使用深层链接可以将用户重定向到您的应用程序,而不是在网络上显示内容,这更加用户友好和方便。 消息传递到其他应用程序也是可能的。 这可以使用自定义网址架构来实现。 现在您想到了,如果我们可以通过深层链接实现Firebase动态链接,那么为什么需要Firebase动态链接。 但是深度链接的局限性在于,这对于尚未安装应用程序的用户将不起作用。 例如,您想向应用程序用户显示个性化的欢迎消息,或者想显示促销优惠,或者想通过单击深层链接将其重定向到应用程序中的特定屏幕。 现在,如果用户尚未安装您的应用程序该怎么办? 在这种情况下,Firebase动态链接可以为您提供正确的解决方案。 这些深层链接可以满足您的所有需求。 通过创建一个动态链接,您可以将用户重定向到适当的平台。 单击此链接,移动应用程序用户将被重定向到其本机应用程序,而网络用户将被重定向到您的网站以获取特定内容。 您还可以自定义此行为。 如果用户尚未安装您的应用程序,则可以将其带到应用程序商店/游戏商店以下载应用程序,或带他在移动浏览器上显示内容。 当用户单击动态链接并安装应用程序时,信息在用户第一次打开应用程序时仍然可用。 Firebase动态链接需要iOS 8或更高版本。 如何创建Firebase动态链接? 您可以通过三种方式创建Firebase动态链接。 使用Firebase控制台 使用REST API 通过将动态链接参数添加到特定于您的应用程序的域来形成URL。 使用Firebase控制台创建动态链接 这对于在社交媒体上创建一个链接共享很有用。 单击Firebase控制台项目中的“动态链接”部分。 记下您的Firebase动态链接域,然后单击“新建动态链接”。 3)填写所需的信息,最后单击“创建动态链接”。 在iOS上接收动态链接 要接收您之前创建的Firebase动态链接,您必须在应用程序中包含Dynamic Links SDK,并在应用程序加载时调用handleUniversalLink:和dynamicLinkFromCustomSchemeURL:方法以获取在动态链接中传递的数据。 设置Firebase动态链接SDK 首先,将Firebase设置为您的iOS项目。 如果您不熟悉Firebase,可以在此处检查设置Firebase。 在pod文件中添加pod’Firebase / DynamicLinks’ 。 运行pod install并打开工作区文件。 检查是否在应用程序设置中指定了应用程序的App Store ID和Apple Developer Team ID。 要查看和编辑应用程序的设置,请转到Firebase项目的“设置”页面,然后选择您的iOS应用程序。 您可以通过打开以下URL来确认Firebase项目已正确配置为使用iOS应用程序中的动态链接:https://app_code.app.goo.gl/apple-app-site-association […]

新! 文章的离线阅读支持

这些天我们去过的大多数地方都通过wifi或蜂窝数据连接,但在某些情况下我们没有互联网连接。 也许是在飞机上或地铁上,我们仍然非常喜欢阅读网络文章。 LaterBin现在允许您下载文章以供离线阅读,并创建要保留的文章的永久存档。 很简单; 在“我的链接”主标签中,只需点击添加到LaterBin的任何文章链接的操作菜单按钮,然后点击“离线保存” 该应用程序将下载并分析文章,然后将其保存到“文档”标签,在该标签中,该文章可以与您添加到LaterBin的所有PDF文件一起使用: 现在,当您坐在长途航班上时,只需点按任何离线文档,它们便可以在没有wifi或蜂窝连接的情况下使用。 此外,还有一个可自定义的阅读器视图,其中的深色(和浅色)模式具有可自定义的字体大小和间距,可为您带来出色的阅读体验。 不能一次坐完一篇长篇文章? 不用担心,只要关闭它,应用程序就会记住您离开的地方。 https://itunes.apple.com/cn/app/laterbin-better-bookmarking/id1359954259?mt=8

苹果公司称2016年10大最佳iPhone应用

苹果已经在其App Store中发布了其年终最佳应用,游戏和其他娱乐产品的清单。 如果您想通过一些有趣或有用的应用来使您的iPhone焕然一新,那么Apple的建议就是一个不错的起点。 这些不一定是下载量最大或最受欢迎的应用程序,而是Apple认为使用智能手机的所有高级功能来代表移动软件的最佳应用程序。 苹果公司将Prisma评为年度应用程序,而MSQRD是第二名。 它将神奇宝贝“PokémonGo”命名为App Store的“突破热门”。 以下是2016年Apple十大最佳应用程序: 棱柱 MSQRD 石英 时尚 冥想室 车辆改道 信用业力 Warby Parker眼镜 超

如何像Instagram第1部分一样裁剪图像

在发布任何内容之前将图像裁剪为正方形或放大/缩小是使用Instagram的用户的常见操作。 这似乎是一个很容易的任务。 但是有些人可能会感到困惑,为什么裁剪后的图像返回错误的尺寸或方向。 本教程将向您展示如何处理裁剪问题。 本教程基于iOS环境,因此在Android或其他OS上可能会变得不正确(因为图像设置可能有所不同)。 图像大小可以分为3种类型: 宽度=高度 宽度>高度 宽<高 不要理会如何在滚动视图中将图像居中。 这是一个小技巧,将出现在另一篇文章中。 在这里,假设我们有一个可缩放和可拖动的滚动视图,其中包含一个图像视图。 我们可以缩放图像或将其拖动以仅显示图像的特定区域。 之后,我们可能只想在Instagram上显示该区域(也许我们想隐藏一些东西,可能是一头凌乱的头发哈哈)。 因此,这是裁剪图像的时间。 要裁剪图像的区域,我们需要知道图像中该区域的偏移量和大小。 在这里,我们需要知道图像而不是屏幕上的实际偏移量和大小。 为什么? 因为当在屏幕上显示时,图像将按比例缩小以适合屏幕尺寸。 例如,在上图中,屏幕尺寸(此处为可缩放滚动视图)为300 * 300,而图像的分辨率为3000 * 2000。 因此,我们需要将图像缩放到300 * 200的大小,以使其适合屏幕(以便于查看)。 我们称imageScale为图像需要缩放以适合屏幕的值。 计算方法如下: imageScale = image.size.height <= image.size.width? image.size.width / scrollView.size.width:image.size.height / scrollView.size.height 为什么存在这个公式? 当缩放以适合滚动视图时,图像的一侧必须适合滚动视图。 这意味着,如果image.size.height <= image.size.width,图像的宽度必须适合屏幕,而高度将小于屏幕,反之亦然。 所以现在我们有了一个名为imageScale的变量。 我们还有scrollView的zoomScale,它指示我们放大/缩小图像的数量。 在此图像中,我有一点放大并向上滚动图像。 因此,现在图像的高度超过了屏幕的大小。 我们很容易得到scrollView的偏移量。 但是,由于它不是图像中的实际偏移量,因此无法使用它进行裁剪。 实际偏移量计算如下: actualOffset = scrollView.offset * […]

通过Paytm Money为投资者提供增强的iOS应用体验

我们很高兴为您带来一些小而重要的功能,这些功能将使您在iOS上的投资体验更加无缝。 这些功能将在该应用程序的最新版本中可用。 智能应用程序快捷方式 要获得投资,快速的交易历史记录以及甚至管理SIP,只需在智能手机上硬按应用程序图标并查看一些惊人的应用程序功能快捷键即可。 奖励:您甚至可以在同一视图中看到当前的投资价值! 作品集视图:点击此按钮,直接进入应用程序中的作品集部分。 即将推出的SIP :到达应用程序上即将发布的专用SIP部分,以简化SIP管理。 所有交易:快速捷径可直接进入您的交易历史记录。 搜索:轻触此按钮可直接将其降落在“快速筛选”页面上。 投资:使用此快捷方式快速进入投资部分。 共享应用程序:通过Twitter,WhatsApp,电子邮件等与朋友和家人共享Paytm Money应用程序。 2. iOS上的智能搜索索引 现在,只需轻按一下,即可获得所有与AMC和方案相关的信息! 您可以在Siri搜索建议栏(以前称为“ Spotlight搜索” )中输入首选AMC的名称,然后立即进入专用的计划页面。 结果将带您进入应用程序中的特定资金详细信息页面! 3.对搜索结果和交易历史记录的3-D Touch支持 要更清晰,更全面地查看特定搜索结果,可以使用3-D触摸功能并用力按下所选的基金。 这有助于立即比较不同基金的关键信息。 您将能够在一个弹出窗口中查看所有与计划相关的信息,例如最新的NAV(净资产价值),过去的业绩增长时间表和基金类别等。 所有这些,而无需真正进入专用的共同基金页面! 除了搜索结果之外,您还可以对交易历史记录中的资金进行同样的操作-在这里,您还可以选择复制订单号 (如果您希望将其发送给我们或保留在记录中)。 4. AMC建议的键盘预测 在应用程序上浏览投资选项时,您可以使用“快速过滤器”页面上的键盘预测。 方案列表按其各自大小的顺序排列。 就是这样: 点击右上角的“ 快速筛选 ”部分,然后将光标放在搜索选项卡中,您将能够作为AMC(资产管理公司)建议查看文本预测。 分别按AUM大小的顺序列出AMC。 5.方便的投资组合小部件 现在,通过将其添加为“搜索和窗口小部件”部分中的窗口小部件,可以快速了解更新后的投资组合。 只需滑动至小部件部分并每天查看您投资的当前价值 。 希望您喜欢使用我们的iOS,就像我们珍惜为您带来这些附加组件一样。 如果您有其他建议,请通过ios.feedback@paytmmoney.com将它们通过电子邮件发送给我们的iOS团队。 继续投资Paytm Money!

在iOS应用程序中将Face Emotion识别模型与dlib和openCV一起使用

在上一篇文章中,您了解了如何在python中创建ML模型。 在本教程中,我将向您介绍如何在iOS应用程序中集成相同模型。 为此,您需要基本了解如何创建具有摄像头集成的iOS应用程序以及使用python创建核心ML模型。 步骤1:在xcode中集成核心ML模型 首先,您创建一个使用camera的简单xcode项目。 现在,您需要拖放使用python创建的ML模型(.mlmodel)。 您需要确保检查是否需要复制项目。 这将生成一个快速文件,供以后使用。 步骤2:使用CIDetector检测面部直肠 您可以使用任何框架来检测图像中的实际面部边界。 我更喜欢使用CIDetector。 您需要使用摄像机输出中的图像缓冲区找到CIImage。 通过将这些点作为输入传递给使用相同dlib点创建的MLModel,我们可以预测面部表情。 谢谢。

MVVMC —在Runtastic适应MVVM设计模式

为什么我们关心建筑 在Runtastic,我们已经创建了38个iOS应用程序,我们的团队已经发展到20个iOS开发人员,并且我们的iOS代码库包含超过700,000行代码。 不断壮大的团队会导致代码库不断壮大,从而导致更高的复杂性和更多的代码依赖性。 除非您关心体系结构并在创建软件组件时遵循一些规则,否则这可能会以灾难告终: 遵循单一责任原则 可测试性设计 有明确的依赖性 保持代码可读性和可维护性 我们都从苹果公司的MVC开始,它可以变成Massive View Controller(在那完成了)。 尝试运行`find。 型f -exec wc -l {} + | 在项目的根目录中对-n`进行排序 。 您可能会像我们一样找到具有数千行代码的ViewController。 意识到使用MVC遵守上述规则时,我们面临着越来越多的挑战,因此我们着手寻找其他设计模式。 作为iOS社区中的当今热门话题,您可以在各种设计模式之间进行选择,包括MVC,MVP,MVVM或VIPER。 经过研究后,我们决定采用MVVM,但仍未解决一些问题,例如路由(显示新屏幕)或数据绑定。 因此,我们还仔细研究了VIPER,它在解决这些问题方面确实有很好的想法。 但是在VIPER中,我们经历了不利的一面,即存在大量的样板代码以及不习惯这种模式的开发人员的陡峭学习曲线。 最后,我们将从VIPER中学到的知识整合到我们自己的MVVM设计模式中。 MVVMC —什么是C? C代表“calçots”,这是加泰罗尼亚语起源的一种特定类型的洋葱,与我们的同事和这种模式的发起者相同。 在Runtastic博客上阅读全文