张帅桐
摘要:随着信息时代的发展,信息量越来越大,单凭人类自身已经无法满足信息存储与信息传播的社会要求。近年来,手机的功能日益强大,携带方便且普及的规模也远超电脑,足以在通知和记事方面为人提供极大的便利。故而本人基于iOS系统和Swift语言设计并开发了一款名为“艾特便签”的手机APP。该文将从开发者的角度来介绍“艾特便签”。
关键词:iOS;Swift;通知;记事;手机软件
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)04-0068-02
1 研發简介
生活中,一件事物往往需要记忆提醒,可能会涉及开始时间和结束时间,可能会涉及多人共同完成,可能会涉及信息共享,事物繁琐,通知麻烦,协同成本高。
本款软件是一个轻量级的记事与通知应用的结合体,用于解决上述问题。通过在聊天正文中输入“@”标记来呼出手机系统通讯录,然后选择联系人进行通讯。“@”通讯录中自己的号码,即是给自己发备忘录通信;“@”通讯录中别人的号码,就是向他人发送通知。
因为核心功能是通过在聊天文本中打“@”调用,从而软件得名“艾特便签”。
2 配置开发环境
本款软件基于iOS系统进行开发,需要在Mac OS X电脑上安装Xcode 7.3.1。使用Swift 2.2进行编程,测试环境为iOS 9系统的iPhone 5s模拟器。
在iOS 9 系统中,苹果官方推出了Contacts框架可以方便地调用系统通讯录的功能,艾特便签涉及访问通讯录数据库中联系人的姓名和电话号码,以及调用官方提供的选择联系人的UI界面。
iOS APP开发拥有很多优秀的第三方开源库,程序大牛们把一系列可重用的功能函数或控件封装成库向外界开放。利用好第三方库可以高效低成本的完成一款软件,好似站在了巨人的肩膀上做开发。
艾特便签使用了两个第三方开源库,需要从https://cocoapods.org/获取第三方开源库RAMAnimatedTabBarController(带动画的标签控制器)和XWSwiftRefresh(下拉刷新控件)的Pod命令。然后在Xcode的工程中创建Podfile文件,文件里写的是开发平台及版本和第三方开源库名称和库版本。最后通过Mac电脑上自带RubyGems可以便捷安装CocoaPods。安装CocoaPods后,打开Mac上的终端进入项目工程所在根目录,执行pod install指令。
艾特便签还涉及了字体和图片资源的使用,它们都需要拖入到Xcode工程中与代码文件一起打包成为一个APP。
3 系统设计
艾特便签是一款用于通知和记事的软件,类似短信和备忘录,因此设计原则应是直观、简洁、大方。
3.1 业务逻辑设计
3.3 主要功能设计
艾特便签主要涉及的功能为注册、登录、查看已收通知、创建通知发送、查看已发通知。
3.3.1 注册
以一个NavigationBar和一个StaticTableView来构建页面,根据TableViewCell中的TextField来获取手机号、用户名和密码。查询数据库中是否有该手机号,若无则向数据库中插入一条记录。使用UIAlertController在页面上反馈给用户操作信息。
3.3.2 登录
以Stack View包装Image View以及Text Field来布局,使用Button来触发时间。登录时,查询数据库是否有该手机号且密码是否正确,正确则跳转至已收信息界面,错误则使用UIAlertController在页面上反馈错误信息。
3.3.3 查看已收通知
使用导入的第三方开源库,页面外层是RAMAnimatedTabBarController,内层是Navigation和DynamicTableView,把tableView.headerView设为XWRefreshNormalHeader,并根据需求自定义一个downPullLoadData函数。再把tableView.footerView设为XWRefreshAutoNormalFooter,同样根据需求自定义一个upPullLoadData函数。
设置tableView的DataSource协议中cellForRowAtIndexPath方法为数据库中登录手机号所对应的通知记录;设置tableView的Delegate协议中didSelectRowAtIndexPath方法为弹出该Cell代表的通知详情界面,把对应的通知记录详细显示。
3.3.4 创建通知发送
页面主体为一个用于设置时间的TextField和一个用于输入通知信息的TextView。
设置TextField的Delegate协议中textFieldDidBeginEditing方法为跳转到一个有系统自带的时间控件UIDatePicker的界面,利用闭包将UIDatePicker上用户选定的时间回调传给TextField。
本页面中的TextView是实现艾特便签的核心。需要设置TextView的Delegate协议中shouldChangeTextInRange方法和textViewDidChange方法。shouldChangeTextInRange用于获取文本输入时的光标位置,此处为了避免因键盘联想输入导致的定位错误需要判断textView.markedTextRange == nil。textViewDidChange则用于判断当前光标位置前一个字符是不是“@”,如果是呼出iOS 9 系统自带的联系人选择界面CNContactPickerViewController(),再设置CNContactPickerDelegate协议中didSelectContacts方法获取用户选择的通知接收者。最后把通知接收者的姓名放到刚刚定位到的“@”后面,实现后的效果类似于图3-5中文本信息,达到通知信息与人名的混排对应,对于实现有分工意图的通知有很好的效果,可一次通知多个人。在通知文本中也可只“@”自己,那么这条通知记录只对应当前用户,从而实现备忘的效果。
点击发送后将这条通知生成为一条记录,将这个记录进行编号。用通知编号与每个接收的用户对应,再根据通知接收者的数量生成等量的通知编号与用户编号对应的记录,一方面便于每个登录的用户查找自己所需接收的通知,另一方面因为是编号对应所以不会浪费过多的存储空间。
3.3.5 查看已发通知
已发通知与已收通知的界面十分类似,同样利用一个DynamicTableView来展示数据库中当前用户所发的通知记录。已发通知页面拥有向右滑动表格删除通知的功能,需要设置TableView的DataSource协议中canEditRowAtIndexPath方法的返回值为true,另外还需设置commitEditingStyle方法为删除数据库所对应的通知记录。
点击TableViewCell展现通知内容需要由TableView的Delegate协议中didSelectRowAtIndexPath方法来实现。在已发通知详情的界面的NavigationBar上设置一个Button为重新发送的功能,点击后读取Label上的通知时间和TextView中的通知内容,将其重载到新建通知界面,重新发送通知,此功能旨在让用户方便地修改有差错的通知。
4 结束语
随着移动技术不断地向前发展,科技产品将为人类的生活带来无限的便利。艾特便签使用新发布的Swift语言进行开发,相比之前的Objective-C语言更加简洁易读,合理利用了官方以及第三方开源框架,开发的效率高。
艾特便签迎合了移动互联网时代,将通知与备忘功能整 (下转第71页)
(上接第69页)
合,为人们在信息的存储及转发方面提供了便利。虽然论文已经接近尾声,但对于艾特便签却只是个新的起点,艾特便签好似新生的婴儿,初具规模但还有很大的发展空间。未来艾特便签还会结合更多优秀技术不断的优化升级,争取为人类提供更多的便利。
参考文献:
[1] 傅佳晨.盐巴——基于 iOS系统的考研软件设计与实现[J].电脑知识与技术,2016(29):83-86.
[2] 宁占彬,丁洋涛,朱惠娣,等.复电工单管理系统IOS版客户端设计[J].电脑编程技巧与维护,2016(15):5-7.
[3] 季鹏磊,黄斐.校园移动电子商务模式探讨[J].福建电脑,2014(10):82,89-90.
[4] 龍晓颖.基于iOS的移动应用UI架构库的设计与实现[D].北京:北京邮电大学,2015.