【附源码例】快捷指令实现调出iOS隐藏应用程序-原理解析

前言

本人近日在b站发布了一个视频,展示了使用快捷指令开启部分iOS系统内隐藏应用程序的操作。传送门
之所以想到使用快捷指令来打开隐藏应用,是因为一个偶然的发现:从iPhone X之后的机型中,在拨号界面输入 *3001#12345#* 不再启动原有的场测程序(FieldTest.app),而是FTMInternal-4;但在旧设备同版本的操作系统中则是启动FieldTest。
通过拨号键盘启动FTMInternal
在这篇文章中,我会向你介绍快捷指令的历史,以及上述操作的实现思路。

希望能给各位iOS高玩提供一些帮助。


快捷指令的前身-Workflow工作流

Workflow采用了类似图形编程的设计方法,允许用户组合不同的操作,例如网络请求、图片修改、逻辑运算等,实现一定程度的自动化。

2015年,Workflow被评选为“App Store最佳应用”,并在2017年被Apple收购,成为如今iOS上备受欢迎的“快捷指令(Shortcuts)”应用。

2018年,随着iOS12的发布,SiriKit与WorkflowKit两个模块同时被内置在系统的私有模块(PrivateFrameworks)中,快捷指令成为了系统应用程序。

快捷指令如何工作

快捷指令将用户写入的一系列动作(Action)保存为属性表文件(*.wflow*.shortcut),并在用户需要执行时依次读取属性表中的操作。

将用户的操作记录为工作流的优点在于,用户不需要知道如何使用编程语言就可以直接实现简单的编程操作。

例如,通过快捷指令来自动查找最近的咖啡厅以及行动路线

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
B样条曲线是一种广泛应用于计算机图形学中的数学曲线模型。它的原理是通过一系列控制点来定义曲线的形状,使用参数化的方法来计算曲线上的点的坐标。 B样条曲线的定义包括两个部分:节点序列和控制点。节点序列是在参数空间上均匀分布的一系列参数值,它们定义了曲线上的插值节点。控制点是用来确定曲线形状的点,它们的位置和数量会直接影响曲线的形状。 B样条曲线的生成过程包括两个主要步骤:节点生成和曲线计算。节点生成的原则是通过一定的算法来根据控制点的数量和位置,生成合适的节点序列。常见的节点生成算法有均匀节点生成和插值节点生成。 在节点生成完成后,可以使用插值或逼近方法来计算曲线上的点的坐标。C语言提供了许多数学计算库函数,可以用来计算相应的B样条曲线。 上一个使用C语言实现B样条曲线的演示程序的源码,程序使用了OpenGL库函数来绘制曲线。 ```c #include <stdio.h> #include <GL/glut.h> GLfloat ctrlPoints[4][3] = { {-4.0, -4.0, 0.0}, {-2.0, 4.0, 0.0}, {2.0, -4.0, 0.0}, {4.0, 4.0, 0.0} }; void display(void) { int i; glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 0.0, 0.0); glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, &ctrlPoints[0][0]); glEnable(GL_MAP1_VERTEX_3); glBegin(GL_LINE_STRIP); for (i = 0; i <= 30; i++) { glEvalCoord1f((GLfloat)i/30.0); } glEnd(); glPointSize(5.0); glColor3f(0.0, 0.0, 1.0); glBegin(GL_POINTS); for (i = 0; i < 4; i++) { glVertex3fv(&ctrlPoints[i][0]); } glEnd(); glFlush(); } void init(void) { glClearColor(1.0, 1.0, 1.0, 1.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-5.0, 5.0, -5.0, 5.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(400, 400); glutInitWindowPosition(100, 100); glutCreateWindow("B-spline Curve"); init(); glutDisplayFunc(display); glutMainLoop(); return 0; } ``` 这个演示程序定义了一个四个控制点的B样条曲线,并使用OpenGL库函数将曲线绘制出来。控制点的坐标被存储在二维数组`ctrlPoints`中。在`display`函数中,首先使用`glMap1f`函数定义了一个B样条曲线,并启用了对应的OpenGL功能。然后使用`glEvalCoord1f`函数计算曲线上的点的坐标,并绘制出来。最后使用`glBegin`和`glEnd`函数分别定义了绘制曲线和控制点的绘制过程。 在程序的`init`函数中进行了一些初始化工作,如设置背景颜色和投影矩阵等。在`main`函数中进行了一些初始化操作并启动了程序的主事件循环。 通过运行这个演示程序,可以看到一个B样条曲线的绘制结果,以及控制点的位置。可以通过修改`ctrlPoints`数组中的值来改变曲线的形状。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值