在Xcode 8.2的发行说明中,Apple为其新版本的Xcode引入了功能。 在此博客中,我将解释如何使用这些新功能。 这是Xcode 8.2 Simulator的两个新功能: 您可以使用xcrun Xcode命令行实用工具xcrun Simulator的视频和屏幕截图。 📷要截屏,请运行命令xcrun simctl io booted screenshot 。 📹要拍摄视频,请运行命令xcrun simctl io booted recordVideo . (9887264) 将应用程序拖到“模拟器”窗口中即可安装该应用程序。 (23387069) 捕获 第一个功能是录制视频并拍摄屏幕截图,非常简单。 您可以启动模拟器,在其上运行您的应用,然后可以截屏或开始/停止视频。 此功能非常方便从您的应用程序发送演示视频。 尽管该命令很长,但是却很容易执行! 拖放 第二个功能是将应用程序拖动到“模拟器”窗口中,但并不是那么简单。 至少不适合我😉 我的想法是,当我拥有.ipa格式的应用程序时,只需将其拖到将安装该应用程序的Simulator窗口中即可。 太糟糕了,事实并非如此。 但是苹果的意思是什么? “ 将应用程序拖到模拟器上” ? 因此,我在大型互联网上进行了搜索,并在Twitter上做了一些研究,在那里我收到了Brandon的这条推文。 提出的问题是; 为什么.app在模拟器中可以工作而.ipa不能工作? 这是因为.ipa格式的iOS应用是针对不同于模拟器可在其上运行的架构(ARM)构建的(x86)。 因此,.ipa格式的iOS应用只能安装在物理设备上,而不能在模拟器上运行! 附加:从DerivedData获取应用程序包 现在我们知道了如何将应用程序捆绑包拖放到Simulator上,我也想提供有关该应用程序捆绑包的一些详细信息。 该应用程序包位于DerivedData文件夹中,并在为设备构建项目时进行编译。 此DerivedData文件夹包含所有中间构建信息,调试和发布构建目标以及项目的索引。 模拟器应用程序捆绑包的特定位置可以在这里找到: 〜/库/开发人员/ Xcode / DerivedData / / Build […]
当苹果公司最近在WWDC向开发社区开放Messages时,我们的最初反应是HURRAY ! 像许多热情的开发人员一样,我们一直在等待这一刻,以便将有趣的内容集成到Messages中。 实际上,每个iPhone所有者都使用“电话”,“设置”和“消息”应用程序-这3个应用程序基本上是必不可少的。 直到iOS 10为止,Messages都是与我们的开发人员隔离的一个应用程序。 因此可以肯定地说我们很兴奋。 第一印象 在玩Ice Cream Builder示例时,您会发现Apple不仅在框架中进行了一半。 他们正在寻求创建一种新的应用程序范例,以量身定制以改善消息传递体验。 当苹果公司允许在iOS 8中使用第三方键盘时,我们开始看到这种希望的一瞥。该键盘允许以以前无法实现的方式共享GIF,贴纸和图像等丰富的内容。 有了iOS 10,大门就敞开了。 具有协调参与的交互式消息为开发人员带来了许多新的可能性。 回合制游戏(象棋,西洋跳棋和ooh战舰😀)立刻浮现在脑海,但更令人兴奋的是更实际的用例,例如在小组对话中直接与几个朋友分割支票。 每个人都点击Square Cash或Venmo片段并支付其份额。 此外,有了Messages片段中的归因支持,群聊中的每个人都有机会安装贡献者应用程序。 对于开发人员来说,这是一个梦想成真。 如果深入研究Messages Framework文档,您会发现有两种不同类型的集成: 贴纸包 有人说贴纸吗? 是! 在imoji,我们为贴纸而活! 实际上,我们之所以制作了表情符号,是因为我们了解了全球消息传递趋势,并且知道贴纸注定将成为iMessage及更高版本中可视通信的关键部分。 iOS 10不仅通过增加轻松向用户发送视觉效果的功能,而且还允许用户在聊天对话中的任意位置剥离和放置贴纸,从而使贴纸成为消息传递的重要组成部分。 消息传递曾经只是来回传递,但现在会变得更加有趣! 苹果公司一直重视视觉交流,并且作为该策略的一部分,为开发人员创建了一个简单而优雅的解决方案来创建贴纸包。 以下是开发人员如何发布基本贴纸包(功能受限)的示例。 首先创建一个新的Sticker Pack项目: 接下来,将您的图像拖到贴纸包资产目录中。 对于此示例,我们决定创建一个动画猫贴纸包(由Iconka提供)。 因为谁不喜欢可爱的动画猫咪贴纸? 差不多了! 这是我们手机中“消息”中的外观: 很容易吧? 借助如此简单的工具,我们可以确定,一旦iOS 10推出,数千个贴纸包应用程序将立即在App Store中弹出。 消息扩展 尽管贴纸包既有趣又可爱,但它们并非功能强大。 用户可以将贴纸发送给他们的朋友或将其拖动到照片上,但是要增加体验的复杂程度(例如搜索贴纸的能力),我们需要做更多的工作。 这是Messages扩展的来源。 消息扩展功能一目了然。 与具有较少内存的键盘不同,Messages扩展更为宽松。 更好的是,用户不再需要采取其他步骤来在“设置”中启用完全访问权限。 只是……有效。 简而言之,Messages扩展与任何其他扩展一样工作。 iOS将调用您的主视图控制器,该控制器必须扩展MSMessagesAppViewController。 […]
毫无疑问,在移动设备上进行渲染时,Apple已开始使用它。 实时渲染和高级硬件的最新进展确实为获得高端结果提供了机会,而无需在设备上花费2000美元的价格。 尽管Apple的团队在WWDC 16’上介绍了许多进步,但是我真正注意到了一项改进,那就是SceneKit中基于物理渲染(PBR)的支持。 在过去的几年中,这种渲染技术获得了广泛的关注,并已成为工程师和3D艺术家的事实上的行业标准。 在这篇简短的文章中,我将尝试演示如何简单地使用新推出的iOS 10基于物理的渲染器,并在不具有任何高级图形引擎复杂性的情况下获得出色的效果。 在继续之前,我想坦诚地声明。 本文过度简化了一些概念,以使您对PBR中的关键元素有所了解。 基于物理的渲染 重要的是要了解不同的环境贴图会创建非常不同的渲染,因此请仔细选择您的环境贴图。 选择正确的环境图本身就是一门艺术,通常是由经验丰富的3D艺术家完成的。 物理渲染的材质定义 材料对于出色的PBR着色至关重要。 它们为我们的着色器提供了使这些惊人的可视化效果的基本信息。 过去,定义材料非常困难。 有上百万个参数需要调整,并且需要大量的魔术师和经验来使它正确。 此外,材料定义与照明非常相关,这在材料创建方面造成了问题。 使用PBR阴影,故事变得简单得多。 实际上,仅使用两个浮点数就可以很容易地获得视觉上令人愉悦的陶瓷,塑料或金属(请参见下文)。 基本上,您可能会达到相同的外观和感觉,但是艺术家将不得不工作几个小时才能获得他们想要的精美外观。 PBR材料的三个主要参数称为: 反照率,粗糙度和金属度 。 反照率分量是对象的基础颜色,并且与其他着色模型的漫反射分量直接相关。 反照率值通常是RGB颜色,通常由3个浮点数定义。 粗糙度和金属度 – 这些值描述了表面的粗糙度或金属感。 下图很好地说明了仅使用0.0-1.0范围内的浮点值来更改任一值对渲染结果的影响。 为了获得专业的效果,您将需要使用纹理,该纹理将为模型上的每个点定义不同的PBR组件。 幸运的是,大多数3D艺术家已经熟悉此着色模型,并发布了免费的材质定义,可以帮助您快速启动任何项目。 此外,iOS 10 PBR材质还支持其他贴图,例如法线贴图,这些贴图是可选的,但必须使用以获得良好的外观。 为了演示的目的,我使用了freepbr.com的一些资料。 如果要使用其他材料测试代码(如下),请确保将其签出。 编码时间 我们将一起创建旋转球的示例,如下所示。 无需担心-所有代码都在GitHub上发布。 首先,您需要了解一些先决条件: 获得可用的最新macOS,iOS和Xcode beta版本-您不想因为Apple已经解决的错误而陷入困境。 不要使用模拟器-始终使用支持金属的设备。 这是Beta版软件-可能也会出现错误 准备看它有多简单? 我们走吧 我假设您有编写Swift代码的经验,并且您已经创建了一个SceneKit视图。 如果还没有,请从Game模板开始,然后选择SceneKit作为您的游戏技术。 您将获得的模板代码足以完成本练习(我在这里实际使用过……) 第一步:创建一个场景: 让场景= SCNScene(名称:“ sphere.obj”)! 如您所见,直接从OBJ文件初始化场景非常简单。 […]
继续探索一些不常见的iOS框架的尝试,我们将尝试研究一个有趣但不受欢迎的候选者ReplayKit 。 ReplayKit使应用程序开发人员可以在其应用程序中记录活动的视频。 您也可以使用麦克风捕捉声音。 此框架自iOS 9起可用。从iOS 10开始,此框架使您可以为视频添加面部时间记录(例如实时评论)。 您甚至可以现场直播该应用程序的屏幕录像。 在wwdc会议中,Apple主要强调使用ReplayKit从游戏内部录制/直播您的游戏。 在任何应用程序中使用ReplayKit的一种可能性是错误报告。 如果测试人员可以选择记录导致错误的流程以及对缺陷的解释,那么事情会变得很容易。 但是您将无法使用ReplayKit报告任何崩溃。 我们稍后再讨论。 让我们来看一个示例,展示如何在这种情况下使用ReplayKit 。 项目概况 我们的项目由一个视图控制器组成,该控制器在表格中显示书籍及其作者的列表。 由于没有可供浏览的详细信息屏幕,因此当您单击书本条目时,在表格视图单元格上显示选择内容毫无意义。 但是默认情况下,表格视图单元格是可选的。 这可能是我们试图报告的错误。 BookListVC :显示书籍和作者的列表。 我们完成的BookListVC看起来像这样。 设置屏幕录像机 要设置屏幕录像机,我们使用ReplayKit的RPScreenRecorder类。 var screenRecorder:RPScreenRecorder? RPPreviewViewControllerDelegate RPPreviewViewController的代表在被关闭时会收到通知。 从屏幕快照中可以看到,有两种方法可以关闭视图控制器,既可以将记录保存为照片,也可以选择不选择。 如果应通知您的视图控制器如何解雇预览视图控制器,则应使用以下委托方法。 func PreviewController(RPPreviewViewController,didFinishWithActivityTypes:Set ) 从活动类型中,您可以找出如何解雇控制器。 如果集合包含saveToCameraRoll,则记录已保存到相机胶卷中。 如果集合为空,则仅关闭预览视图控制器。 如果您不熟悉活动类型,请遍历UIActivityType并内置活动类型 。 如您所见,预览视图控制器已关闭。 当应用程序导航到预览视图控制器时,我们将隐藏包含记录指示的窗口。 一旦将其关闭,就必须显示它,因为它是主UI的一部分。 您可以在下面查看我们的应用程序的录像。 崩溃报告失败!!! 现在回到为什么无法使用ReplayKit记录崩溃的原因 。 如果应用程序崩溃,整个录制流程将中断,并且永远无法将录制内容保存到“照片”中。 同样,涉及到移至后台然后弹回应用程序中的错误也无法正确记录。 在应用程序进入后台之前和应用程序进入前台之前,您将获得记录,而不是在应用程序外部花费的时间。 如果需要更清晰的说明,则可以自由浏览源代码 。 参考文献 ReplayKit上线– WWDC 2016 […]
iOS 10的许多美丽改进之一是即将对iMessage进行的大修,开发人员可以将应用程序和标签包提交给iMessage App Store。 但是,iMessage不仅将开始发挥其潜力,还带来了其他一些较小的改进,这些改进可能会使您的生活更轻松。 这些改进之一是如果您只希望某些特定的人知道何时阅读邮件,则可以设置个人已读回执。 要进行设置,您可以 访问设置 导航到消息 点击发送已读回执并将其设置为关闭 打开iMessage 点击您要允许阅读回执的联系人 点按(i)右上角 点击发送已读回执并将其设置为“ 开 ” 现在您也可以在下面的我的gif中观看它: 对于尚未安装iOS 10的所有人,它将在9月13日到达您附近的iPhone。 您知道9月13日还会有什么下降吗? iMessage马里奥贴纸! HT:Dave DeLong 如果您喜欢这篇文章,我确定您会喜欢我的所有者贴纸包,名为kaomotion。 请在下面查看其工作原理,然后在App Store上找到它: Kaomotion for iMessage。
以下讨论的所有内容均来自此WWDC视频 。 这个长达35分钟的视频包含有关UICollectionView增强功能的所有详细信息,并解释了为什么添加此Pre-Fetch API,现有的滚动体验,帧掉落等问题是什么? 所以现在,让我们进入理论, 随着开发的任何移动应用程序用户规模的增长,该应用程序能够承受各种网络呼叫,各种设备和屏幕尺寸变得越来越重要。 理想情况下,每个应用程序都需要交付即时的内容交付,不丢帧(或不浪费网络数据)。 为了实现这一目标,我想通过“后台预取”(已经通过在各种应用程序中使用不同的机制来解决这一问题!)是打破所有其他依赖关系并平稳运行/滚动的方式。 用“ Background pre-fetching”(背景预先提取)一词,这是不言而喻的,任何移动应用程序都应该在后台提取足够的数据,并准备好将它们预先显示在屏幕上,从而可以流畅地观看内容。 在分析任何应用程序时,滚动时通常会由于以下原因而导致内容下降或滞后: 1.网络可用性 网络连接将会频繁下降,因此移动应用必须提出一种不同的实时获取内容的策略。 如果我们以相同的次数定位许多用户,则移动应用程序必须处理网络带宽速度。 2.切换连接类型 移动应用必须观察其用户sim或wifi或两者之间的切换的不同使用模式。 根据用户已在其移动应用程序中连接的连接,内容将显示得更快或更慢。 3.没有互联网连接 如果移动应用程序完全失去了互联网连接怎么办? 是否向用户显示提示说没有互联网连接(或),一个带有加载/刷新图标的占位符单元足够,以便在互联网连接重新打开时重新加载,是否很好? 从任何移动角度来看,它将是以下两个选项之一: 1. 脱机数据处理 ,以从应用程序的数据库中获取并显示先前获取的内容。 2. 缓存机制 ,我们在其中缓存内容并显示它们。 现在,如果没有先决条件,所有条件都得到满足,但移动应用程序仍然没有流畅的滚动体验,该怎么办? 在iOS 10上,Apple引入了“ 数据预取 ”概念及其相关的API后,在UICollectionView和UITableView中都可以在后台线程中预取数据以体验流畅的滚动体验,它确实有效! 操作系统负责在后台获取其他数据。 在直接进入API方法之前,让我们看一下iOS 9中UICollectionView的生命周期: 1. collectionView(_:cellForItemAt 🙂 -单元格将进入带有内容的可见区域。 2. collectionView(_:willDisplay:forItemAt 🙂 -单元格进入带有内容的可见区域。 3. collectionView(didEndDisplaying:forItemAt 🙂 -单元格在可见字段之外。 现在,iOS 10中的UICollectionView的生命周期: 它与iOS 9相似,但是按照Apple的解释,操作系统更早地调用collectionView(_:cellForItemAt 🙂 ,这意味着,即使在需要显示单元格之前,也可以完成所有繁重的工作。 另一个是,使用iOS […]
此故事描述了iOS开发人员如何应对OWASP Mobile Top 10 2016中的M1类别漏洞。该类别涵盖了平台功能的滥用或平台安全控件的使用失败。 在第1部分中,我们将介绍Apple提供的加密工具以及iOS的其他一些与隐私相关的功能。 文件数据保护 Secure Enclave — A7和更高版本处理器中的协处理器,使用加密的内存和硬件随机数生成器为数据保护密钥管理和Touch ID提供加密操作。 UID —唯一标识符,融合到处理器和Secure Enclave中的AES 256位密钥,对于每个设备都是唯一的。 允许将数据绑定到设备。 文件系统上的所有文件均受数据保护技术保护(可用于文件和数据库API,包括NSFileManager,CoreData,NSData和SQLite): 每次在数据分区上创建文件时,Data Protection都会创建一个新的256位密钥(“每个文件”密钥),并将其提供给硬件AES引擎以对该文件进行加密。 每个文件密钥都用几个Data Protection类密钥之一包装(在Secure Enclave中),并与数据保护类的表示法一起存储在文件的元数据中。 所有文件的元数据都使用文件系统密钥加密,该文件系统密钥是在首次安装iOS或用户擦除设备后创建的。 删除此密钥,用户可以使所有文件不可解密。 数据保护类密钥受UID保护,对于某些类,还受用户密码保护 文件密钥永远不会暴露给处理器。 它们仅在跨系统运行时才用AES引擎和Secure Enclave已知的临时密钥包装。 应在项目设置(包括在权利中)中启用“文件数据保护”,但是默认情况下,对于所有应用程序,所有数据都会被加密,直到首次解锁。 钥匙串数据保护 iOS钥匙串 -存储在文件系统上的SQLite数据库,用于处理密码和其他简短但敏感的数据位。 securityd守护程序根据其“ keychain-access-groups”,“ application-identifier”和“ application-group”权利来确定每个应用程序可以访问哪些钥匙串项目。 从iOS9开始,钥匙串密码数据一直保存在Secure Enclave中(在iPhone 5S和更高版本上)。 钥匙串中有五组项目:通用密码,Internet密码,身份,证书和密钥。 除其他字段外,每个钥匙串项目均包含: 钥匙串组访问(kSecAttrAccessGroup) –允许开发人员的应用访问设备上共享的钥匙串项目; 应用程序必须共享可以在权利中设置的相同捆绑包种子ID。 数据保护等级 (kSecAttrAccessible) —下一节将详细介绍。 iCloud钥匙串(kSecAttrSynchronizable)-允许用户在iOS设备和Mac计算机之间安全地同步其钥匙串项目,而无需将该信息暴露给Apple。 默认情况下,第三方应用添加的钥匙串项目不会同步。 该值应与兼容的数据保护类一起使用(一个不带… ThisDeviceOnly后缀)。 管理元数据,例如创建和上次更新的时间戳,版本号,使用保护类密钥包装的每个项目密钥, SHA-1散列的属性(例如帐户和服务器名称)用于查询项目而不解密每个项目 […]
具有动态大小的UICollectionViewCell 如果您要使用动态尺寸的集合视图单元格,可以按照以下两个简单步骤操作: 在控制器类中设置UICollectionViewFlowLayout的EstimatedItemSize属性。 在您的UICollectionViewCell子类中实现preferredLayoutAttributesFitting方法。 3.步骤2的替代方法是使用下面的类作为UICollectionViewCell子类的基类。 请评论您的改进建议。
¿Quéprender? Conocer和Sabre utilizar Xcode 8 Saber实用Swift 3 ,可用于Apple iOS 10程序 Conocer los nuevos框架desarrollo como消息,语音或Siri工具包 禁止在框架中单独注册,注册,注册,并授权的专业人士。 Utilizar Un control de versiones en formma en repositorio Github o Bitbucket Sabre文档和Expandir Conocimientos Con框架avanzados como核心数据,CloudKit,AVFoundation… 可解析的basadas en servidores remotos,Montando el tuyo propio con解析和Amazon Web Services 要求 Un Mac con Yosemite o steriorema pistivo instalado Descripción *在 iOS 10上的《 Udemy […]
订阅播客 的iTunes 声云 的YouTube 的RSS 今天,我们将对名为Joe Green的小伙子产生一点点沉迷。 你不认识他……这就是重点。 乔是扎克斯特大学的一名室友。 而且,我知道你们所有人都喜欢Facebook,并且已经在The Social Network中观看了Zuck和他的室友构建FaceMash的场景……这就像是愚蠢的“ Hot or Not”版本。 我们的朋友Joe Green帮助建立了这个平台。 他还帮助了Facebook的第一次迭代。 但是像一个假人一样,当马克和他的Facebook亲戚决定搬到加利福尼亚并全职建立Facebook时,他决定留在学校。 现在,乔·乔(Joe-Joe)最终做出了明智的选择,获得了一些Facebook股票(因此他的IPO确实赚了几美元),但据估计,由于不带船员前往加利福尼亚,他损失了4亿美元。 现在,我不是来指指点点(笑,也许一点点)…… 还是根据他的决定去做。 但是,这是我错过的机会的教训。 而且,我认为您在移动方面也面临类似的决定。 我只是看着我最小的男孩。 一是4,一是8。 以及完整的技术合作伙伴。 我不记得他们最后一次看电视时像我们过去“我小时候”一样。 已经好几年了 YouTube,Netflix,Hulu等……就是他们的“电视”。 而且,一切都在他们的手机上。 而且,它们是完整的手机势利者。 他们到处都埋在他们的脸上。 现在,您能想象这些孩子何时20、30、40岁吗? (gh,这些天孩子们……) 但是不要相信我。 这是一些花哨的组织提供的一些听起来不错的统计数据,正在调查这些东西……这也确实是正确的,应该对您的编码人员一记耳光: 现在,美国人在手机上花费更多的时间在数字媒体上(51%),而不是台式机(42%)。 接近三分之二的美国人拥有智能手机,其中46%的拥有者说,他们的智能手机“是他们生活中不可缺少的东西”。 87%的千禧一代始终随身携带智能手机,而78%的千禧一代每天使用智能手机花费超过2个小时。 13-17岁的青少年中有84%拥有手机,而6-9岁的青少年中有83%使用平板电脑。 美国有65%的智能手机用户在起床后15分钟内检查手机,而64%的用户在上床后15分钟内检查手机。 我们是智能手机的强者。 而且,我们的孩子更是如此。 现在,我们可以让老人“摆脱我的草丛”,把所有这些都当成事实。 但是,您的感觉不会消沉。 这正在发生。 您可以随心所欲地挥动拳头和屏幕上的淫秽物,这仍在发生。 并且,作为开发人员,您需要注意。 否则,您可能会像乔·格林一样成为大输家。 或是数千名其他人错过了我们在整个历史中所见过的“ shoulda hadda V8”趋势。 现在,如果您确实是像您这样的技术新闻专家,那么您将知道iOS […]