Tag: ios

React Native —使用fetch()的陷阱

使用fetch()时,您是否曾经被卡住?由于某种原因,尝试从第三方API提取数据时会不断出错? 即使您按照该教程进行操作,您仍在按照作者编写的方式进行操作? 我最近陷入困境,直到2016年12月的某个时候才发现这不是问题。这就是我所发现的。 Apple默认为与iOS 9.0或OS X v10.11 SDK链接的应用程序启用应用程序传输安全性(ATS)。 在本机中,这些设置在ios / {您的项目名称}文件夹下的info.plist文件中。 0.28之前的react-native版本默认将info.plist中的命令默认为允许使用以下代码的非安全请求(即http): 上面的代码允许您的fetch()命令使用http或https uri。 但是,Apple宣布,在2016年12月之后,所有将此键的值设置为True的应用程序都会触发App Store的自动审核,并且需要证明其合理性。 请参阅此处的Apple ATS文档:https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33。 结果,react native更改了默认的info.plist代码以使其与Apple的ATS策略保持一致,并对该代码进行了结构化,以专门标识将允许进行非安全访问的每个域。 因此,现在info.plist中的默认代码如下所示: 该应用仅允许在没有安全连接的情况下访问localhost ,必须通过https访问所有其他域。 当您要访问未使用https提供服务的第三方API时,会出现问题。 为此,您必须在NSExceptionDomains下添加另一个。 例如,假设您的API位于testapi.com。 您需要打开info.plist并将其添加到异常域列表中,如下所示: 现在,您的应用应该停止引发安全错误,并且fetch()命令应该可以正常工作。 请记住,每当您的应用程序需要访问不使用安全连接的第三方URL时,请确保通过在info.plist文件中添加域来解决该问题。

为我们的iOS 360视频库开放源代码:DDDKit

https://github.com/team-pie/dddkit 在Pie,我们正在开放资源库以显示360个视频。 自2016年11月推出以来,我们一直在我们的应用程序中使用它,对我们来说一直很好。 因此,我们很高兴将其开放给他人使用,从中获得启发,并提出更改和贡献的建议! 现在可以作为可可豆荚使用: pod ‘DDDKit’ 我们的重点是360视频,360图像和滤镜。 因此,我们设计了DDDKit来简化这些部分。 用法 DDD360VideoViewController 这是一个预烘焙的便捷视图控制器,可以处理大多数逻辑,以便您快速入门。 当您对此更加认真时,您将需要在DDDKit中进行更深入的研究: 我们希望为他们提供超级简单的支持,而又不会失去我们可以创建的所有过滤器范围。 因此,我们将它们留在了着色器程序级别,但受SceneKit的着色器修改器的启发,使它成为易于使用的API 还记得着色器代码吗? 这里有两条注释行// header modifier here和// body modifier here它们是我们可以插入的代码块的占位符。 为了做一个简单的黑白过滤器,我们将程序定义替换为: 完整的代码在这里。 为什么不使用SceneKit? SceneKit是Apple的3D渲染框架。 它具有广泛的关注点,并且在很多方面都非常强大且设计合理。 但是,我们决定建立自己的替代产品,因为: SceneKit在iOS 10.0中引入了内存泄漏 对视频的支持不是自然的,而是通过Apple的2d渲染框架SpriteKit完成的。 我们发现SceneKit的在线文档在与视频和着色器修改器相关的功能方面非常差。 当您遇到问题时,没有代码需要看,只有一个很小的SO社区可以使用,也没有人及时响应您的错误报告。 苹果!=开源! 我们的关注点小于SceneKit的关注点,我们认为我们可以在更严格的范围内提供更好的解决方案。 期待 我们想到了以下几点: 完善我们自己的文档。 调查金属支持 添加单元测试 你怎么能帮忙 使用DDDKit,打开带有错误和建议的问题。 我们会及时回应。 让我们知道您如何使用或计划使用DDDKit以及是否缺少某些功能。 给我们一颗星星 !

创建生产证书

在使用iOS Apps时,生产证书过期听起来很可怕,但从用户的角度来看不会受到任何影响。 我们的应用仍在App Store中,用户仍可以下载和使用。 唯一会受到影响的是我们对应用程序进行签名的能力,换句话说,我们无法创建新的生产版本并不再提供更新。 以下是分步说明,可帮助您创建适当的生产证书。 第1步:登录Apple开发中心,网址为: 使用您的Apple ID登录– Apple Developer 使用您用来注册或立即注册的Apple ID。 developer.apple.com 然后在左侧面板的Certificates下选择生产: 第2步:选择 App Store and Ad Hoc ,然后继续 然后,您将看到此页面: 步骤3:向CA请求证书。 请按照上述说明从CA申请证书。 请根据您自己的情况填写文本字段。 Save to disk您的CA Email Address为空,并且选中“ Save to disk选项。 NOTICE:请保存此CertificateSigningRequest.certSigningRequest确保安全! 步骤4:将 CertificateSigningRequest.certSigningRequest 上传 到Apple开发中心 现在您将能够看到此生产密钥已准备就绪,可以下载此密钥并将其发送给移动开发人员。 当心这个到期日,我们需要创建一个新的或在到期后进行续订。 参考 https://needone.app/create-production-certificate/

我对MAC OS中的UI自动化的第一次体验

我很惊讶地知道MAC在其操作系统中具有默认的Automation。 当我开始探索更多有关它的信息时,我开始开发一个小型的iOS应用程序,该应用程序继续使用自动化,在这里,我们开始….. 要创建示例应用, 步骤1 :从MAC最右上角的Spotlight搜索在Mac中打开Xcode。 步骤2 :在Xcode中,单击“文件”->“新建”>“项目”>“单一视图应用程序”。 步骤3 :单击Next(下一步),并为Project(例如样本)分配一个名称。 步骤4 :单击下一步,该项目将在Xcode中打开,现在在您的左侧将拥有文件夹,单击Storyboard,其中显示了您的Iphone 6s视图控制器。 步骤5 :您的设计从这里开始,我们将在此处放置两个按钮,在您的右下角,有“过滤器,搜索按钮并将其拖到视图控制器中, 将这些按钮命名为“按钮1”和“按钮2”。 步骤6 :点击Xcode最右上角的“显示助手编辑器按钮”。 步骤7 :现在,助手窗口在视图控制器的右侧打开,现在按住视图控制器中的第一个按钮,并将其拖动到助手编辑器窗口中的“ @interface ViewController()”,现在将弹出一个窗口,如下图所示,填写详细信息, 对Button2也重复同样的操作,完成后,您将获得以下代码, @interface ViewController() –(IBAction)Button1:(id)发送方; –(IBAction)Button2:(id)发送方; @结束 步骤8 :现在,从窗口左侧的文件夹中单击“ Viewcontroller.h ”, 步骤9 :将以下代码复制到“ –(IBAction)Button1:(id)sender {} ”中,在此我们定义按钮的操作, “ UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@“ Button 1”消息:@“ Pressed Button 1”代表:无cancelButtonTitle:@“ ok” otherButtonTitles:nil]; [警报显示]; ” 步骤10 :也对Button […]

适用于iOS应用程序的Bitrise Fastlane集成

有关如何将fastlane(iOS和Android的CD工具)集成到Bitrise中以及如何在 Bitrise 上运行相同命令的 逐步指南 。 Moses Kim的来宾帖子。 原始帖子出现在 Shakuro博客上 。 本文基于对移动开发人员Sergey Laschuk和Ruslan Krohalev的采访。 摩西是Shakuro数字产品代理商的作家。 他喜欢研究技术,体验设计和武术。 在自动化测试以及构建Web和移动应用程序的部署方面,有几种完善的持续集成服务。 然而,Bitrise在2017年获得了广泛的宣传,并拥有在2018年获得更多关注的所有好机会。 什么是Bitrise Bitrise是一个主要致力于移动开发的持续集成平台。 持续集成(CI)是在特定的时间表上将开发人员构建副本合并到共享主线的一种普遍接受的做法。 换句话说,这是一个用于版本控制和复制部署的工作流,而不会失去对开发过程的跟踪。 Bitrise允许创建包含构建步骤的多个工作流程。 一个应用程序可以为其定义多个工作流程,还可以使用webhook来指定为哪个触发器(webhook)选择了哪个工作流程。 映射到工作流程的触发器使用预定义的工作流程启动构建。 对构建步骤进行编程,以执行由命令行脚本实现的各种功能。 记录所有虚拟机构建步骤,以保留工作流每一步的信息。 我们与Bitrise合作的项目 Bitrise允许Jira集成,这对我们来说是个不错的选择,因为要实现的所有功能,时间跟踪和估算都是由我们公司的Jira运行的。 构建自动化 到目前为止,我们已经在两个主要的移动开发项目上使用了Bitrise,其中一个是已经在App Store上运行的iOS应用程序。 凭借每天生成的新版本,Bitrise可以自动将主版本更改货件自动交付给App Store测试。 工作流还配置为仅在实施更改后才交付新的版本。 因此,产品负责人仅收到有关已发货的重要产品的信息。 测试自动化 新功能会自动进行测试,如果发现错误,则不会提供任何构建。 最新的Bitrise功能之一允许在设备模拟器上运行功能用户测试。 如果这些单元测试中的任何一个失败,则通知将直接发送给开发人员。 对于我们的一个iOS应用,每天都会从项目GitHub存储库上的提交收集所有消息。 在本周或冲刺结束时,或在具有里程碑意义的情况下,产品负责人(客户)提出了对修补程序的描述以及添加到内部版本的新功能。 提交随附的文件中列出了所有功能和修复。 这些描述的组合由Bitrise自动化。 总而言之,每次上传到TestFlight最多需要1个小时。 但是,由于它是由Bitrise虚拟机完成的,因此对我们来说不算什么。 什么是快车道 Fastlane是适用于iOS和Android的持续交付工具。 Fastlane是用红宝石编写的工具,可以通过红宝石宝石安装。 与Bitrise一样,Fastlane也有构建步骤,称为“动作”。 每个动作都是必须执行才能获得某种结果的任务。 可以将所有Fastlane动作收集到称为Lanes的单个实体中。 泳道就像Bitrise中的工作流。 当在Fastlane中运行通道时,如果任何一个操作执行不正确,则会执行该通道中的每个操作,并且构建失败。 通道在称为Fastlife的文件中定义。 在所有类似方面,Bitrise和Fastlane并不冲突且彼此重复,但是正如我们发现的那样,Fastlane可以大大补充Bitrise在移动开发项目中的参与。 […]

应用开发简介

有一个应用程序 关于成为一名程序员,我比其他任何人都被问到的问题是“嘿,兄弟,我想学习制作应用程序,我应该从哪里开始?”或其他形式的变化。 一旦有人开始学习某种语言或希望开始学习某种语言,那么可能出现的第一件事就是我如何使用已经获得/将要获得的编程技能来创建可以向人们展示的应用程序。 这个问题的问题在于它太模糊了。 自苹果发布首款iPhone并带来“应用程序”概念以来,已经过去了将近10年,该应用程序可以部署在可在操作系统上运行的“应用程序商店”上。 在整个应用程序革命之前,操作系统上运行的所有内容通常都被称为软件或应用程序。 而且它不像应用程序开发那么出色。 随着智能手机及其操作系统(如Android和iOS)的疯狂成功,您开发的应用程序将在全球数十亿拥有智能手机和互联网连接的人的手中。 通过应用商店,您可以为应用设定价格,或者使用应用内购买或仅需几行代码就可以包含在应用中的广告,使这些应用获利也变得非常容易。 这意味着成为“应用程序开发人员”实际上是一种可行的职业,可以为您提供稳定的收入来源。 随着越来越多的新程序员加入到越来越多的应用程序开发人员队伍中,应用程序已经从完成了计算器或气象应用程序之类的小型应用程序,发展成为令人难以置信的复杂软件,可以完成从叫车到打车的所有工作。您可以与您的朋友联系,打电话给您的家人到世界一半的地方,甚至可以监控您的健康状况并帮助找到治疗癌症的方法。 这意味着整个应用程序生态系统还刺激了对其他相关业务(如服务器后端,数据存储解决方案和IDE的实际编码)的需求。 这是苹果公司针对iPhone的广告,其中大量的应用程序是他们的主要卖点 因此,现在回到如何制作应用程序这一主题,您将需要做出许多决定: 我正在开发什么样的应用程序? 会是游戏吗? 还是可以帮助人们更有效地完成工作的工具? 还是它将成为人们的交流平台? 我要在哪个平台上分发它? 将用于网络吗? 还是用于移动设备? 如果用于移动设备,则使用哪个平台,Android,iOS或Windows Phone? 会是跨平台的吗? 我擅长什么语言,我需要学习什么语言? 我是否具有为要构建的平台编程所需的硬件和软件? 在找到上述问题的答案之后,您将有良好的基础开始在该应用程序上进行实际工作。 现在,所有应用程序的构建方式都不相同,每个类别的工作流程略有不同。 让我来看看其中的一些。 我通过学习HTML,CSS和javascript开始编程。 这些语言是现代网络的基础,对于开始编程的人来说,它们是非常好的“网关语言”。 这是因为所有这些语言的入门门槛都非常低,可以容忍初学者程序员犯的常见错误,并且它们是一些最受欢迎的编程语言,因此在互联网上无处不在。 诸如堆栈溢出之类的网站上充斥着有关这些语言的信息,您真正面临的问题很可能已经由堆栈溢出的真正有用的社区解决,您所需要知道的只是外观。 现在,按照他们的传统常识,没有人会认为这些语言中的任何一种都是您用于应用程序开发的语言,但是您会感到惊讶。 Web应用程序或在浏览器中运行的应用程序仅使用这些语言编写,现在甚至可以在Node.js的帮助下使用JavaScript编写后端服务。 这些应用程序既可以托管在您的服务器上(例如web.whatsapp.com或inbox.google.com),也可以使用Chrome网络应用商店打包和部署,这些应用程序使chrome浏览器的用户即使在离线状态下也可以使用该应用程序, chrome图书(我听说你很窃笑,但chromebook的销量仅次于macbook,并且由于其极低的价格而增长很快)是它们唯一的应用程序来源。 您还可以使用phonegap / Xamarin / Titanium mobile等服务在移动设备上分发基于Web的应用程序。 这绝对不适用于所有类型的应用程序,因为网络应用程序的性能受到严重限制,它们的本机功能也是如此,例如对指纹读取器,蓝牙和其他网络功能的正确访问。 以下是您可能需要在此处开始的一些事项: 一个好的文本编辑器: 很多人可能只对终端上的VIM或emacs甚至记事本感到满意。 但是许多其他文本编辑器为表带来了很多好处,例如代码突出显示,代码建议,自动完成,花括号完成等。 我会推荐的一些非常好的工具是Notepad ++,Adobe Brackets,Sublime和Github Atom。 最后,文本编辑器的选择完全由您决定,您应该选择最适合自己的一种。 节点程序包管理器(NPM): 在下载软件包及其依赖项时,这是一个非常宝贵的工具,在为您的项目下载工具和库时,它将真正为您提供帮助。 […]

在没有CocoaPods的情况下将React Native添加到现有的iOS项目中

由于多种原因,您可能会发现自己想要将React Native添加到现有的iOS项目中而不使用CocoaPods。 CocoaPods是一种用于自动将第三方库添加到项目中的过程的工具,但是没有理由在情况需要时不能手动执行此操作。 注意,这假设您已在本地存储库内的node_modules文件夹中将 React Native下载为依赖项。 有关如何将React Native作为依赖项添加到项目的示例,无非是使用react-native init或UIExplorer项目创建的任何项目(包括在react-native Github存储库的Examples目录中)。 将React Native的子项目添加到您自己的项目中 默认情况下,新创建的React Native项目包括以下子项目。 我建议您在项目中创建一个组,以在Xcode中将这些子项目添加到其中,右键单击它,然后选择“将文件添加到YOUR_PROJECT_NAME ”。 然后,您可以添加React项目本身(位于node_modules / react-native / React中)和所有其他React Native子项目(位于node_modules / react-native / libraries中)。 将二进制文件与库链接 为了编译我们的项目,我们必须将我们的项目目标与第三方的React Native库链接; 在这种情况下,我们的项目目标是“ UIExplorer”。 注意,如果您正在使用位于任何React Native子项目中的类的任何目标,则必须将受关注的库与所讨论的目标链接。 导航到Build-phases-> Link Binary With Libraries添加以下库。 注意,在这种情况下,库是静态链接的。 “其他链接器标志” 如果您尚未设置以下链接器标志,则有必要添加它们以在项目中编译React-Native。 标头搜索路径 如果您使用的React Native版本低于0.40,则有必要向项目添加一些其他标题搜索路径 。 从0.40开始,由于在React Native项目中添加了“ copy headers”阶段,因此没有必要。 这些标头可以包含在系统包含(’s)中,因为标头本身将与其他系统标头一起位于特定目录中。 在您使用的React-Native版本低于0.40的实例中,您需要在项目的标题搜索路径中添加以下内容; 这告诉编译器可以在哪里找到React Native头文件。 注意,添加的路径应相对于node_modules目录。 希望信息对您有所帮助。 […]

如何在Mac上正确卸载应用

卸载Mac应用程序是最简单的操作。 您只需从应用程序文件夹中选择要卸载的应用程序,然后将其拖到垃圾桶中,然后清空垃圾箱中提琴即可! 你完成了。 您可能想知道为什么我在这里告诉您呢? 这是一个很好的问题。如果我告诉你,你一直做错了怎么办? 应用程序具有支持文件和相关性,当您简单地将应用程序拖放到垃圾箱中时,您不会完全删除其支持文件并缓存文件,这就是我在这里向您展示的内容。 我将展示如何清理应用程序支持和缓存文件。 使用App Cleaner删除支持文件 如果您的Mac上未安装App Cleaner ,请转到mac应用商店并进行安装。 它是完全免费的。 安装应用程序清洁器后,将其打开, 首次打开应用程序清洁器时,它将在Mac中显示所有安装的应用程序及其内存大小。 选择要卸载的应用程序,它的应用程序支持文件,缓存和首选项文件将显示在右侧。 勾选右侧的所有文件 ,然后按“ 删除服务”文件 ,然后按“ 删除”进行确认 这将删除该特定应用程序的所有支持,缓存和首选项。 毕竟,现在您可以将应用程序拖到垃圾桶中并清空它。 手动清理支持的应用程序并缓存文件 如果您不想使用第三方应用来清理您的Mac,那不是火箭科学,您可以手动完成。 让我们开始吧。 单击Mac屏幕左上方的apple徽标,然后选择“关于此mac”。 然后选择存储。 这将显示Mac上的可用和已用内存空间。 在右上角,您将看到一个名为管理的按钮,单击它。 这将打开文件浏览器。 这将打开系统信息窗口。 从窗口: 选择文件 点击文件浏览器 转到应用程序支持文件 查找与您要卸载的应用程序相关的文件夹,并将该文件夹放入回收站。 重复#3和#4,您需要第二次访问缓存而不是应用程序支持文件。 从“ 应用程序支持和缓存”文件中清除与要卸载的应用程序相关的所有文件之后,现在可以将要卸载的应用程序拖到垃圾箱中并将其清空。 仅此而已,现在您可以从Mac正确卸载应用程序。 如果单击本教程,请鼓掌。

自学成才的软件开发人员:为什么开源对我们很重要

这是一个关于我对开源的看法如何随时间变化以及如何对我的职业生涯产生帮助的故事。 开源简介 大约13年前(在高中时),一个朋友(Netcyrax)向我介绍了开源社区。 他向我介绍了有关开放源代码及其运行方式的所有内容。 然后,他给了我一张Ubuntu CD,并告诉我Ubuntu正在通过发送免费副本来推广其操作系统。 第二天,我使用56k连接访问了www.ubuntu.com,并订购了50份Ubuntu。 我的意图是将它们出售给其他人,而不是免费提供。 那是15岁的我,我不了解开放源代码的目的。 无法理解目的 然后我开始编程。 我已经知道了开源,但实际上我不明白为什么我必须共享我的宝贵代码行。 为什么免费共享我花了几个月时间开发的程序源代码? 如果有人偷了怎么办? 如果我的“竞争对手”使用我的源代码来改进他们的产品怎么办? 当时我不明白的是,我不是一名杰出的软件开发人员,我的程序可以由经验丰富的软件开发人员在几天之内(而不是几个月)从头开始开发。 使用开源库很方便 是2008年,我有了第一部iPhone(3G)。 苹果宣布推出iOS 2和iOS SDK。 我决定(在业余时间)成为一名iOS开发人员。 由于还没有人使用过iOS SDK,因此我不得不自己学习开发应用程序。 我使用WebView创建了一个简单的应用程序,并且业务逻辑在使用JavaScript构建的Web应用程序内部。 我对iOS SDK感到非常失望(菜鸟开发人员+ Objective-C +手动引用计数=灾难),因此我暂停了本机iOS开发两年。 同时,我正在试验混合的SDK,例如Titanium,Adobe Air-ActionScript。 当我回到iOS 5(回到本机)时,一切都不同了。 在大约一个月的时间里,我设法构建了第一个真实的应用程序并将其上传到App Store。 但是发生了什么变化(自动引用计数除外)? 答 :iOS开发的开源社区。 ASIHTTPRequest(用于网络请求)和SDWebImage(用于下载和缓存图像)帮助我构建了第一个应用程序。 版本控制和GitHub 大多数开源项目和库都托管在Github上。 所以我当时使用Github下载我的库,但是由于我是在业余时间编程的,并且没有商业环境的经验,所以我不能说Git和Github之间的区别。 在构建了一些iOS应用之后,我对自己的技能充满信心,因此我决定申请iOS机会。 在第一次面试中的某个时刻: -访者:您使用什么版本控制? 我是什么意思版本控制? -访者:我的意思是您如何保留代码库的版本? SVN? 吉特? -Me:时间机器(OS X的备份软件)! 因此,在与访问者进行了交谈之后,我决定我想了解更多有关Git(以及一般而言的版本控制)的知识,并希望在自己的项目中使用它。 我阅读了很多有关Git的文章,以及如何在团队中使用它。 我学会了在BitBucket存储库中使用“提交”和“推送”。 我将其用作代码的备份和版本控制,但不用作协作工具。 […]

捕捉全部信息-从您的家中

《PokémonGo》在全球的Play商店和App Store上都大受欢迎。 尽管游戏在吸引人们行走以吸引越来越多的神奇宝贝方面做出了出色的努力,但有些人仍然更喜欢房屋的温暖。 因此,本文不是针对健身房怪胎(只是人们去锻炼的怪异健身房,而不是可以与其他神奇宝贝对抗的实际健身房),而是针对那些想要在不离开自己的美好房子的情况下捕捉所有神奇宝贝并孵化卵的人最好的是, 您不需要成为编码者 。 不幸的是,这仅包括对iPhone上的GPS进行欺骗,而对任何Android设备均无效。 开始吧。 在我们深入研究细节之前,您需要做一些欺骗iPhone GPS的事情: ·iPhone ·iPhone的电缆 · 苹果ID ·任何MacBook / iMac(在Windows或Linux计算机上均不起作用) ·Xcode(注意:如果使用的是iOS 9,则需要Xcode v7.3;如果使用的是iOS 10 Beta,则需要Xcode v8.0 Beta 2) 您需要做的第一件事是打开Xcode。 打开后,转到文件>新建>项目 屏幕将弹出,其中包含许多选项。 在左侧,选择iOS下的Application,在右侧,选择Single View Application,然后单击Next。 在下一页上,它将要求您提供一些详细信息。 您需要填写的字段是产品名称,组织名称,组织标识符。 (注意:“产品名称”以外的字段可能已经填写,因此请保留原样),然后单击“下一步”。 将会弹出另一个窗口,其中目录结构处于打开状态(保存文件时会打开该窗口)。 打开的路径始终是您所需的默认路径。 单击创建。 将打开一个新屏幕,其中包含许多内容。 不用担心 此时,您应该将iPhone与MacBook / iMac连接。 请记住,如果在连接之前设置了密码,则应该解锁iPhone。 连接后,在中间的顶部,您会看到一个选择的iPhone SE或其他型号。 单击它,然后在顶部,第一个选项应该是您的iPhone。 选择那个。 接下来,转到顶部栏。 转到产品>构建>运行。 现在给它一些时间进行编译,在iPhone上安装该应用程序并运行。 完成后,将在iPhone上打开一个空白的空白应用程序。 好了,现在您可以按下主页按钮,让应用程序在后台运行。 继续并打开您的PokémonGo应用程序。 加载后,您将看到。 (当然,根据您的位置,您的地图会有所不同。) […]