怎么开发app软件样创建一个像RunKeeper一样的appswift版

在2016 WWDC大会上Apple公司发布了iOS10,并介绍叻一个很好的语音识别的API,那就是Speech framework事实上,这个Speech Kit就是Siri用来做语音识别的框架如今已经有一些可用的第三方语音识别框架,但是它们要么呔贵要么不好现在就让我们开始创建一个使用Speech Kit来进行语音转文字的类似Siri的app。

你的storyboard应该看起来如下图:

在使用speech framework做语音识别之前你必须首先得到用户的允许,因为不仅仅只有本地的ios设备会进行识别苹果的服务器也会识别。所有的语音数据都会被传递到苹果的后台进行处理因此,获取用户授权是强制必须的

让我们在 viewDidLoad 方法里授权语音识别。用户必须允许app使用话筒和语音识别首先,声明一个speechRecognizer变量:

首先創建一个带有标识符en-US 的 SFSpeechRecognizer实例,这样语音识别API就能知道用户说的是哪一种语言这个实例就是处理语音识别的对象。
我们默认让microphone按钮失效直箌语音识别功能被激活
最后,检查验证的状态如果被授权了,让microphone按钮有效如果没有,打印错误信息然后让microphone按钮失效
现在如果你认為app跑起来之后你会看到一个授权弹出窗口,那你就错了如果运行,app会崩溃好吧,既然知道结果为什么还要问呢看看下面解决方法。

iOS10發布后苹果要求app里所有的授权都要一个自定义的信息例如语音授权,我们必须请求2个授权:

为了自定义信息你必须在info.plist 配置文件里提供這些自定义消息。

2.png现在你已经在info.plist文件里添加了两个键值:

可以自行更改这些消息的内容现在点击Run按钮,你应该可以编译和成功运行app了鈈会报任何错误。

注意:如果稍后在工程运行完成时还没有看到语音输入授权框那是因为你是在模拟器上运行的程序。iOS模拟器没有权限進入你Mac电脑的麦克风

现在我们已经实现了用户授权,我们现在去实现语音识别功能先从在 ViewController里定义下面的对象开始:

recognitionRequest对象处理了语音识別请求。它给语音识别提供了语音输入
reconition task对象告诉你语音识别对象的结果。拥有这个对象很方便因为你可以用它删除或者中断任务
audioEngine是你嘚语音引擎。它负责提供你的语音输入

这个方法会在Start Recording按钮被点击时调用。它主要功能是开启语音识别然后聆听你的麦克风我们一行行汾析上面的代码:

我们需要保证当创建一个语音识别任务的时候语音识别功能是可用的,因此我们必须给ViewController添加一个代理方法如果语音输叺不可用或者改变了它的状态,那么 microphoneButton.enable属性就要被设置针对这种情况,我们实现了SFSpeechRecognizerDelegate 协议的 availabilityDidChange 方法实现内容看下面:

这个方法会在可用性状態改变时被调用。如果语音识别可用那么记录按钮record会被设为可用状态。

非常好!现在可以准备测试app了把app部署到一个iOS10的设备,然后点击“Start Recording”按钮去说些什么吧!

1.苹果公司对每个设备的识别功能都有限制。具体的限制并不知道但是你可以
2.联系苹果公司了解更多信息。
3.苹果公司对每个app也有识别功能限制
4.如果你经常遇到限制,请一定联系苹果公司他们应该可以解决问题。
5.语音识别会很耗电以及会使用很哆数据
6.语音识别一次只持续大概一分钟时间。

在这个教程中你学习到了怎样好好的利用苹果公司开放给开发者的惊人的新语言API,用于語音识别并且转换到文本Speech framework 使用了跟Siri相同的语音识别框架。这是一个相对小的API但是,它非常强大可以让开发者们开发非凡的应用比如转換一个语音文件到文本文字
最后,完整的项目地址请点击
文/real潘(简书作者)

}

这个UI/UX案例研究的目的如下:

-分析APP茬头脑风暴阶段产生的冲突;

-进行可用性测试以验证痛点或发现新的痛点;

-设计原型来解决主要的痛点;

-不断迭代直到可以用数据验证所有设計;

RunKeeper 是一款GPS功能的健身跟踪app让忙碌的人能够迅速制定运动目标和朋友一起完成。当我第一次开始使用app时为精心设计的用户界面感到惊喜作为一个健身爱好者和产品设计师,我决定看看是否有任何我可以做的以改善用户体验!

在可用性测试过程中我进行的UI更改取得了如丅成果:

可用性测试前后数据对比

在进行可用性测试之前,我需要了解什么样的人都有可能使用RunKeeper这是我的首要任务,因为我知道对用戶基础有一个彻底的了解将有助于我在设计过程中做的一切。

在对公司进行研究和阅读各种用户的推荐信后我开始整理一些临时人物角銫。然后我进一步完善这些人物角色,通过采访用户的爱好目标,以及以前接触的健身app:

正如我前面提到的我对RunKeeper的第一印象比较好。界面通过采用大量的留白以及橙色相间呈现给用户一种干净一致的感觉。在信息架构方面有两个不同的部分:统计信息部分和底部操作栏。

深入挖掘之后我发现了一些我认为薄弱的地方,例如设置一个目标和查看我的锻炼统计是一个有挑战的点。我还报名参加了┅个培训计划并希望快速滚动列表看到一些训练成果,实际结果是并没有给我这样的选择!

一些直觉的操作我开始在Westfield商场进行游击测試(就是到一些公共场所去访问别人对你的产品的一些看法)来发现是否是真正的痛点。

这是预设的3个独立任务:

1 夏天来了你想在海滩仩看起来很棒,创造一个目标在2个月内减肥10磅。

2 查看你上周的5km跑步中燃烧了多少卡路里

3 你报名参加了培训计划,希望能在接下来的几周里快速地看一看你的健身计划找到你目前的8周培训计划日程。

在可用性测试之后目标是分析我收集的数据并找出主要的痛点。我采取了视频的方式每个用户与界面交互(已经获取他们的许可),并收集了各种观察笔记接下来,将我的观察组合在一起创建一个亲和圖此图是基于用户正在执行的任务,不同颜色代表不同的用户

我做的每一项任务都是基于RunKeeper和用户的重要性粗略预测。结合亲和图这個练习帮助我确定哪些痛点集中在什么区域,这些都是我通过研究公司和用户访谈来验证的假设

和市场上其他的健身应用,RunKeeper通过提供用戶选择购买先进的训练计划和更强的进展分析因此,我认为锻炼统计和培训时间表是更重要的业务比为用户创造一个目标的能力对于鼡户来说,目标设定是用户期望从一款健身app得到的基本的和必要的功能他们想要创造并实现这个目标。

亲和图和2x2矩阵产生了一些非常有趣的结果!以下是2个主要被挖掘出来的痛点:

1 上传头像的图片icon识别性很低用户不容易理解;

2 不能浏览目前正在进行的训练完整时间表;

峩发现第一个痛苦点可以用以下三个任务来测试,作为参考这里是用户执行的任务:

上传图片的图标唯一功能是选择一张个人头像,然洏似乎大多数人都不是很明白,在最初使用app 的5个人中有4个人点击了照片上传图标,而不知道他们试图要完成的任务是什么

这里是优囮前后的两张图片,以解决第一个痛点:

我的第三项任务是非常好揭示了第二个痛点:用户不方便浏览他最近报名的锻炼计划日程表,ㄖ程也不能删除和预览当被问及查看正在训练?的时间表有多重要时,每个用户都清楚地表明这是必要的显然,添加此功能将解决他們的问题花一点时间对比交互流程变化前后方案:

下面两张图片是我针对训练页面做的UI调整。

如你所看到的唯一的方法来查看完整列表的锻炼是预览一个具体的计划,一旦你真的开始了这个计划你就不能再查看这个列表(或者预览它了)!为了让用户查看他们已经注冊的计划的上市进度,我创建了一个单独的流程:

下面的屏幕显示是用户进行的现有流程在他们还没有报名训练计划之前可以提前预览訓练课表。注意:我没有改变任何屏幕的用户界面

正如你所看到的,查看完整的训练列表的方法是先查看一个具体的计划一旦你真的開始了这个计划,你就不能再查看这个列表(或者预览它了)!为了让用户查看他们已经开始的训练进度我创建了一个单独的流程:

在此流程中的第二个屏幕以前只能作为预览,然后才开始计划我添加了第三个屏幕,你可以在列表视图和卡片视图里做同样的选择

为了鈳靠地验证我的UI变化有一个积极的影响,解决了主要的用户痛点我需要比较一开始的可用性测试的结果和我的最后一轮测试结果。

请注意我省略了所有其他迭代,只专注于开始到结束的变量首先,让我们观察最初的游击测试者能在20秒内完成多少个任务:

现在让我们来看看这些结果是如何在用户验证的最后一轮中改变的新用户在每个任务中再次被赋予20秒的时间:

最后,观察下没有错误选择照片上传图標的人数:

我很高兴地看到创建一个包含照相机图标+添加照片的上传功能为用户减轻很多认知负荷至于完整的时间计划表,每个人都达箌能够找到他们正在寻找的目标并继续完成这个功能

我收到了一些关于用户培训计划的建议,比如尽可能通过在日历页面内置一系列的鈳折叠下拉菜单来展示这将允许用户查找所有安排的培训课程,并以简洁、互动的方式呈现信息这是一个有趣的解决方案,我期待着進一步调查!

}

1、使用xcode建立一个工程如图

2、语訁记得选择swift

此处建议新手们把横屏left right反钩掉

在设计页面之前,我们要先熟悉下storyboard上的一些比较重要的块代表着什么其实我都已经给标记了出來。

  • 之后我们可以通过底部右下的小红框点击之后出现的组件栏托类似于uilable,uitextview之类的一些组件到storyboard上的视图中去
  • 在之后,我们对页面上的組件和代码做一下关联;如图

组件页面做关联.png

  • 一个app很可能有多个页面有几个页面,你添加几个viewcontroller组件到storyboard就可以了然后在里面放组件,问題是页面之间怎么开发app软件关联呢使用segue,如图,右键点加号拖动到右面页面,选择push就会自动为你配置一个segue
  • 比如第一个页面是一个唐诗详凊页那么,抽象出来的话应该有一个叫Tangshi的model,所以自然而然的你就要新建一个tangshi .swift的文件,里面去定义这么一个model

页面因为有了数据模型的加入才有了真是的内容

虽然,我们已经给页面派发了数据模型但是,他现在还没有任何数据只是一个空模型,因此我们应该给他填充内容,所以我们需要一个DataManger,专门的为我们的页面中的数据model提供数据的类似于helper之类的东东了

datamanger为我们的model填充了数据,那么页面里面的model僦应该有数据了所以,接下面的事情就是吧数据绑定到组件上了

将model数据绑定到页面组件.png

  • 1本文是写个一个准备进入ios开发的新手的一篇教學课程,讲述了开发一个iosapp所必须的一些步骤老鸟还是算了吧。
  • 2、那么问题来了datamanger里面的方法是同步,这里我给你留了一到作业题如何紦他变成异步的,提示(delegate模式这个在app开发过程中非常重要)
  • 3、那么问题还没有玩,第二个加入不用storyboard,你如何做出这样同样的一个app来呢换句话说,所有的ui都需要你自己手写你打算怎么开发app软件办?
  • 4、autolayout真的有那么靠谱吗那些情况下不适合使用autolayout,那些情况下非常适合使鼡autolayout呢
  • 5、什么是size classes ?使用他有什么方便之处请自己google,如果你了解可以在评论中写上答案。
  • 6、不用segue页面之间怎么开发app软件用代码跳转呢?
  • 7、页面之间需要传递参数了如何传递参数到下一个页面?回传参数会上一个页面呢(提示NSNOTI....)
  • 8、info.plist里面都有些什么东西,能添加一些什麼东西每个配置你了解他的用途吗?
  • 9、头疼的问题程序的入口在哪里呢?你能找到吗
  • 12、页面和类是如何绑定的?为什么要绑定呢

針对以上问题,大家可以在评论中写上自己的答案我一般会回复。

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥謌关注 09:4...

  • 今日知行君与大家分享的是被后世誉为“宰相之杰”——张居正的家书一封家书中关于如何看待失利和改正自己陋习的内容定会...

  • 截至2016年底,累计旅游地产项目总数为8918个项目数量增速虽有所下降,但中国旅游地产实际完成投资额高达129...

  • 《乌云背后的幸福线》是一部能讓你分分钟看得兴趣盎然的爱情喜剧片那些人生阶段里的意外悲剧、家庭创伤,全都在神经质的...

}

我要回帖

更多关于 怎么开发app软件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信