前情

米家智能场景在iOS上搭配快捷指令中的自动化非常好用,可以大大的方便生活,但是貌似在iOS15上,关闭米家指令的运行时显示后,快捷指令并没有正常的调用米家的智能场景。 现象是:毫无反应!

我之前的解决办法是:用go逆向了米家的接口,跑在路由器上,这样快捷指令可以通过调用http post控制米家设备,但是最近发现了一个更简单的方法~

先说结论:

关闭米家的运行时显示,然后在后面加“等待1秒” 可以解决

mihome

手把手教学:

  1. 在米家中新建需要的智能场景并添加到siri
  2. 快捷指令中新建“自动化”,并注意关闭自动化中的“运行前询问
  3. 编辑自动化的快捷指令,选择米家app,添加需要的指令
  4. 在上面的米家指令中,关闭选项“运行时显示”,并在其后添加“等待1秒

推理过程:

升级 iOS15后,米家的自动化运行就出了问题,体现为无法自动执行米家智能场景。

一直以为是iOS15对权限的限制增强了,所以就没从指令的角度上寻找解决方案,而是特别费劲(对我来说)的逆向了一下米家api完成自动控制需求,刚刚看到有人说:“在米家指令后添加文本朗读可以解决”,感觉非常神奇,难道这真的是 iOS15引入的 bug?

不过还是思考到了原因,大概猜测是在iOS15下,如果某条指令(暂时叫他M)关闭了“运行时显示”,那么运行时会同时执行M和M之后的指令。且在M之后的指令结束时,无论M指令是否运行完毕都得停止运行(相当于ios15 把这样的指令改成 daemon线程)就导致有些情况下整个快捷指令结束的太快,从而提前结束了米家的控制过程,导致控制失效

按照这个逻辑,在米家指令后添加朗读,就可以使指令整体运行时间增加,也就是米家的自动指令有了足够的时间运行结束。

但是这样有点傻,手机在旁边充着电突然在哪自言自语一句着实吓人。

根据我们上面的分析,我们在其后添加别的耗时长的指令也可以有相似的效果,比如:等待1秒