APP功能模块实现之思路历程(基于iOS端)

写在前面:

  不知道各位童鞋是否有过和我相似的经历:某天突然想到一个APP的功能模块,但是苦于自己的技术水平,一时想不出具体的实现方式呢?如果有的话,那本文就是适合你的菜啦~
  接下来,笔者将由实现一个具体功能模块的思路历程出发,逐步展示这个概念是如何成型落地的
  笔者希望本文能对读者有所启发,同时由于笔者技术水平有限,文中难免有所纰漏、错误,还请各位多多包涵。

具体功能模块描述:

  1. 导入Excel文件,并根据Excel表格的姓名列手机号列建立接收人群组。
  2. 选择可编辑的模板并用当前手机发送短信。如:{name}同学你好,欢迎报名百步梯技术部,一面面试地点将在......其中{name}标签将在发送短信时被Excel表中的真实姓名替换,从而使得短信更加亲切。最终,每一条短信将被发送至姓名所对应的手机号上。

正文:

  锵锵锵!功能明确好了,就让我们开始想法子去实现它吧~首先我们心中要有这么一个概念:

一般的idea从产生到失败流程

  芥川龙之介就曾写过:“必要的思想或许早在三千年前就已穷尽,我们现在只是给旧柴添把新火罢了”。Amazing!这在我们代码界中也是一样的,我想要做的功能,往往已经有人做过了,我不知道只是因为我搜索资料还不够多不够全,这对个人信息检索能力的要求还蛮高的。
  因此,在不要求100%创新性的前提下,已经被别人实现过反而是一件大好事情,我们不妨找到这些实现的demo、投入使用的APP来观摩观摩,作为参考,降低自己摸索的成本,也避免去重复造轮子。
  接下来,我将从iOS应用ExcelSMSgithub(全球最大的同性交友网站)站内检索结果出发,进一步明确功能模块的实现。

ExcelSMS(APP):

  以“excel导入”“短信群发”作为关键词Google一下,马上就能找到ExcelSMS。ExcelSMS给出了几个示例excel表格格式,导入方式可以为用该APP打开文件或者WIFI上传,其中一种格式如下所示:

导入的Excel表格形式

  我们可以看出第一行为标签行,之后的每一行都有名字、手机号、短信内容。可以猜到{}标签最终会被相应的内容所替换。

  导入完上述Excel文件后将如下图左一所示,我们可以看到ExcelSMS根据上述excel表格建立了两个收件人信息,每个收件人信息栏里是对应的信息展示:

导入excel后群发短信流程,从左至右依次为图1-4

  我也可以点击每一行收件人,查看相关的信息,并进行编辑,如左二所示。当我最终确认好信息后,可以对短信做一个发送前的预览,这时候,就可以看到将要发送的短信内容啦~如左三
  最后,我点击发送的飞机图标,ExcelSMS就自动打开了系统的iMessage应用,填充好了第一个收件人和短信内容,我只需确认后点击发送;发送完后,会再次跳回ExcelSMS,读取下一个收件人和短信内容,又跳到iMessage,依此类推。也就是说有N条短信,就需要我点击N次发送的绿色箭头,并且忍受约为2N次的跳转。
  我知道读者和我会有同样的想法:有点不太合理啊......但是,人家开发者应该也想得到,兴许是苹果爸爸对于系统应用iMessage接口的调用就只给了这么点权限吧……本文后续会对此进一步分析。

ExcelSMS的启示:
  1. 它实现了我所构思的功能,最起码可以印证我想法的技术可行性。另一方面,我可以借鉴它的事件流并看出所需的技术:Excel文件导入后保存在APP本地(APP间文件导入及本地存储),打开excel表后做一个tableView展示(excel表读取[可能需要借助开源库],UITableViewController的使用),在发送前可以提供一个预览(对字符串进行处理,用内容将{}标签进行替换,是逻辑部分),最后调用系统应用iMessage发送短信(需要查看iMessage的相关API及文章)。
  2.倘若ExcelSMS是开源APP,在github上可以找到相关代码那就再好不过啦~~然而,ExcelSMS是收费的呢,正式版还要68元软妹币,当然是闭源的啦。

Github站内搜索:

  ExcelSMS是闭源的没错,但是谁知道会不会有什么仿ExcelSMS代码、或者别人写的相应demo呢。梦想还是要有的。
  于是我将“excel 短信(sms或message)”、“仿ExcelSMS”作为关键词进行了github站内检索,结果有很多,但是iOS端的没有。JAVA语言Android实现倒是找到了一个:JAVA/Msgs。它实现了excel表读取、信息展示、调用系统短信应用发送短信,这几个功能,如果我是安卓开发的话……工作量应该就大大减小了……所以,转行安卓开发吧

继续Google和百度

  找不到的能直接参考的代码的话,就只能按照上述拆解的ExcelSMS实现技术,一个模块一个模块去踩坑去Google了。踩坑过程如下:
  1. 经过Google,APP间文件导入方案为UIDocumentInteractionController 。

  iOS中的沙盒可以让平台更加的安全,这也是沙盒给用户带来的最主要好处。不过由于沙盒的严格限制,导致程序之间共享数据比较麻烦。一般在程序间共享文档可以通过UIDocumentInteractionController类实现通讯。它支持在你的app中用其他app预览和显示文档。同时也支持文件关联,允许其他app通过你的程序打开文件。

  2. excel表读取问题,这个问题我用不同的组合Google了多次,最后发现还是如“ios excel parse”的英语搜索有用。最后,找到的实现方案比较多,我个人觉得难以轻易定夺。

方案一:XlsxReaderWriter 1.0.11,本地读取方案。一个objC语言写就的MicroSoft Excel(TM)文件阅读框架,但是最后更新是在2年前。
方案二:平台不同,难易也不同。像PHP、Python其实可以很轻易就读取xls、xlsx、csv等文件,并且整理成json数据格式。所以可以通过http请求方式,将文件上传至服务器,服务器返回json数据到APP。其缺点在于联网和流量损耗。
方案三:有一种说法是excel文件如xlsx、xls本质上是压缩文件,可以利用第三方库SSZipArchive,解压文件后用文本形式打开,找到其中的标签进行截取。感觉有点旁门左道的赶脚……

  3.iMessage的接口调用方案:MessageUI框架。部分调用代码如下所示:

- (void)displaySMSComposerSheet 
{
    MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
picker.messageComposeDelegate = self;
    // You can specify one or more preconfigured recipients.  The user has
    // the option to remove or add recipients from the message composer view
    // controller.
    picker.recipients = @[@"10010",@"10086"];

    // You can specify the initial message text that will appear in the message
    // composer view controller.
    picker.body = @"Hello from California!";
    [self presentViewController:picker animated:YES completion:NULL];//显示系统SMS界面
//    [self presentModalViewController:picker animated:YES];//老套的方法
}

  如果自定义短信,需要使用上述的框架MessageUI。它能返回原app;可以多人群发; 可以自定义消息,消息支持HTML格式的;具体的发送操作还需要用户完成。
  对于发送短息,可定义发送内容和接收方的号码。但有一个问题,都是调用短信发送界面,需要用户点击发送才行。由于苹果对安全性的要求很高,所以暂时无法脱离其原生viewController来发送短信,即无法后台发送短信。
  这就很好的解释了ExcelSMS为什么会是这么一个发送机制......都是苹果爸爸定死的东西……还是安卓开放度高啊

戏说苹果开发者协议

  至此,虽然我并没有写上一行代码,但基本捋清了该功能模块实现过程和最终会呈现出的效果。其实检索的时候关键字的选择蛮重要的,最好保存一些代码网站如:code4app、csdn、github交友网站等。在这些网站进行站内检索往往会有意外之喜哦~

写在最后:

  总结一下,其实我的整个寻找实现思路的过程,其实也就是一个不断信息检索的过程。寻找投入使用的APP(ExcelSMS),找代码(github站内检索、google检索),又或者是把功能拆分成一个个模块逐个查资料,最后查阅官方API文档学习,这些都是一个信息检索并获取的过程。这就很考验我们的信息搜索能力啦~~~
  在这里笔者给一个很tiny的tip,如果你想快速提高自己的搜索能力,最简单的方式就是弃掉百度,使用Google。(手动滑稽
  希望本文对你有所帮助,如果你有什么想与笔者讨论的,欢迎评论区留言哈~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,462评论 25 707
  • 1. 在“有趣、有料、有力、有用”这四有中,“有趣”对我的启发最大。因为平时性格就属于比较活泼开朗“抖机灵”的那种...
    阿萌与世界阅读 175评论 4 3
  • 由于翡翠形成条件的复杂性以及矿物的多样性,有时,一块外表平平无奇的翡翠毛料切开后,里面的玉质极佳,属老坑玻璃种什么...
    啊宏翡翠阅读 609评论 0 0