Tag: 移动应用

为什么必须进行App Store Optimization(ASO)?

ASO是应用程序开发人员的必备工具之一,因为它可以帮助您免费获得用户 ! 毕竟,没有人开发出一款可以逗自己玩的应用…… 我将以iOS ASO为例,说明ASO如何为您提供免费流量,更具体地说,是高品质免费流量。 我们可以将ASO的功能概括为两部分:用户获取和转化率优化。 关键字优化可实现用户获取,而转化率优化可帮助您提高用户获取效率。 在应用商店中获取流量的基本逻辑是,用户进行关键字搜索的行为,在一长串应用中单击,进入应用商店并决定是否下载该应用。 一旦安装了该应用程序,我们就可以跟踪第三方平台,以了解用户何时首次打开该应用程序,保留率如何以及他是否最后成为付费用户。 总而言之: 我们通过定位正确的关键字来吸引高质量的用户; 并且我们根据理想关键字设计商店商品信息,以确保效率。 在此过程中出现的问题是,由于无法识别每个关键字的数据,我们如何才能知道哪个关键字是最有效的。 在这种情况下,我们需要Apple Search Ads的帮助。 首先,我们根据功能或卖点对关键字进行分组。 然后,我们根据关键字组设计屏幕截图,我的意思是,一个卖点一个屏幕截图。 下一步是使用Apple Search Ads中的广告素材集测试工具,将每个关键字组与相应的屏幕截图匹配。 这样,大约10天后,我们就会找出效果最好的关键字截屏集。 获胜者是效果最好的关键字和最终的商店列表。 总之,应用商店优化是一个封闭的循环。 它从通过关键字获取用户开始,以用户行为的可靠数据结束。 智能ASO策略将以零成本获得成千上万的用户。 每个应用程序开发人员都应该尝试一下。 原始答案在此处:https://www.quora.com/Why-is-App-Store-Optimization-ASO-necessary/answer/AppTraffic

适合显示,没有iPhone X的顶部和底部栏。

新款iPhone X边缘到边缘型号是最令人震惊和最受欢迎的手机之一。 更少的边框电话。 屏幕顶部和底部有白色小条的问题。 这在网站中被称为信箱。 我们将其称为缺口。 我们希望您的移动应用程序开发过程更加顺利,以防您遇到相同的错误。 测试时,该应用程序是在X代码模拟器(版本9.1.2)中使用新的iPhone X边缘到边缘模型在Cordova-ios-4.5.5上运行的,但该应用程序预期会填满整个屏幕,但并未。 相反,屏幕的顶部和底部填充了白色条。 幸运的是,有两个步骤可以使这些条消失。 I.设置视口元标记 在index.html文件中设置Viewport-fit = cover 。 Viewport Meta标签使显示适合整个可见屏幕。 它因设备而异,并且在移动电话上会比在计算机屏幕上小。 它很简单,但是用黑条代替了白条。 要删除此内容,请继续下一步。 二。 包括config.xml文件以删除黑条。 问题是因为cordova设置为默认值,这些默认值已更改为包括cordova-plugin-splashscreen ,该屏幕合并了旧版启动映像。 将以下内容添加到config.xml中 包含以上语句后,对res / screen / iOS中的尺寸进行以下更改。 iPhone X — 1125像素×2436像素— 2436像素×1125像素 完成这些更改后,您现在可以看到所需的结果。 嗨,我们在 Centizen 致力于通过我们的服务和产品来产生可持续的影响。 在 Centizen 访问我们 。 我们希望您能加入我们的团队。 在这里 加入我们 。 与我们分享的东西。 就在这里 ,因为我们都在追求进步。

Swift 5中的排他性实施

每次我们为变量设置值或从变量读取值或将参数传递给函数时,都会访问内存。 发布模式中排他性强制对Swift项目的影响 Swift 5中的排他性实施可能以两种方式影响现有项目: 如果项目源违反了Swift的排他性规则,并且Debug测试未能执行无效代码,则执行Release二进制文件可能会触发运行时陷阱。 崩溃将产生一条诊断消息,“ 对…的访问重叠,但修改需要排他访问 ”。 源代码级修复通常很简单。 内存访问检查的开销可能会影响Release二进制文件的性能。 在大多数情况下,影响应该很小。 结论 排他性强制仅捕获单线程错误。 对内存的独占访问可带来更可靠的性能,并显着优化: 图书馆 编译器 用户编写的代码 通过在发布版本中启用完全排他性强制实施,Swift 5有助于消除错误和安全性问题,确保二进制兼容性以及启用将来的优化和语言功能。 参考文献 https://swift.org/blog/swift-5-exclusivity/ https://docs.swift.org/swift-book/LanguageGuide/MemorySafety.html https://github.com/apple/swift-evolution/blob/master/proposals/0176-enforce-exclusive-access-to-memory.md https://developer.apple.com/videos/play/wwdc2017/402/ 您可以通过Twitter,Linkedin,Facebook和Github与我们联系。

借助iOS 11更新,位置营销将发生什么变化

如今,基于位置的技术和位置服务已广泛用于从社交网络到附近餐馆或从机场接人的日常活动。 了解客户的位置可以帮助企业确定他们需要提供服务的位置。 随着智能手机用户群的增长,公司需要通过移动应用程序扩大受众。 一个问题是,并非所有开发人员都正确要求移动权限。 移动策略顾问史蒂夫·里基茨(Steve Ricketts)表示:“很多应用在首次开放时就要求获得位置同意,而没有明确说明其用途。” 随着用户开始习惯性地拒绝位置许可提示,这可能会伤害多个企业。 今年,Apple宣布了iOS 11的一些重大更改,这些更改可以增加用户的选择加入; 也就是说,iPhone用户在分配位置时将获得更多选择和透明度,从而增强了他们对位置服务的信心。 改进的权限设置 过去,当iPhone应用程序询问用户位置时,用户只能在“始终允许”和“不允许”之间进行选择。在iOS 10中,Apple为开发人员提供了可选的“ 仅在使用应用程序时 ”许可选择,但大多数公司选择不执行它。 当移动用户不总是想要共享其位置但不能以其他方式使用该应用程序时,这是不便的,即使不令人沮丧。 在最新的操作系统更新中,Apple删除了它作为可选项, 并强制要求用户“仅在使用应用程序时”选项以及通常的“是”和“否”。 这样,用户可以选择仅在使用应用程序时显示其位置,而不是在后台运行时显示其位置。 除了新的三项权限菜单外,iOS 11还添加了一个蓝色状态栏,以在后台应用程序使用其位置时向用户发出警报。 蓝色栏(类似于绿色)在用户保持通话时在iPhone上延伸,它显示了访问用户位置数据的应用程序的名称。 起初这对于开发人员来说可能是艰巨的,但它有助于确保用户在完全同意并了解位置服务价值的情况下共享其信息; 更具体地说,他们在完全了解其目的的情况下给予了“始终允许”的同意。 从开发人员到用户的透明性可以帮助公司提高其移动许可选择率,从长远来看可以赢得更多客户。 此外,Apple为企业提供了一种用户友好的方法来获取用户的“始终允许”权限。 移动许可同意的两阶段方法 当用户首次使用应用程序时,他们并不总是理解为什么需要共享位置。 在iOS 11中,Apple为开发人员提供了一种分两步的逐步方法,以获取“始终允许”同意; 现在,开发人员可以首先为新应用程序用户提供“仅在使用应用程序时”权限提示,而不是前面提到的三菜单提示,然后在一段时间后再为“始终允许”提示。 苹果采取两步走方法的意图是:首先,企业应说明用户将从其定位服务中受益的方式; 例如,接收独家交易或事件通知。 客户使用该应用程序一段时间并确认其好处后,企业可以显示后续提示,以征得用户的“始终允许”同意。 对于开发人员来说,采用这种方法的一个诱因是在上一个权限提示中没有“不允许”选项; 用户只能轻按“仅在使用应用程序时”或“始终允许”。这是基于这样的假设,即用户此时更愿意使用应用程序的位置营销服务。 通过逐渐请求移动许可,企业更有可能获得他们需要的加入。 关于这一点,Ricketts建议开发人员利用iOS 11的更新来更好地与客户交流他们的业务需求:“如果开发人员在上下文中首次有人进入应用程序的商店定位器部分并询问其好处时进行上下文询问,那么他们更有可能获得用户的同意。” 移动位置营销以增加销量 基于位置的服务可以帮助企业提高销售量,从而为他们提供有关给定地区消费者的有价值的信息。 例如,全食超市(Whole Foods)使用位置营销策略,以特殊的折扣和激励措施提示附近的移动用户光顾其商店。 结果是点击后转化率为4.69% -更多的路人变成了购物者。 简而言之,最新的iOS更新鼓励开发人员改善企业与消费者之间的互动,将移动应用程序用户放在首位,以便他们最终选择“ 始终允许” 。 我们认为,为了继续向用户提供基于位置的服务以及收集位置信息,具有移动应用程序的企业需要在询问用户位置权限时重新考虑并改进其方法。 用户不授予访问其位置的权限的主要原因是,因为他们在允许应用程序知道其位置方面找不到价值。 重要的是要通过良好的UX缓解用户对其隐私的担忧。 移动应用程序所有者不仅可以使用默认的位置权限对话框,还可以通过完整的说明告诉用户他们为什么要获得其位置的权限,并可以在适当的时候询问权限。 您可以在此处查看一些最佳做法 。 iOS […]

关于新Xcode 9的所有内容都很酷

Xcode的最新版本Xcode 9于今年发布,在开发人员社区中引起了极大的兴趣。 Xcode具有一些时髦的新功能,而旧的功能已被完善,Xcode提供了一些很棒的功能。 以下是它的一些最佳功能- 改进后的新编辑器 :Apple已在Swift中构建了整个Xcode。 它是基于结构的快速编辑器,可让您智能地突出显示和导航代码。 它还包括Markdown的强大支持。 重构:重构内置于编辑体验中,可在Swift,Objective-C,Interface Builder和许多其他文件类型中使用。 超快速搜索 :“查找”导航器返回即时结果。 调试: Xcode 9使您可以通过网络无线调试iOS和tvOS设备(它还将支持iOS 11设备)。 源代码控制: Xcode集成了对GitHub帐户的支持,可快速浏览存储库并将您的存储库推送到云中。 核心ML: Xcode 9带有内置的核心ML编辑器,可让您将一些很棒的机器学习模型集成到您的应用程序中。 这些只是使构建应用程序更加快速,轻松和有效的众多功能中的几个。 查阅此博客文章,详细介绍所有令人兴奋的新功能以及如何使用它们来增强Apple应用程序的开发。 这是在Moveo Apps博客上发布的原始帖子的简短版本。 阅读全文

在iOS上构建自己的视频音序器时要避免的陷阱

Rosberry 的iOS开发人员Anton Kormakov 嗨! 我叫Anton,我是Rosberry的iOS开发人员。 不久前,我碰巧从事名为Hype Type的项目,不得不解决一些有关使用视频,文本和动画的有趣任务。 在本文中,我想告诉您一些陷阱,以及如何避免它们在iOS上构建实时视频定序器。 Hype Type使用户可以录制一组短片和/或多张图片,总运行时间为15秒,向制作的剪辑中添加文本,并向其中应用一个可用的动画。 在这种情况下,处理视频的关键方面是,用户应该可以选择彼此无关地管理视频剪辑:更改播放速度,反向,翻转和(可能在以后的版本中)随时随地交换剪辑。 您可以问:“为什么不使用AVMutableComposition ?” 在大多数情况下,您是对的-显然这是一个相对方便的视频音序器。 但是,遗憾的是,它有很多限制,所以我们无法使用它。 首先,不可能在旅途中更改和添加轨道-要获得更改后的视频流,必须重新创建AVPlayerItem并重新初始化AVPlayer 。 同样,使用AVMutableComposition中的图像并不是完美无缺的-将静态图像添加到时间线中,必须使用AVVideoCompositionCoreAnimationTool ,这肯定会增加大量开销,并且会大大降低渲染速度。 简短的网络搜索并未发现其他或多或少合适的解决方案来应对这一任务,因此我们决定开发自己的视频序列发生器。 首先,介绍一下项目中渲染管道的结构。 我必须立即说,我不会详细介绍希望您有所了解,否则这篇文章会引起骚动。 如果您是新手,我建议您应该更加注意著名的框架GPUImage (Obj-C,Swift),这是在OpenGLES上使用清晰插图进行处理的一个很好的起点。 负责通过计时器在屏幕上呈现录制的视频的视图( CADisplayLink )向定序器请求帧。 由于该应用主要用于视频,因此使用YCbCr色彩空间并将每个帧作为CVPixelBufferRef发送会更合乎逻辑。 在获取每个帧时,将创建亮度和色度纹理,并将其发送到着色器程序。 一个人在输出上获得RGB图像,并呈现给用户。 在这种情况下, 刷新循环如下所示: 这里几乎所有内容都是使用包装器构建的(用于CVPixelBufferRef , CVOpenGLESTexture等)—这允许将基本的底层逻辑带到单独的层,并大大简化了使用OpenGL的基本步骤。 当然,它有一些缺点(主要是-性能略有下降,灵活性较低),但是,它们并不是那么关键。 值得澄清:self.context —是EAGLContext的简单包装,使CVOpenGLESTextureCache和多线程OpenGL调用的工作更加轻松。 self.source —一个定序器,用于确定应从哪个轨道将哪个帧分配给视图。 现在有几句话关于我们如何组织要渲染的帧的获取。 由于定序器将同时处理视频和图像,因此用通用协议覆盖它是合乎逻辑的。 在这种情况下,音序器的任务是控制播放头,并根据其位置从相关音轨中释放新帧。 实现MovieSourceProtocol的对象处理如何获取帧的逻辑。 这种方案使该系统具有通用性和可扩展性,因为图像和视频处理的唯一区别将是获取帧的方法。 因此,我们的VideoSequencer变得非常简单,主要的问题仍然是识别当前轨道,并使所有轨道具有相同的帧频。 这里的VideoSequencerTrack是实现MovieSourceProtocol的对象的包装,该对象包含不同的元数据。 现在,让我们开始获取帧,并仔细观察一种情况-图像表示。 一个人可以从相机上获取它—在这种情况下,我们可以立即以YCbCr格式获取CVPixelBufferRef,然后仅复制它就足够了(为什么这很重要,我将在后面解释),并根据请求将其返回。 或从图片库中获取图片-在这种情况下,您将不得不跳过一些挂钩并将其手动转换为所需的格式。 从RGB转换为YCbCr可以在GPU中进行处理,但是,现代设备的CPU可以非常快地完成此任务,尤其要记住,应用程序在使用图像之前还会对其进行裁剪和压缩。 其余的很简单。 唯一要做的就是在给定的时间内给出相同的帧。 现在,让我们添加一些视频。 我们决定为其使用AVPlayer-主要是因为它具有易于使用的API来获取帧并处理声音。 […]