Nix 的自我修养


  • Home

  • Tags

  • Archives

Siri Shortcuts 指北

Posted on 2018-11-12 | | Visitors:

从 SiriKit 到 Siri Shortcuts

Apple 在 WWDC 2016 上推出了 SiriKit,使得开发者可以开发 app extension 让用户可以利用 Siri 完成特定的几种任务。这里有两个基本概念:

  • Domain:任务的类型,比如消息、VoIP、支付、运动、打车、搜索照片等
  • Intent:使用 Siri 完成的具体任务,比如发红包、发消息

Siri 会完成自然语言处理,理解用户的意图,并决定什么时机来调用我们的 app extension,我们只需要告诉 Siri 是否可以处理这个 intent 并完成就可以了。Apple 为各个 domain 的 intents 提供了协议作为模板供开发者实现,以发送信息为例:

当用户想用 Siri 发送消息时,系统会创建一个 INSendMessageIntent,里面包含消息接受者、消息内容等信息,然后调用 app extension 的 handler,handler 解析这些上下文,确认可以处理并发送完消息后返回 INSendMessageIntentResponse 类型的结果。

在 WWDC 2018 上,Apple 推出了 Siri Shortcuts 进一步拓展了 Siri 的使用场景。Siri Shortcuts 能让用户通过一句自定义的短语让 Siri 完成自己经常进行的动作,比如查看今天的天气,叫一份外卖。与 SiriKit 最主要的不同点有两个:

  • 只针对具体的动作,不需要用户提供信息。可以理解成类和实例的关系。我们用 SiriKit 来打车,每次的出发地和目的地都不一样;而 Siri Shortcuts 只完成打车回家这个具体的动作,永远是从当前位置到家里,用户也就不需要再告诉 Siri 出发地和目的地。
  • 可以用 Siri Shortcuts 完成的动作不限于 SiriKit 的几个 domain。Siri Shortcuts 可以理解成为特定动作设置的一个快捷方式,因为 Siri Shortcuts 不涉及语义分析,也就不用对实现的动作做限制。
Read more »

iOS UI Testing 指北

Posted on 2018-09-30 | | Visitors:

iOS 业界有很多 UI 自动化测试框架,美团有一篇文章中对主流框架进行了对比,各大框架实现的思路有两种:基于苹果的 UI Testing(UI Automation)或者使用私有 API。这里只介绍苹果自家的 UI Testing,它是苹果自 Xcode 7 引入的 UI 自动化测试框架,有几个优势:

  • Xcode 自带,不需要搭建环境
  • 支持 OC、Swift,学习成本低
  • 支持 WebView 测试
  • 稳定性好

利用 UI Testing 可以对 app 的 UI 进行黑盒测试。目前还只能做比较简单的测试工作,基本原理是利用 iOS 的 Accessibility(原本是为帮助残障人士提供的框架)来查找 UI 上的元素并模拟点按、滚动等事件,配合对 UI 元素状态的校验来检查测试结果。

Read more »

iOS FPS 监控

Posted on 2018-08-03 | | Visitors:

背景

iOS 系统及其应用以丝般顺滑闻名,界面的顺滑程度对于用户体验至关重要,因此需要针对性地对流程度进行优化。在优化之前必须要找到问题所在,那么就需要解决这两个问题:卡顿的原因是什么?哪里出现了卡顿?

Read more »

小决定 app 是怎样诞生的

Posted on 2018-05-28 | | Visitors:

起因

一开始是因为我想找一个帮助做决定的 app。我的想法是可以帮我系统列出待选择事物的优缺点,并且对各个优缺点设置权重最终算出一个分数来作比较。机缘巧合之下,被我搜到一个用转盘随机做决定的 app。具体是哪一个 app 我已然不记得了,只记得当时觉得这个 app 做得实在太烂了,让老夫做一个完爆它。让我决定做这个 app 的另一个很重要的原因是:功能足够简单,不用耗费太多时间。

Read more »

Universal Link on iOS

Posted on 2018-04-13 | | Visitors:

什么是 Universal Link

URL Scheme

众所周知,从 web 到 app 之间的跳转可以使用 URL Scheme 的方式实现,但是这种方式存在一定问题:

  • 无法得知跳转结果:如果 app 没有安装导致跳转失败,web 端不能知道跳转是否成功。这样就无法满足「如果安装了 app 就跳转到 app,否则跳转到安装页面」这样的需求。也有人通过打开 URL Scheme 链接后延迟 1 秒打开下载页的方式,但用户跳转到 app 后再切到浏览器还是会跳到下载页,不够优雅。

  • 系统弹框体验差:在 iOS 9 之后苹果在跳转时会弹出一个提示框问用户是否要打开 app。

  • Web 容器的封锁:许多 app 为了不给其他 app 导流量,禁用了 URL Scheme 的跳转。悲剧的是 Universal Link 也被微信封锁了,想必是一种趋势。

Read more »

CloudKit 上手

Posted on 2018-04-09 | | Visitors:

Baas

对于独立客户端开发者来说,维护一个服务器成本相当高:你需要学习服务端技能、租用服务器、考虑扩展问题、还得花精力去维护,还有一个微不足道的原因是租服务器要花钱。

幸亏 IT 巨头们已经帮我们解决了这个问题,把后端能力打包成一个服务,让开发者不需要操心服务器相关的任何事情,只需要直接调用 API,这就是传说中的 BaaS(Backend as a Service)。

Read more »

TensorFlow 学习笔记(四)—— 特征组合与特征化

Posted on 2018-03-17 | | Visitors:

特征组合

在实际应用中,某些问题并不是线性问题,比如下面这张图:

非线性问题

我们无法用一条线来分开所有的蓝点和橙点。这个时候我们需要采用特征组合的方法。

特征组合是指通过将两个或多个输入特征相乘来对特征空间中的非线性规律进行编码的合成特征。

Read more »

TensorFlow 学习笔记(三)—— 表示法

Posted on 2018-03-14 | | Visitors:

通过前面的学习,我们知道了机器学习的大致过程,现在要解决的问题是:如何得到训练样本?

假如数据库中有一堆数据,把这些数据转化成训练模型需要的特征的过程被称作表示法(representation)。

Read more »

TensorFlow 学习笔记(二)—— 初步使用

Posted on 2018-03-12 | | Visitors:

TensorFlow 简介

TensorFlow™ 是一个使用数据流图进行数值计算的开源软件库。图中的节点代表数学运算, 而图中的边则代表在这些节点之间传递的多维数组(张量)。这种灵活的架构可让您使用一个 API 将计算工作部署到桌面设备、服务器或者移动设备中的一个或多个 CPU 或 GPU。 TensorFlow 最初是由 Google 机器智能研究部门的 Google Brain 团队中的研究人员和工程师开发的,用于进行机器学习和深度神经网络研究, 但它是一个非常基础的系统,因此也可以应用于众多其他领域。

Read more »

TensorFlow 学习笔记(一)—— 术语

Posted on 2018-03-07 | | Visitors:

本文是谷歌机器学习速成课程的学习笔记。

简介

机器学习是人工智能的一个分支。机器学习是实现人工智能的一个途径,即以机器学习为手段解决人工智能中的问题。

机器学习有下面优势:

  • 可以增加编程效率。比如可以快速开发拼写纠正程序,而不是通过研究语法来实现逻辑。
  • 可以制作更通用的工具。如果已经使用机器学习编写了针对一种语言的拼写纠正程序,那么只要通过提供相应的数据就可以快速实现针对另一种语言的拼写纠正程序。
  • 解决无法用常规的逻辑解决的问题。如果没有机器学习,你很难教机器如何识别一个苹果。

除了上述优势之外,学习机器学习还可以改变我们的思考方式:我们可以跳出原有的使用逻辑来实现功能的思维方式,利用机器学习去实现一些以前根本无法想象的功能。

Read more »
12…6
Nix Wang

Nix Wang

60 posts
28 tags
© 2018 Nix Wang
Powered by Hexo
|
Theme — NexT.Pisces v6.0.3