iOS上的输入法,分为主程序,叫containing app,和键盘,叫extension。桌面我们看到的app就是主程序,安装包在安装完成后,会安装好主程序和键盘。这两个在iOS上,是相对独立的两个部分。
iOS为了保证安全性,键盘和所在的应用(host app)之间,通过有限的系统接口进行交互,保证数据安全;而键盘和主程序之间,如果开启了完全访问,才能交换文件和数据,否则也是相互独立的;开启了完全访问,两者就拥有了一个中间的公用文件读写区域,叫做app group;键盘换肤的过程是,主程序将皮肤拷贝到app group,键盘弹出时读取app group中的皮肤,完成换肤。键盘无法直接读取到主程序中的任何数据。这在iOS上叫沙箱机制。
键盘语音输入采用的是另一种文件交换形式,叫socket协议,键盘和设置程序通过socket协议,完成语音状态的交换、语音数据的传输和识别结果的传回;键盘是一个进程,设置程序是另外一个独立的进程,两者之间除了socket协议,没办法直接交换信息;socket协议只能支持少量的数据传输,并且是两个进程同时进行通信,换肤的话,一个是数据量大,另一个原因是键盘和设置程序不需要同时通信,故不能使用。
网友评论