使用TexturePacker创建Spritesheets #spritesheet #forgetful

TexturePacker不仅好用,而且是独立开发人员制作的! 支持您的独立开发者! 关键帧动画创建 稍后,联合物理系统甚至3D图形还有很多其他优化选择,但是老式的关键帧动画对我来说是最重要的! 这就是为什么Banner Saga以及漫画书和动漫电影Akira都如此出色的原因。 创建图形 将文件添加到TexturePacker 测试动画 如果选择了精灵,然后点击“动画预览”,则可以使用非常可爱的精灵表动画,您可以控制其速度。 指定图集和可选的Swift文件的文件名和目录位置 选择发布Spritesheet 好极了! 现在,您将拥有一个Spritesheet地图集和样板代码来运行您的Sprite。

有人如何窃取您的iCloud密码

这是iOS向用户展示的默认“登录到iCloud”对话框(有时过于频繁且没有明显原因)。 令我感到恐惧的是,这是一个非常简单的登录提示,提示有人进行诊断,包含在诱饵应用中并用来窃取iCloud密码。 电子邮件地址 尽管开发人员无法轻松获得用户的iCloud电子邮件,但是Apple提供了API,用于验证电子邮件地址是否属于iCloud帐户。 诱饵应用程序可以在注册过程中向用户询问其电子邮件,或从其Facebook帐户获取该电子邮件。 稍后,攻击者可以验证电子邮件是否属于某个帐户,然后显示视频中显示的弹出窗口。 如果电子邮件不属于iCloud帐户,则可以将提示修改为提示所提供的电子邮件地址不正确,而只是在提示中询问电子邮件和密码-大多数人不会三思而后行。 问题 真正的“登录iCloud”弹出窗口似乎随机出现,因此很难检测到假表格。 此外,iOS使用通用的UIAlertController要求用户输入安全信息,这意味着普通人很难检测到假信息。 iOS不应让iOS从警报视图中要求用户登录,而应在iCloud部分启动设置,以便用户可以安全登录。不幸的是,用户已经习惯了当前的对话。 我感到即使苹果确保了他们登录iCloud流程,大多数人仍然会遭受这种攻击。 您可能会认为这样的应用程序将永远不会被Apple接受,但是为了在审阅过程中在雷达下飞行,攻击者可以将弹出窗口延迟显示,直到该应用程序被批准为止。 例如,可能存在一些服务器端逻辑,指示何时以及向谁显示伪造表单。 跟上我在Twitter或网站上的最新动态,请分享这篇文章以提高认识。

硬链接!=符号链接

链接是链接就是链接,对不对? 错误!!! 让我们谈谈硬链接和符号链接在Linux上的情况,它们之间的区别以及如何创建它们。 硬链接 从简单的角度来看,硬链接是一种使操作系统认为inode具有两个(或更多)名称的方法。 如果其中一个硬链接被编辑/更改,则所有关联的硬链接都将被更改。 例如,如果您有一个文件hello.c指向inode 141366中的信息,则指向文件hello.c的硬链接将指向inode 141366。 创建硬链接 创建硬链接的语法为: 在[OPTION] TARGET LINK_NAME中 TARGET =您想要与之关联的硬链接的文件 LINK_NAME =您的硬链接名称 有关shell支持的各种选项,请参见ln命令的手册页。 符号链接 最基本的符号链接是文件的快捷方式。 假设您有一个文件hello.c,它指向inode 141366中的信息。 如果创建指向文件hello.c的符号链接hello_link,则hello_link的文件会告诉操作系统查看hello.c的信息,然后该信息会告诉操作系统要查找的信息位于inode 141366中。 创建符号链接 创建硬链接的语法为: ln -s [OPTION] TARGET LINK_NAME -s = ln sommand选项以创建符号链接 TARGET =您想要与之关联的符号链接的文件 LINK_NAME =符号链接的名称 有关shell支持的各种选项,请参见ln命令的手册页。

向通知添加声音

您是否曾经从ESPN应用程序收到过推送通知,它会以ESPN的“ da-na-na,da-na-na”声音显示最终得分? 您是否曾经考虑过上述通知,并认为我希望可以为自己的应用程序做到这一点? 不再思考。 病态向您展示如何使用自定义声音发出通知。 第一步-使用iTunes转换为.m4r 如果您有 mp3 或 wav 文件,则可以跳过第一步。 您需要做什么:将歌曲添加到iTunes>转换为AAC>在finder中查找>将文件扩展名从.m4a重命名为.m4r .AAC是我们想要的。 这是有关如何在iTunes中将文件转换为AAC的更多信息https://support.apple.com/zh-cn/HT204310 第一步(替代方法)-使用Garageband转换为.m4r 在Garageband中打开文件。 编辑所需的确切声音。 Apple要求所有通知声音必须在30秒以内。 然后单击共享>将歌曲下载到iTunes… 在iTunes文件中>在Finder中显示。 然后将.m4a重命名为.m4r,单击“确定”。 将文件拖到桌面进行下一步。 第二步-将声音转换为CAF 我们需要将.m4r转换为.caf文件。 有趣的事实.caff代表核心音频文件格式。 输入此afconvert命令,该命令已存在于终端中 afconvert -d LEI16 -f caff LEI16 @ 44100 -c 1 input_file.xxx output_file.caf 因此,例如,如果我有文件“ ANewRecord.m4r”(没有空格),则输入以下命令: afconvert -f caff -d LEI16 @ 44100 -c 1 ANewRecord.m4r newRecordm4r.caf 第三步-拖放 将新的.caf文件放入项目的Supporting Files文件夹中。 确保将您的应用选择为目标。 […]

适用于iOS的“ Meitu”应用程序中有关Analytics Collection的技术信息

今天有一些骚动涉及到名为Meitu的移动应用程序。 这篇文章仅关注iOS版本(如果有兴趣,其他人已经初步了解了Android版本)。 评估内容(v6.1.1) “ 美图秀秀 ”(com.meitu.mtxx) “ MTXXFilterExtension”( com.meitu.mtxx.MTXXFilterExtension ) “ MTMosaicMessage ”(com.meitu.mtxx.MTMosaicMessage) 收集的分析信息 设备IMEI,IMSI和MAC地址似乎没有发送到Meitu的第一方或任何打包的第三方分析服务器。 无法在更新为最新固件版本的iOS设备上获取与无线电有关的敏感信息。 在初步测试过程中,Meitu应用程序确实向服务器发送了伪造的MAC地址“ 02:00:00:00:00:00”。 乔纳森·兹齐亚斯基(Jonathan Zdziarski)提到了Meitu应用程序对MAC地址的使用,因为二进制代码仍包含用于获取设备MAC地址的功能。 但是,如上所述,App Store沙箱中的iOS应用程序无法访问设备的真实MAC地址(与IMEI和IMSI一样)。 对于iOS 8或更高版本的设备,此功能没有风险。 以下信息似乎确实已发送到Meitu分析服务器(adui.tg.meitu.com):iOS版本(例如“ 10.2”),设备型号(例如“ iPhone7,2”),网络类型(例如“ WiFi”),设备语言,设备区域设置,移动国家/地区代码以及随机生成的唯一标识符。 正如乔纳森·兹齐亚斯基(Jonathan Zdziarski)指出的,由于使用了第三方分析库,Meitu应用程序确实获得了蜂窝提供商的名称。 蜂窝提供商名称将发送到第三方分析提供商Umeng / Youmi(alogs.umeng.com)的服务器。 “ channel_id”也发送到adui.tg.meitu.com服务器。 由于大量使用“辅助”或“辅助”工具在该地区旁加载应用程序,因此这在中国应用程序中很常见。 直接从App Store下载应用程序后,将在此参数下发送值“ App Store”。 Meitu应用程序收集GPS位置( 如果已授权 ),并将其发送到分析服务器。 我无法高度确定发送GPS位置的分析服务器,但我有一定的信心,认为该分析服务器是第三方分析服务器,并未由Meitu本身直接调用(旁注:Meitu确实请求访问权限位置带有模糊信息“开启后美图秀秀才可访问你的地理位置哦”,但直接归因于美图本身的唯一用例是为用户检查当地天气。 专用API的使用 正如Jonathan Zdziarski所指出的那样,该应用程序包含从私有框架加载两个功能的代码。 但是, 此代码不能按原样工作 。 这是因为该应用程序从路径“ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/PrivateFrameworks/GraphicsServices.framework/ GraphicsServices”(此路径在iOS设备上不存在)。 Meitu应用程序中确实存在一些代码,可以允许在运行时动态加载私有框架。 但是,没有迹象表明已使用它。 […]

iOS应用提示:条纹

Der Aufbau ist relativ schlicht gehalten和,wie bei jeder guten iOS应用程序,selbsterklärend。 Man Richtet bis zu sechs Tasks ein,die dan jeweils ein Badge auf dem Homescreen besitzen bis sie erledigt sind。 BeimHinzufügenkann man schon vordefinierteEinträgenutzen zB Kalorienverbrennung。 您可以在Health App von Apple eingetragen,das brauche ich hier nicht auch noch中找到ganzen sportlichen Ziele haber ich aber。 Sachen wieZähneputzen oder Wasser […]

iOS中的核心数据

核心数据是Apple在OS X和iOS操作系统中提供的对象图和持久性框架。 这是一个非常独特的功能,可以在本地存储和映射具有不同层次结构的各种数据(文本,图像等)。 为什么要使用核心数据 当您需要存储每次打开应用程序时都不想从服务器检索的数据,或者需要离线使用应用程序并且仍想跟踪数据时,Core Data很有用。 优点 核心数据在本地管理数据,这意味着它具有持久性存储。 每次应用启动或关闭时,都可以随时随时加载或保存数据。 Core Data设法提供了许多有用的功能,可以节省大量时间。 一件事是称为“核心数据模型编辑器”的图形对象模型编辑器。 它提供了一个界面,供您以清晰的方式创建各种实体和属性,以显示它们之间的关系。 另外,与在代码中更改实体或属性相比,使用此模型可以更轻松地在以后更改实体或属性。 Core Data提供了关系连接功能,您只需要在XCModel中添加一个关系即可显示每个实体与另一个实体之间的关系,还可以指定任何一对一,一对多或多对多的关系关系变成一个简单的干净的面向对象的界面。 某种程度上,这就像某些数据库一样,提供了一种简单的方法来管理核心数据。 例 我们在Go Ahead Tours移动应用程序中广泛使用了Core Data框架。 例如,我们的移动团队决定使用Core Data在聊天功能中保存消息。 因此,显然,我们需要创建一个具有不同属性(如messageID)和内容(如文本,图像或位置信息)的消息实体。 另外,由于每个巡回包含一个唯一的聊天室,并且某些用户可能具有多个巡回,因此我们需要将消息与巡回连接的关系。 因此,我们将其设置为一对多关系,其中每个消息都属于其唯一的旅程。 因此,每当我们将消息存储到核心数据中时,我们只需要将特定的旅程添加到消息实体中即可。 因此,与游览相关的每个消息都将具有与游览相关的相同密钥值。 同时,我们在游览类中创建了一组消息,用于存储消息。 每次我们需要检索消息时,我们只需要进行游览,并使其返回所有消息即可。

如何在iOS中使用OpenGL ES 3.0和GLKit创建360视频播放器

360视频是同时记录每个方向的视图的视频记录。 在播放期间,观众可以像全景图(Wiki)一样控制观看方向。 现在,它越来越受欢迎,通常您会在Facebook的新闻源,Youtube的360个频道中看到360个视频,甚至在诸如NYTimes和Wallstreet Journal之类的新闻应用程序中也是如此。 在本教程中,您将学习如何使用OpenGL ES 3.0和GLKit从零开始制作360视频播放器。 由于该实现很大程度上依赖于OpenGL,并且OpenGL是跨平台的,因此该应用程序可以移植到其他平台,例如Android,Windows甚至是Web(WebGL)。 在此过程中,您将学到: 如何使用GLKit在iOS中以编程方式绘制几何 如何与OpenGL几何体交互 如何将视频帧用作OpenGL纹理 不禁开始? 让我们开始🙂 注意:此360视频播放器应用程序教程假定您了解OpenGL和GLKit开发的基础知识。 如果您不熟悉OpenGL或GLKit开发,请查看我们的iOS OpenGL教程:OpenGL ES 2.0,以GLKit和OpenGL视频教程开始OpenGL ES 2.0,首先是OpenGL ES和GLKit入门系列。 入门 下载入门项目, 然后在Xcode中打开Go360.xcodeproj 。 在Xcode控制台左侧的导航栏中,您将看到demo.m4v 360视频,最终将其显示在应用程序中。 另外还有4个其他文件夹: Main , Shader , Model和Extension 。 当时无需关心它们。 生成并运行应用程序; 您将看到一个彩色的球体旋转。 目前,您只听到360度视频的音乐。 不用担心 您最终将看到该视频。 如何绘制球体 您只能在OpenGL中绘制三角形。 通过连接Vertex ,您可以绘制三角形。 使用越来越多的三角形,您可以建立一个看起来光滑的球体。 在项目中,使用OpenGL ES 3.0编程指南中的示例代码esShapes.c。 该代码用于以编程方式生成球体的“ 顶点” ,“ 纹理坐标”和“ 索引” 。 […]

须藤save_time

“时间是我们最想要的,但我们最浪费的是” ― 威廉·佩恩 在我们开始之前… 每个开发人员迟早都必须打开Safari并键入https://itunesconnect.apple.com来设置要通过AppStore分发的应用程序。 但是恰好在登录iTunes后,您将了解,应该首先设置开发人员帐户。 并且自开始以来,您将看到更多应执行的其他步骤: 创建一个applicationID 生成证书(用于开发和分发) 设置应用程序功能(例如,推送—通知) 生成一组配置文件以及更多 即使完成此操作,也应该管理所有创建的内容,与队友共享,考虑安全性等等。 是的,很多东西,我知道… “等等,我只想将我的应用程序发送到AppStore。 为什么不能只使用一个命令行命令?»。 实际上,它被称为Fastlane。 概述和要求 «fastlane —是一个用于iOS,Mac和Android开发人员的工具,用于自动化繁琐的任务,例如生成屏幕快照,处理配置文件和发布应用程序。»—这是您在git页面上看到的第一行(https: //github.com/fastlane/fastlane),这是100%正确的。 Fastlane是用Ruby编写的,它是一组或多或少独立的模块,已构建了其丰富的功能集。 它的结构很容易扩展,因为如果您想向系统添加一些新功能,则可以编写简单的Ruby脚本,并在现有的fastlane模块中使用它们,甚至可以向fastlane添加新模块。 Fastlane提供了一堆命令,可帮助自动执行应用程序部署,甚至执行不同的常见任务。 Fastlane是非常灵活且可扩展的工具。 目前,fastlane由200多个不同的模块组成。 我们将在下面列出最有用和最受欢迎的内容,并显示使用fastlane的iTunesConnect传递系统的基本设置。 由于我是iOS平台的软件开发人员,因此我们将深入探讨大多数适用于iOS开发人员的使用fastlane的过程,但是我敢肯定,此强大工具所支持的所有平台的主要步骤都相同。 适用于iOS的Fastlane需要安装以下工具: macOS X El Capitan或更高 Xcode-开发人员-适用于xCode 7或更高版本的工具 红宝石/酒(可选,推荐) textEditor🙂 快车道能为我们做些什么? 好吧,这个列表很大,包括很多东西: 交付:将屏幕截图,元数据和您的应用程序上载到App Store 供应:将您的Android应用及其元数据上传到Google Play 快照:自动在每台设备上拍摄您的iOS和tvOS应用程序的本地化屏幕截图 screengrab:自动在每台设备上拍摄Android应用的本地化屏幕截图 frameit:快速将屏幕截图放入正确的设备框架中 pem:自动生成和更新您的推送通知配置文件 感叹:因为您宁愿花时间在建物上,也不愿与资源调配作斗争 产生:使用命令行在iTunes Connect和Dev Portal上创建新的iOS应用 cert:自动创建和维护iOS代码签名证书 飞船:Ruby库可访问Apple Dev Center和iTunes Connect […]

TED 3.0:有效使用旧版iOS代码

我不会经常谈论我为保持家中照明效果所做的工作,但是过去四年来,我花了很大一部分时间在TED for iOS应用程序上工作。 就发布的范围和更改量而言,3.0版本是我们在TED上进行的最大发布。 字幕功能是该应用程序现已以20种新语言本地化。 现在,全世界的用户都可以使用其母语从阿拉伯语到土耳其语来体验TED。 在后台,我们计划将应用程序本地化超过一年。 花了这么长时间? 历史课 适用于iOS的TED于2010年10月首次登陆App Store,并专门针对原始iPad发行。 TED for iOS 1.0旨在在iOS 3.2上运行。 在过去的六年中,随着苹果平台设备和功能的变化,我们一直在此基础上不断发展。 在TED期间(2012年9月至今),我看到了: 视网膜图形,3x图形以及最终的矢量。 AVFoundation使我们轻松制作自己的自定义视频播放器(这是我的第一个TED项目!)。 引入ARC替代了手动保留/释放。 XCTest替代OCTest。 更大或更小的设备,例如iPad mini,iPad Pro,iPhone 5,iPhone 6和iPhone 6 Plus。 Auto Layout和size类可为管理所有这些新设备尺寸带来一些理智。 小部件和自定义共享操作之类的应用程序扩展。 哦,还有个叫Swift的小东西。 TED于2010年交付时,它完全是用Objective-C编写的,旨在在两种设备尺寸上工作:iPhone 3GS和原始iPad。 现在,我们支持从iPhone 4s到12.9“ iPad Pro等iPad的手机。在整个过程中,我们一直在更新相同的应用程序代码库。从未对iOS项目进行过全面的重写,有时可能很诱人。 装修您居住的房子 去年年初,我接任TED的首席开发人员,开始为TED投入更多的时间(TED一直最多是2个兼职开发人员,有时只有1个)。 这样一来,我们就可以将思维方式从维护现有应用程序以保持运转状态(偶尔添加功能)转变为尝试对移动目标更加雄心勃勃。 唯一的问题是我们的许多代码都在显示其年龄。 我列出了高水平的目标,以小规模的方式对应用进行现代化升级,以便我们仍然可以继续发布更新以使TED HQ开心,同时我消除了许多使我彻夜难眠的事情。 这些项目的第一个是对应用程序进行模块化。 由于我们的团队很小,并且有一群相当敬业的用户,他们可以快速升级,因此我们比大多数公司更快地使用最新版本的iOS SDK。 我将最低SDK设置为iOS 8,并开始将应用分解为单独的组件。 我们将其分为单独的动态框架,而不是其中包含所有代码的单个Xcode项目: TED:主要的iOS应用 TEDData:与数据层和业务逻辑相关的类 TEDVideo:我们的自定义视频播放器 TEDCore:在所有不同框架之间使用的共享代码 […]