2018离线版-批量导入用户
自App Inventor 2018离线版发布之后,经常有老师询问离线版用户批量导入的问题,这也是教学过程中一个迫切需要解决的问题,这里做了一个例子,来说明这一功能的实现过程。
一、准备工作
首先需要准备一个文本文件,其中包含需要导入的用户名及密码,文件格式如下图所示,每个用户占一行,用户名与密码之间以空格间隔,注意文件的最后一行不回车。
这里强烈建议使用Sublime Text来编辑保存文件,微软的记事本会在文件头插入一个不可见字符,会影响程序的执行结果。
将编辑好的文件复制到手机SD卡的AppInventor文件夹下,本例中的文本文件命名为loginUsers.txt。
二、接口调用说明
批量导入用户功能由张路老师专门为2018离线版开发,主要针对有教学需求的老师们,接口地址为“服务器的访问地址(含段口号)/login/api/”,用GET方法访问该接口,接口参数见下表。
本案例中采用一个临时的服务器,地址为:
http://edu1.17coding.net
该地址不会长期保留,建议读者在自己搭建的服务器上测试及操作。
三、用户界面
创建一个项目,名为“批量导入”,用户界面如下图所示。
从上图的组件列表中,根据组件的命名可以得知组件的功能,三个文本输入框,分别用用来输入文件名、服务器地址以及API的访问密钥。为了操作方便,本案例在设计视图中为三个文本输入框设置了默认值,分别是:loginUsers.txt、edu1.17coding.net以及take_it_easy。用户界面的测试结果如下图所示。
四、编写程序
1、全局变量
如下图所示,左边的三个全局变量当作常量来用,右边的三个变量用于记录导入的总用户数、成功导入的用户数以及导入用户的名单。
2、屏幕初始化
如下图所示,在屏幕初始化时设置Screen1的应用说明属性,并提示用户在设备菜单中查看导入须知。
3、加载文件
如下图所示,当加载文件按钮被点击时,利用文件管理器组件读取手机中的文本文件,文件名来自于文件名输入框。注意:下图中的代码只为说明API的调用方法,并未检验文本输入框是否为空,在正式开发应用时,必须检验用户的输入。
4、获取并显示注册用户信息
如下图所示,在文件管理器的收到文本事件中,将文件内容解析为列表,并在列表显示框中显示出来,以便在正式导入数据之前,查看数据是否正确。
5、创建过程——API网址
如下图所示,创建一个有返回值得过程——API网址,拼写API的访问指令字串。字串的拼接方式要符合接口的GET访问方式,即,用“?”分隔网址与参数,用“&”分隔不同的参数。
6、导入用户信息
如下图所示,当导入按钮被点击时,设置Web客户端组件的网址属性,并向API发送GET请求。注意代码中使用了循环语句,对用户列表中的每个用户逐一执行注册操作,因此,如果需要导入n个用户,那么将执行n次GET请求。
7、接收API的反馈
如下图所示,每一次GET请求都将返回一个结果,并触发Web客户端组件的收到文本事件,在事件处理程序中,首先统计导入操作的次数,然后再统计导入成功的次数,并将统计结果显示在标签中。
上述代码的测试结果如下图所示。
五、补充说明
在上述测试结果中,读者会发现API访问密钥为“take_it_easy”,而不是默认的“changeme”,那么如何修改这个密钥的值呢?
这要修改离线包中的一个设置文件,如下图所示,在WEB-INF文件夹中找到appengine-web.xml文件,并打开文件。
如下图所示,在文件的末尾处找到这三行代码,其中的第二行代码用来设置API的访问密钥,为了防止不相关的用户使用批量导入功能,必须修改这项设置的默认值。
上面创建的app实现了2018离线版的批量注册用户功能,希望能够为开设App Inventor课程的老师们提供一点帮助。
最后,祝老师们教师节快乐!