Android/iOS手机朝向获取

对于iOS手机:

苹果公司给出了一个枚举,如下:

2、对于获取手机屏幕
(1)

(2)

3、对于当前手机是不是横屏或者竖屏的判断
(1)判断是否是竖屏

(2)判断是否是横屏

对于Android手机:

判断手机方向的具体判断代码如下:

对于 Flutter:

使用 native_device_orientation 插件完成相同的检测功能。

参考链接


Flutter找不到Android模拟器解决

Flutter配置好后,在Android Studio中找不到设备

完成Flutter的Android配置之后,连上设备,运行flutter doctor,发现已经识别了一个可用设备了

但是用Android Studio新建Flutter项目之后,却一直显示未找到设备。

最后在Stack Overflow上找到了解决方案:

https://stackoverflow.com/questions/49222658/device-list-doesnt-shows-in-android-studio-using-flutter

就是要配置一下flutter关联的Android sdk路径和Android Studio文件夹,我的设置完sdk路径就可以正常找到device了,问题解决~。

粗体部分替换成自己的Android sdk路径:

粗体部分替换成自己的android studio文件夹路径(我的不用配置这个就成功了):

注意,上面的操作在重启之后无效,如果希望重启之后也生效,则编辑 ~/.flutter_settings ,增加如下配置即可:

参考链接


LocalAuthentication开发实践

在iPhone 5s加入Touch ID后,指纹识别的功能在App中逐渐受到青睐,特别是对于本地安全较高的应用(如带支付的App)指纹识别是必备的功能,它既能解决在验证过程中输入密码的繁琐过程,同时指纹识的安全等级更高。那么,要想在自己开发的应用中使用指纹识别,就必须要LocalAuthentication.framework提供的API,下面将详细地介绍如何使用这个框架来实现指纹识别功能。

基础用法

我们先来看下面的例子:

继续阅读LocalAuthentication开发实践

移动端系统生物认证技术详解

相信大家对于生物认证应该不会陌生,使用指纹登陆或者 FaceId 支付等的需求场景如今已经很普遍,所以基本上只要涉及移动端开发,不管是 Android 、iOS 或者是 RN 、Flutter 都多多少少会接触到这一业务场景。

当然,不同之处可能在于大家对于平台能力或者接口能力的熟悉程度,所以本篇主要介绍 Android 和 iOS 上使用系统的生物认证需要注意什么,具体流程是什么,给需要或者即将需要的大家出一份汇总的资料

继续阅读移动端系统生物认证技术详解

Windows Subsystem for Linux Update错误0x80070643的真正解决方法

最近 Windows 10 21H2 在系统更新的时候,报错:

如下图:

继续阅读Windows Subsystem for Linux Update错误0x80070643的真正解决方法

决策表

  • 概念

因果图、决策表是一种充分考虑系统之间的输入组合、约束以及输出因果关系的用例设计方法。

  • 适用范围

适合:决策表特别适合于针对不同逻辑条件的组合,测试对象需要执行不同操作的场景。

不适合:

  1. 输入和输出不明确,或输入与输出的因果关系不明确的情况
  2. 被分析的特点和功能点过于复杂,输入项目很多的情况下。输入项过多,会造成决策表非常庞大,没有工具辅助的情况下,难以操作。
  3. 系统输入之间相互约束少,不需要做大范围的组合测试时,不宜用本工程方法,不然会产生大量用例冗余。
  4. 系统输入之间存在顺序先后的可变性。
    例如,两个输入之间可以交换顺序,且交换顺序后,他们的输出是不一样的。
    判定表的输入是无法排序的。
  • 决策表的组成

条件桩: 列出系统的所有输入,通常认为列出的输入次序无关紧要

动作桩: 列出系统所有可能执行的操作,这些执行操作没有顺序约束

条件项: 列出输入项的各种取值

动作项: 列出输入项的各种取值情况下应该采取的动作

  • 决策表的步骤
  1. 列出所有的条件桩和动作桩
  2. 确定规则的数目
  3. 填入条件项和动作项得到初始的决策表
  4. 简化相似的规则,得到优化的决策表
  5. 每列规则,设计一个测试用例

【示例

  需求:

公司有如下规定:

  • 中国去欧美的航线所有座位都有食物供应。每个座位都可以播放电影
  • 中国去非欧美的国外航线都有食物供应,只有商务仓可以播放电影
  • 中国国内的航班的商务仓有食物供应,但是不可以播放电影
  • 中国国内的航班的经济仓除非飞行时间大于2小时就有食物供应,但是不可以播放电影

1. 列出所有的条件桩和动作桩

等价类:

    A1={航线为国外欧美航线}

    A2={航线为国外非欧美航线}

    A3={航线为国内航线}

    P1={舱位为经济舱}

    P2={舱位为商务舱}

    T1={飞行时间大于2小时}

    T2={飞行时间不大于2小时}

条件桩

    C1:航线为{A1,A2,A3}之一

    C2:舱位为{P1,P2}之一

    C3:飞行时间为{T1,T2}之一

动作桩

    A1:食物供应

    A2:电影播放

2. 确定规则的数目

3x2x2=12

3. 填入条件项和动作项得到初始的决策表

  规则 1 2 3 4 5 6 7 8 9 10 11 12
条件桩 C1航线 A1 A1 A1 A1 A2 A2 A2 A2 A3 A3 A3 A3
C2类型 P1 P1 P2 P2 P1 P1 P2 P2 P1 P1 P2 P2
C3时间 T1 T2 T1 T2 T1 T2 T1 T2 T1 T2 T1 T2
动作桩 A1食物  
A2电影            

4. 简化相似的规则,得到优化的决策表

  1 2 3 4 5
条件桩 C1航线 A1 A2 A2 A3 A3
C2类型 - P1 P2 P1 P2
C3时间 - - - T1 -
动作桩 A1食物
A2电影      

5. 每列规则,设计一个测试用例

用例编号 输入 预期输出
1 中国-欧美航线/所有座位/全时 提供食物/播放电影
2 非中国-欧美国外航线/经济舱/全时 提供食物
3 非中国-欧美国外航线/商务舱/全时 提供食物/播放电影
4 国内航线/经济舱/大于2小时 提供食物
5 国内航线/商务舱/全时  

参考链接


决策表

iOS - keychain详解及变化

keychain介绍

iOS keychain 是一个相对独立的空间,保存到keychain钥匙串中的信息不会因为卸载/重装app而丢失。相对于NSUserDefaults、plist文件保存等一般方式,keychain保存更为安全。所以我们会用keyChain保存一些私密信息,比如密码、证书、设备唯一码(把获取到用户设备的唯一ID 存到keychain 里面这样卸载或重装之后还可以获取到id,保证了一个设备一个ID)等等。keychain是用SQLite进行存储的。用苹果的话来说是一个专业的数据库,加密我们保存的数据,可以通过metadata(attributes)进行高效的搜索。keychain适合保存一些比较小的数据量的数据,如果要保存大的数据,可以考虑文件的形式存储在磁盘上,在keychain里面保存解密这个文件的密钥。

继续阅读iOS - keychain详解及变化

三阶贝塞尔曲线cubicTo

flutter中绘制基础引言

Flutter 中实现绘制的主要是CustomPainter类

然后放在父控件的child里用 CustomPaint 包裹使用

三阶贝塞尔曲线

在 flutter 通过 Canvas 来结合 Path 来实现绘制 三阶贝塞尔曲线,三阶贝塞尔曲线就是说两个点之间的线 有两个控制点。

例如我们要绘制上述的椭圆,其中 A、B、C 就是我们的目标点,我们绘制的路径就是 从A到B再到C,然后控制点如下

  • a1 、 b1 点是 A B 的控制点
  • b2 、c2 点是 B C 的控制点

那么我们要绘制出如上图中的效果,代码如下

在 flutter 中,通过 path 的 cubicTo 函数来实现三阶贝塞尔曲线

void cubicTo(double x1, double y1, double x2, double y2, double x3, double y3) 点(x1,y1)、(x2,y2) 为控制点 (x3,y3) 为目标点

参考链接


flutter绘图基础之三阶贝塞尔曲线cubicTo