Tag: iOS应用开发

SwiftLocation – Daniele Margutti –中

借助SwiftLocation轻松进行位置管理器和信标监控 SwiftLocation是一个简单而强大的库,可让您轻松处理位置和信标监视,而无需担心CoreLocation设置,也无需在需要获取或使用用户当前位置的任何地方实现无聊的委托。 该库的主要目标是减少准备诸如移动设备的位置管理器之类的常见事物所需的代码量。 旧的可可模式需要您实施大量的样板代码才能获得简单的数据。 幸运的是,随着Swift的引入,iOS和Mac开发中的许多事情都在发生变化,我们被鼓励使用新的模式和范例,例如函数式编程(实际上是很旧的,很古老),以减少编写代码并提高可读性。 让我向您展示一些例子! 假设您需要准确获取当前用户的位置; 我们不需要连续的位置,并且如果相关的精度较低,我们也不想获得所有位置。 使用CLLocationManager,我们需要: 实施授权请求,等待用户响应并开始监视会话 实现CLLocationManagerDelegate协议的所有必需的委托 如果相同的代码在不同的精度要求之间共享,我们需要根据需要过滤任何无效的位置,直到找到正确的位置,然后停止所有 这是一个工作示例: 大约有30行代码只能获取当前用户位置。 而且,除非尝试创建通用类,否则应在应用程序中的所有位置重复此样板代码。 使用SwiftLocation可以减少所有内容: 很好啊? 使用类似的代码,您还可以监视连续更新的位置,只需将频率参数从.OneShot更改为.Continuous(根据您的需要,您也只能获得重大更改或以指定的行驶间隔更改)。 有时,您可能只需要获取一个大概的位置,而无需启动电话的GPS硬件(并向用户弹出授权对话框)。 在这种情况下,您可以仅使用电话的IP地址获得有效的CLPlacemark: SwiftLocation还可以帮助您反转地址字符串并获取CLPlacemark对象:它同时支持Apple和Google服务; 像往常一样,您只需一行代码即可实现: SwiftLocation还允许您监视地理区域,并在进入和退出事件时得到通知: 虽然所有这些功能都是由LocationManager单例类提供的,但是SwiftLocation中还有另一个单例,如果您使用信标,则可能会对您有所帮助。 BeaconManager允许您: 监视信标家庭或信标 用您的设备模拟信标(由于Apple自有类的某些限制,它只能在前台使用) 通过调用monitorForBeacon()或monitorForBeaconFamily()函数,Beacon监视既可在后台运行,也可在前台运行。 想进一步了解SwiftLocation? 您有新功能的想法吗? 在SwiftLocation的GitHub页面上告诉我!

冲刺完成

我们公开谈论了我们预期最后几周会有多压力。 好吧,这是正确的,因为这种趋势也延续到了本周,而Quatro团队仍然感到焦虑。 但是我们确实取得了进步,并淘汰了我们一直希望实现的一些目标。 我们的第一个视频对我们和我们的听众来说是一个美好的时光。 我们的第二部影片毫无疑问是我们想要的,本周我们大部分时间都在拍摄和编辑该影片。 在整个应用程序开发过程中,团队的共识是保持幽默感和嘲讽的社交渠道。 Best By的使命很严肃-减少世界各地的食物浪费-因此我们希望行销轻松。 新闻专业的学生接管了Video2。这是我们的长项,因此我们想尝试一些极富创意和独特性的挑战。 由于Best By是食品应用程序,为什么不从食品本身的角度拍摄视频? 您可能现在很困惑,当Zach提出这个想法时,Jahnavi也是如此。 观看最终产品以清除您的疑惑,了解Best By的愿景! 最可怕的冲刺定于下周日举行。 Quatro团队本周的重点将是调整最后一刻的变化并避免任何不幸。

使用React Native进行移动应用开发的利弊

React Native基本上是社交媒体巨头Facebook开发的框架。 它实际上是一个开源框架。 这个框架利用React架构模式来开发与iPhone,Android和其他应用程序相同的家庭用户界面。 Facebook通过React Native开发自己的智能手机应用程序。 好吧,人们可能会认为,因为它是Facebook的框架,所以关于它的一切都必须是好的。 但是,由于这个世界上没有什么是完美的,所以这个框架也有自己的缺陷。 下面给出了使用React Native的利弊。 优点 关于React Native最好的部分是它的结构。 框架的每个部分都可以顺利访问。 这有助于开发人员有效地使用它,或者毫无疑问地使用它。 有许多组件可以很容易地应用。 这使得开发过程非常快。 实际上,React Native的最大优势之一就是它是Facebook的产品。 该框架正在不断升级。 此外,引入了这些更新,以保持编码人员的实时体验,以提供更好的便利。 React Active缩短了应用程序开发时间。 因此,可以始终控制React Active应用程序开发的成本。 此外,该框架还允许Javascript编码人员为多个操作系统开发应用程序。 由于他们只需要基本代码,因此这成为可能。 React Native是满足动画播放或相关开发需求的最佳工具之一。 实际上,这些任务中最艰巨的任务可以60 fps的速度执行。 React Native应用程序以可靠和稳定的表现而享有盛誉。 在开发新应用程序的同时,还可以通过React Native更新已经存在的本机应用程序。 就更改而言,React Native非常用户友好。 一个引入的更改可以轻松执行或更新。 缺点 尽管React Native的负面影响要少得多,但还是有一些。 首先,开发的应用程序可能是可靠或安全的,但它们的性能并没有达到预期的最高水平。 由于有这么多现成的组件,因此实验范围变得很小。 React Native应用程序开发需要更少的本机代码。 尽管这是许多人都认为的优势,但是,这也是事实,对于完整的应用程序开发,在很多情况下本机开发也是必需的。 在将插件与应用程序集成时,这是必不可少的。 这里要提到的是,在使用React Native开发应用程序时,用户必须遵守Facebook的许可条款和条件。 尽管这并不是一个大问题,但是,任何与专利相关的问题都可能要求许可更新,因此需要谨慎。 如上所述,地球上的任何事物注定都有其自身的利弊。 React Native也是如此。 但是,最重要的部分是它的持续流行。 这是一个用户友好的工具,这是开发人员如此喜欢它的首要原因。

以编程方式介绍自动版式

本教程来自 codzify.com将在iOS App开发中以编程方式为您提供有关Autolayout的充分理解。 希望你们都喜欢! 您可以了解更多iOS App开发概念 这里。 UIView Autolayout是iOS App开发中一个非常有趣的概念。 自动布局负责响应式设计。 iPhone每次都有不同的屏幕尺寸。 借助Autolayouts ,您不必每次都创建应用程序设计。 自动版式负责响应式设计。 我将提供一个简单的库,您可以免费将其用于Autolayouts。 请参见给定示例中的自动版式代码,它太长了。 因此,我们在下一个教程中简化了代码。 但是,要了解此类别,您必须清除约束的基本概念。 什么是自动布局约束? 注意:-要使用自动版式,您必须定义约束。 约束是您应分配给特定视图(如…)的特定规则。 1)无论iPhone屏幕尺寸为,请向左间隔20px。 2)无论iPhone屏幕尺寸是多少,都请向右间隔20px。 3)无论iPhone屏幕尺寸是多少,请给其顶部20px的间距。 4)无论iPhone屏幕尺寸是多少,都应与底部隔开20px的间距。 这意味着在一个视图中,距左,右,底部和顶部的间距为20 px。 编写约束的语法: 让topConstraint = NSLayoutConstraint(item: SpecificUIView ,attribute: .attributeName ,relatedBy: .Realtion ,toItem: superView ,attribute: .attribute ,乘数:1,常数: 12 ); [superView addConstraint:contraint]; 总记得 , 假设将label1添加到view1,则view1(orangeColor View)将成为label1的超级视图。 2)假设将view1添加到boxView,则boxView将成为view1的超级视图。 3)假设将boxView添加到superBoxView,则superBoxView将成为boxView的超级视图 约束属性最常用的包括: 1)NSLayoutConstraint.left 2)NSLayoutConstraint.right […]

6本必读的书籍,可帮助您成为一名优秀的程序员和iOS应用程序…

6本必读的书籍,可帮助您迅速成为程序员和iOS应用程序开发人员。 “要成为一名优秀的程序员,需要做两件事。 一种是获得大量练习。 另一个是要接受真正的良好教育” 1. Apple的Swift编程语言(Swift 3版) Swift对新程序员很友好。这本书由apple.swift编写,是在C和Objective-C的基础上构建的,没有C兼容性的限制。这是swift学习编程的最佳资源。 2. raywenderlich.com教程团队的快速学徒 本书适用于想快速学习编程的初学者,也适合于对编程有一点了解的初学者。 也许您为网站或某种程序编写了一些JavaScript。 在编程过程中会遇到一些练习和挑战,并在测试过程中测试您的知识。 3. CodeWell Academy和RMZ Trig编写的《使用数据结构和算法版的Swift大师手册》 这是一个非常不错的初学者指南,可以使用数据结构和算法进行编码。 在本书中,您将学习如何以及在哪里,何时,为什么使用代码。 最重要的是,您将学习如何使用。 您将首先观察世界并定义代表事物(数据)或动作的代码。 您会发现更高级的概念。 4.用Swift 2进行面向对象的编程作者:Gaston C. Hillar。 面向对象编程(OOP)是现代软件开发所必需的.Swift是一种多范式编程语言,其最重要的范式之一是OOP。 这很有意义,因为面向对象的编程可以使您最大程度地重复使用代码并最小化维护成本。这本书包含了太多的抽象概念,这些概念要求真实的示例易于理解。 5. Neuburg,Matt撰写的《 Swift的iOS 9编程基础》。 这本书是iOS应用程序开发的初学者。在这本书中,您将了解Swift,Xcode和Cocoa框架的基础。 还有Swift语言基础知识,UIApplicationMain函数,笔尖加载机制,委派和通知的Cocoa模式以及保留周期。 6.通过Matt Neuburg对iOS 9进行编程 本书具有一些高级的功能强大的iOS 9编程。这本书描述了视图,视图控制器,iOS应用程序界面的基本单元,应用程序委托。调查了iOS提供的最重要的辅助框架。

使用RxSwift在ViewController之间传递数据

我2年前开始进行iOS开发,从Treehouse,Raywanderlich,objc.io和GitHub学习。我使用委托将数据从一个ViewController传递到另一个ViewController。我们可以使用RxSwift在几行代码中实现相同的任务。根据标准Rx代表文档 Rx是通过Observable接口表示的通用计算抽象。 像原始的Rx一样,RxSwift的目的是实现异步操作和事件/数据流的轻松组合。 KVO观察,异步操作和流都在序列抽象下统一。 这就是为什么Rx如此简单,优雅和强大的原因。 为了从rootViewController上的推送的viewController传递数据,我们可以轻松做到。 我们必须在SelectedDataVC类的ViewController类上传递数据,让我们深入了解一下。 1.使用CocoaPods,Carthage安装RxSwift和RxCocoa 2,在SelectedDataVC中添加变量和可观察变量 私人让selectedVariable =变量(“”) var selectedObserver:Observable { 返回selectedVariable.asObservable() } selectedVariable是具有一些String的初始值的变量。 selectedObserver是Observable which做一些工作,观察者可以对此做出反应。 当用户从SelectedDataVC中选择一些数据时,只需将数据值设置为selectedVariable selectedVariable.value = selectedName 在ViewController类中添加DisposeBag。根据文档: 处理袋用于将类似ARC的行为返回给RX。 当DisposeBag被释放时,它将在每个添加的一次性物品上调用dispose。 现在,当某些用户单击加号图标以在ViewControllerVC中设置数据时,则SelectedDataVC将被推入堆栈。添加以下代码行: 让selectedItemVC = self.storyboard?.instantiateViewController(withIdentifier:“ SelectDataVC”)作为! SelectDataVC selectedItemVC.selectedObserver .subscribe(onNext:{[弱自我] selectedName在 如果selectedName.count> 0 { self?.displayLabel.text = selectedName } } .disposed(作者:disposeBag) self.navigationController?.pushViewController(selectedItemVC,animation:true) 在实例化SelectedDataVC的过程中,我们正在ViewController类中订阅SelectedDataVC的事件,每当selectedVariable值更改时,我们在ViewController类中的标签就会更新。 这是完整的演示代码:https://github.com/EonKid/RxSwiftDemo 感谢您的阅读。如果您有任何疑问,请发表评论。

在Swift 3.0中生成基本QR代码

QR码是一种二维条形码,最初是为日本汽车工业开发的。 编码URL,推广虚拟商店,访问加密货币钱包,向消息传递平台添加新联系人— QR码(或其某些变体)为处理各种类型的数据提供了一种简化的方法。 让我们看一下使用静态数据创建我们的代码(例如,字符串)。 在上面的代码中,我们创建了一个称为generateQRCode(from:)的函数,该函数返回可选的UIImage 。 在此函数中,我们首先要将字符串转换为Data对象(它只是字节的MutableCollection )。 该对象将使用某些给定的编码包含我们字符串的表示形式。 在这种情况下,我们使用ISO Latin 1 ; 但是, ASCII或UTF-8也可以。 现在,使用参数名称“ CIQRCodeGenerator”创建CoreImage过滤器的实例。 本质上,我们已经初始化了一个CIFilter对象,该对象用于名为“ CIQRCodeGenerator”的特定过滤器。此参数名称使我们可以引用Swift的内置过滤器来通过Core Image框架生成QR代码。 在Swift中使用CIFilter方法创建过滤器后,必须调用setDefaults()或setValue(_:forKey:)分别设置参数。 在Swift中使用CIFilter方法创建过滤器后,必须调用setDefaults()或setValue(_:forKey:)分别设置参数。 考虑到潜在的复杂性,在某种程度上这似乎是深奥的,而且应该在某种程度上。 仔细看看下一行: 在这里,我们传递data常量(它只是字符串的编码版本)来设置键“ inputMessage”的值。这一步骤至关重要,并且因为设置和检索了CIFilter对象的参数,所以它以这种方式工作通过使用键值对 。 做完了! 好吧,不完全是。 回顾一下,我们向generateQRCode(from:)函数传递了一个字符串,然后将该字符串编码为数据对象。 然后,我们创建了一种特定类型“ CIQRCodeGenerator”的CIFilter对象。最后,我们使用了数据对象来设置键“ inputMessage”的值,该键表示在QR码生成中使用的数据输入。 本质上,我们已经检索了一个特定的模板,收集了所有必需的组件,但是仍然没有返回任何内容。 不用担心转换废话; 我们将在片刻内解决该问题(我们正在使用它来消除生成的QR码中的模糊感)。 专注于展开输出。 我们为什么这样做呢? 这是因为filter(这是我们的CIFilter )返回一个可选的CIImage (再次,请随意忽略最后的.applying(transform) )。 在这种情况下, CIFilter最终使用字符串作为输入来生成CIImage对象。 为了使图像正确显示在imageView插座中,我们将其投射为UIImage 。 最后,我们得到以下信息: 不好了! 为什么我们的QR码如此模糊? 由于我们的CIImage是由点组成的,因此将所得的UIImage缩放为适合我们的UIImageView ,这导致缺乏清晰度。 这就是变换部分的来历! 我们创建一个仿射变换矩阵 ,用于缩放QR码。 这只是用于绘制2D图形的struct […]

有关iOS中UIScrollView的小故事

UIScrollView是UIKit中一个古老且用途广泛的类,自iOS成为iPhone OS 2.0以来一直存在。 它提供了灵活性,可以呈现不适合设备屏幕的大内容。 iOS中最受欢迎的UIComponent(UITextView,UITableView和UICollectionView)是从UIScrollView类继承的。 →UIScrollView具有3个主要属性,分别为contentSize , contentOffset和contentInset 。 →内容大小: ScrollViews只需少量的设置和代码即可为开发人员提供强大的功能。 所有繁重的工作都由Apple处理,我们(Devs)得到了一个众所周知的委托(UIScrollViewDelegate)来管理其状态和功能。 ScrollView只是一个UIView对象,它具有动态原点并在其中移动内容。 它具有一个名为CGSize类型的重要属性contentSize ,它表示可滚动区域的大小。 滚动视图必须知道内容视图的大小 ,以便知道何时停止滚动。 其默认值为零,即使content-size小于滚动视图自身的大小 ,也必须将其设置为使用任何滚动视图。 在上图中,滚动视图的实际帧由黑色粗线表示,内容大小为男孩图像的大小。 →内容偏移量: 当用户滚动滚动视图时,用户可见的内容区域会更改。 内容视图在滚动视图中的位置称为内容偏移 ,并由contentOffset属性( CGPoint值)表示。 此属性由x和y值从可见区域的 原点 (左上角)到内容视图的 原点 (请看下图)之间的距离定义。 内容大小保持不变,但是内容偏移会更改以响应用户交互。 内容偏移量可以通过编程更改。 contentOffset属性是可读写的。 更有趣的是,您可以使用func setContentOffset(CGPoint, animated: Bool) animation func setContentOffset(CGPoint, animated: Bool)方法来设置内容偏移量的动画。 这将“移动”滚动视图,就像用户自己移动滚动视图一样。 →内容插入: 这是一个UIEdgeInset值,它代表滚动视图的内容应“填充”的区域。 将contentInset属性设置为UIEdgeInsetsMake(10,10,10,10)将在滚动视图的内容周围创建10点的空白。 边缘插入值也可以为负; 这将代表用户无法看到的滚动视图内容周围的区域(除非用户滚动到滚动视图的边缘之外)。 →UIScrollViewDelegate中有3组方法,它们分别响应拖动和滚动 , 缩放和滚动动画 。 滚动和拖动: func scrollViewDidScroll(UIScrollView) […]

应用业务之旅的开始

我花了将近两年时间制作了我的第一个应用程序,它的收入约为160澳元。 当我无可否认地为自己的成就感到自豪时,这就是平庸的定义。 然后我开始制作续集,我发誓会成功,当我很快意识到自己在做的事情是不可持续的。 如果您设法在游戏上投入了几年时间,并且幸运地被Apple / Google选中并赚了一大笔钱,那就太好了。 但是,一旦尘埃落定,您就会看到长长的尾巴。 我想建立一些可以赚取经常性收入的东西,而这可以让我腾出时间来专注于其他事情。 创造可持续的生活 我看了其他游戏,即使在发布几个月后,这些游戏总是一直在Reddit的首页上出现。 像Poly Bridge,Rocket League和Minecraft之类的游戏。 所有这些游戏的共同点在于它们的粘性-内容创作。 当别人可以免费完成所有辛苦的工作时,我花了数年的时间尝试创建一些东西供他人使用(当然,经过一番嫁接)。 因此,我再次转身。 不过,这次,我不想依靠在应用商店中获得推荐的机会,而是专注于可以不断发挥自己作用的想法。 这些想法中的第一个是“场景游戏”,它是大局的一部分。 第一个应用程序充当一个项目,以测试驱动我所学到的有关数字营销和增长黑客的一切知识,并将引入许多其他应用程序中,以建立可产生足够钱来维持可持续生活的投资组合。 我刚刚在爱尔兰和澳大利亚进行了发布,并准备通过实验和闪亮的图表记录整个旅程。 这是什么系列的? 我打算在本博客系列中介绍一些内容(但不是详尽的清单)- 广告素材的A / B测试 ASO分析,技术和实验 增长黑客 应用内实验可提高参与度,收入和增长 收入报告(除非我成为百万富翁并且想避免纳税) 产品路线图 其他新应用 您正在使用哪些产品/营销工具? Firebase提供所有功能(实验,分析,崩溃报告,通知等) Google Analytics(分析)用于目标网页渠道分析 ASO移动行动 iTunes Connect进行报告 Google Play报告 Apple搜索广告/ Facebook广告/ Google广告词(我们将在后面介绍其余内容) Twitter / Facebook(用于社交媒体)(也许稍后会发布Instagram) 草图(用于模型和新创意原型) 您的技术栈是什么? 我正在使用的某些技术工具是- Firebase提供所有功能(后端,云功能,身份验证) 为应用程序反应本机 到达网页的纯HTML / CSS / […]

iOS App安全性-3

现在在子菜单中打开“拦截”选项卡并启用拦截。 为什么? 通常,如果您只想听http请求,则不必这样做。 但是既然我想弄各种各样的东西。 我们必须以某种方式进行中间人入侵。 好。 我们现在准备好了。 下一步是准备我们的iPhone。 打开您的wifi设置并添加HTTP PRoxy。 这必须是您在Burp中设置的监听器IP和端口。 让我们做最后一步,向iPhone添加证书。 您可以按照portswigger网站上提供的说明进行操作: 在…中安装Burp的CA证书 在计算机上运行Burp的情况下,在iOS设备浏览器中访问http:// burp,然后单击“ CA证书”链接… support.portswigger.net 现在,让我们玩得开心。 我试图检查谷歌地图,以查看所有的流量。 因此,下次您设计REST api时,请考虑一下,也许有人可以从中获取信息。