APP推广合作
联系“鸟哥笔记小乔”
360 iOS程序员首次爆料:开发iPhone防骚扰的3年不归路
2014-12-15 14:39:08
我是一名普通的iOS程序员,入职360以后一直在手机卫士部门从事开发工作,最近我们上线了AppStore版防骚扰电话的功能,引起了网友的议论,也勾起了自己对这三年来iPhone软件开发工作的一些感想,既然这篇文章题目叫不归路,请允许我倒一倒自己的苦水。

老婆当初觉得我是一名iOS开发很高大上,那逼格啊,莫名比Android开发高几个level,但咱偏偏是做iOS开发中最奇葩的安全那一块的开发,心中的苦逼只有战友和同行知道。

随着360卫士新版推出骚扰号码识别功能,广大iPhone用户又重拾了往日对骚扰电话拦截的心愿,虽然现在的实现方案只是“向通讯录中添加骚扰号码库,能识别来电骚扰号码、不能拦截来电”这样一种无奈的方案,但是,对受限制较多的iOS系统的而言,安全类app的一点点功能提升,就意味着花费在这个功能上大量的失败尝试。

试错不是互联网公司的专利,但是互联网公司不试错,就不能生存。当初刚进入360其实我也不懂上面这句话的意思,第一次听team里的产品老大这么讲,我心里还想:试个毛啊,验证一下而已,非得整这么洋气的词?后来的经历告诉我,试错真不像看上去验证一段代码那么轻松…

2012年初,我刚进入团队3个月,运营的同学反映每个月都能收到数千的用户强烈要求增加来电归属地显示、骚扰电话和垃圾短信拦截,然后技术leader就把我们拉到经常讨论到通宵,例举数十种技术方案,也翻墙研究过很多国外iOS大神的分析,结论仍然是除了企业版用私有接口可以实现别无他法,那就先做企业版吧,经过一个多月的封闭开发,手机卫士企业版正式推出了上面两个功能,识别方法轻松有效:拦截来电/短信,把主叫号码传到云端与骚扰号码库进行比对,最后把结果返回App端,App端予以展现。

图:2012年初用户反馈情况

iPhone用户可以拦截骚扰电话和短信了,这解决了一小部分企业用户的需求,也算圆了一个工程师小小的梦想。这段时间是我印象里少有的能够让人兴奋起来的时光,因为作为一名程序员,可以使用自己认为最好的代码完美的实现想要的功能,没有什么比这个更有成就感了。事实也证明,企业用户对这个功能的喜爱完全符合我们预期,这给了我们很大的鼓舞,但我很清楚,走到这一步,不是码农指间的神作,而是如履薄冰的探险。

按照苹果的企业版证书开发许可协议,利用这样的接口开发的应用是不允许提供给普通用户使用的,但是当时面对普通用户汹涌的而来的需求,我们确实没有更完美的解决方案(其实直到现在也是),我们在企业用户的反馈和建议中验证着每一个细节,并穿插测试向普通用户开放这个功能的可行性。结果,一不留神,还真就踩到地雷上了…

2013年1月25日,卫士被正式下架AppStore,并且连累到公司的所有iOS端产品。

说真的,那天早上被产品总监的电话叫醒,整个人都懵了,不是做梦吧?

我的iOS程序猿生涯TM刚开始1年就进入了完全不可预期的状态。

接下来的时间里,我转战越狱版、WindowsPhone版,甚至差一点去做服务端工程师,总之就是随波逐流,但是在心底里始终有种欠债的感觉,而且下架初期用户的不理解、竞争对手的抹黑与我们什么也做不了只能每天憧憬重新上架却一次次失望的情绪像噩梦一样挥之不去,最重要的是,作为直接参与这一“越轨”功能的实现并面对下架结果的我,和我们PM一样仅剩下的一点盼头,也就是祈祷自己的产品不会被用户遗忘,那一段时间真实的感觉到了产品就像自己的孩子一样。

这一等就是一年,我难得可以不用通宵,难得9点以前回家,难得有了更多时间陪陪老婆,在这如梦如幻、魂不守舍的一年,我还真的成了一个孩子的爸。

当屌丝成大叔,当大叔已成爹。2014年初,苹果对360的开发者账号解封,主产品手机卫士的市场份额流失惨重,说真的,听到重新组织团队恢复AppStore版开发的消息时,我第一反应不是高兴,而是困惑,我们能做什么?

一边是iPhone用户呼声不断的拦截骚扰的需求,一边是苹果对我们更加严格的审核(据说专门安排了两组审核人员)和无法跨越的红线。当然,困惑归困惑,产品该上还是要上的,不过是阉割了诸多功能之后的版本,包括拦截骚扰来电、来电归属地显示、清理加速,呵呵,都砍掉了。

我们能做的除了适配iOS7扁平化,就是优化代码、美化界面和增加其它无关痛痒的功能,结果上线后用户骂声一片,我们既觉得委屈又觉得无奈,好想在更新日志说这个版本是美工开发的。

这种状况一直持续到今年7、8月份,苹果iOS8透露出一些新的接口,包括通知中心、输入法等扩展功能,作为一款安全软件,通知中心接口的作用最大,于是我们在经历了两次被拒的小插曲后赶在苹果正式推送iOS8下载的第二天,国内首家推出了完美适配iOS8和Arm64架构并支持通知中心插件的版本更新,但是这仍然没有解决用户反馈最多需求最强烈的骚扰电话拦截问题,直到一个偶然的机会…说起来,这个机会也跟公司的一条原则有关系,也是老周的3个凡是的一条——“凡是用户提的问题,一定要追根述源,找到问题的原因,从用户的角度想解决的方案。”无论用户向我们建议、抱怨、还是怒目相向,团队里所有人都必须积极倾听,理解用户背后的需求,从而改善产品。

正因为此,我们在一次内部吐槽会议上,幸运的借一个360论坛用户对来电归属地显示的建议联想到了一个办法:利用iPhone系统一个联系人可以附带若干电话号码的机制,我们可以在用户手机中新建一个联系人,名称为空,然后在下面带上我们从云端拉取的1、2000个骚扰号码,并给这些号码的标签都命名为“骚扰号码”,这样在用户接到这些号码的来电时,因为没有姓名,iPhone系统就会显示其标签名称“骚扰号码”,就等于是提醒了用户!然后就开始研究吧,貌似简单的功能,细节一大堆,尤其是要测试的工作很多:

1、把骚扰类型分别放在名字上、放在标签上、放在其它字段,写入通讯录,看通讯录中的显示、来电时的显示、外拨时的显示;

2、每个联系人添加不同的号码数量,对比测试:通讯录启动响应速度、正常来电响应速度、骚扰号码来电响应速度、正常外拨响应速度、外拨骚扰号码显示速度、双击home显示速度、最近联系人打开和关闭时响应速度;

3、号码和标签的对应关系、编码方式,对比测试上面的各种响应速度;

4、在不同的iPhone机型、iOS版本上测试,确定每款机型的最优配置;

5、上面这些都搞定后,似乎不错了,打开手机上的常用软件,怎么推荐了这么多陌生手机号码?尤其是一款可以推荐朋友的朋友的社交产品,对比一下:A产品只推荐朋友也就是你通讯录中的人给你,那你发现推荐了一堆乱七八糟的人之后首先会想到把骚扰号码库删除掉,这样直接就可以解决问题,B产品是推荐朋友的朋友,你发现问题后删除骚扰号码库根本没用!因为你通讯录好友中只要有一个人他的通讯录中有骚扰号码库,那骚扰号码就依然会成为你“朋友的朋友”,如果这个骚扰号码库是上万个号码,结果简直不敢想!于是我们寻找解决办法:在手机号码中尝试增加各种无效的字符、国家码的排列组合,在保证号码能够在来电时被苹果系统识别出来的前提下测试能不能避开社交软件的好友推荐,不能避免的,将我们的骚扰号码联系人特征发给产品的开发者或公司,请对方做规避处理,只有这样,才能避免给用户造成困惑;

6、对通讯录备份软件及相关的开发者也要重新走一遍第5条的流程;

7、删除这个特殊联系人后,通讯录中会多出很多标签,永远保存在用户手机中,iOS通讯录不能批量清理掉这些标签,让用户一个个手工删除又太繁琐,能不能通过代码批量删除?能不能通过iTunes同步通讯录删除?能不能通过iCloud同步通讯录删除?能不能通过恢复手机设置删除?能不能通过恢复手机所有内容和设置删除?能不能通过iTunes备份和恢复删除?每一个方法都要试!

8、还有识别率问题,骚扰号码库的大小(通讯录中这个特殊联系人的号码数量),和骚扰识别率之间的权衡,如何才能在通讯录不受影响的情况下,尽可能提高识别率?这里真得感谢卫士Android版的广大用户这几年来标记产生的庞大的骚扰号码库(比某狗的多出两个数量级好吗!),量级够大,才能做到按照用户号码归属地分别下发Top1000的数据就能保证不错的识别率,后来看到有人说这是2014年最佳大数据实践案例,其实和我们team一点关系没有,都是人家安卓用户的贡献;

9、最后还有个终极问题,这次除了骚扰识别的主要实现机制必须严格遵守苹果的开发者协议外,任何解决卡慢、社交产品兼容等副作用的方法都必须要确保不逾越这条红线!(这一点,与广大iOS开发者共勉)

分析工作做完,经过近两周如履薄冰又绞尽脑汁的紧张加班,新版产品终于在11月23日再次以试错的心态提交苹果审核,结果,两天后我们看到另一个大体思路相同的竞品正式上线了!而且因为作法比较粗暴导致用户手机卡的一逼、骂声一片,我和团队里的产品普遍都开始担心,难道这次又要翻船?要不要低调点放量?甚至取消上架?继续上吧,一来不理解的用户会说你抄袭,二来用户对于这种实现方法不知道能不能接受,不上吧,我们处心积虑考虑的那么多因素、做的那么多测试眼睁睁无用武之地。最后,产品总监还是一句话拍板:刀山火海都过来了,不试个结果死不瞑目!

结果是:这一次,我们可能试对了!至少到目前为止,用户对我们这次骚扰识别功能的反馈是正面的,虽然有一些说我们抄袭的声音,但也很快被淹没在大家的好评中。作为一名程序员,我想这就够了。

当然,我们也没闲着,接下里随着服务端数据算法的改进,和我们对苹果iOS系统的了解深入,我们将尝试解决骚扰号码库打开速度和识别率之间的矛盾,譬如先把号码库从1000个提高到2500个,提高骚扰号码识别率的同时提高用户打开这个特殊联系人的速度,通过试错一步步把这个功能达到我们认可、用户也认可的理想状态!

之前听过一个说法:程序员天生就是理想主义者,代码要写的很整洁、执行效率要很高、容错要很好、适应性要很强,想想和自己的编程习惯还真是蛮符合的,但是自己这几年在360的开发经历却让我完全体会不到这种理想主义带来的任何好处,反而是处处碰壁,直到现在才终于明白:人世间没有一次满足所有用户需求的程序,只有一步步试错、越来越贴近用户需求的程序!

过去3年,头发白了一茬,在为解决iPhone骚扰电话的问题从未止步,我,一个小小码农,已习惯了红线内戴着脚镣舞蹈。

用老婆的话来说,这3年,我还是有收获的,收获了一个娃。

自从当爹以后,心态也好了很多,每一天都苦逼并努力着,抬头看看帝都雾霾散去的晴空,期待着iOS未来的开放。

本文作者:闫占龙 ,手机卫士 程序猿

运营那些事儿
分享到朋友圈
收藏
收藏
评分

综合评分:

我的评分
Xinstall 15天会员特权
Xinstall是专业的数据分析服务商,帮企业追踪渠道安装来源、裂变拉新统计、广告流量指导等,广泛应用于广告效果统计、APP地推与CPS/CPA归属统计等方面。
20羽毛
立即兑换
一书一课30天会员体验卡
领30天VIP会员,110+门职场大课,250+本精读好书免费学!助你提升职场力!
20羽毛
立即兑换
顺丰同城急送全国通用20元优惠券
顺丰同城急送是顺丰推出的平均1小时送全城的即时快送服务,专业安全,准时送达!
30羽毛
立即兑换
运营那些事儿
运营那些事儿
发表文章43455
确认要消耗 羽毛购买
360 iOS程序员首次爆料:开发iPhone防骚扰的3年不归路吗?
考虑一下
很遗憾,羽毛不足
我知道了

我们致力于提供一个高质量内容的交流平台。为落实国家互联网信息办公室“依法管网、依法办网、依法上网”的要求,为完善跟帖评论自律管理,为了保护用户创造的内容、维护开放、真实、专业的平台氛围,我们团队将依据本公约中的条款对注册用户和发布在本平台的内容进行管理。平台鼓励用户创作、发布优质内容,同时也将采取必要措施管理违法、侵权或有其他不良影响的网络信息。


一、根据《网络信息内容生态治理规定》《中华人民共和国未成年人保护法》等法律法规,对以下违法、不良信息或存在危害的行为进行处理。
1. 违反法律法规的信息,主要表现为:
    1)反对宪法所确定的基本原则;
    2)危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一,损害国家荣誉和利益;
    3)侮辱、滥用英烈形象,歪曲、丑化、亵渎、否定英雄烈士事迹和精神,以侮辱、诽谤或者其他方式侵害英雄烈士的姓名、肖像、名誉、荣誉;
    4)宣扬恐怖主义、极端主义或者煽动实施恐怖活动、极端主义活动;
    5)煽动民族仇恨、民族歧视,破坏民族团结;
    6)破坏国家宗教政策,宣扬邪教和封建迷信;
    7)散布谣言,扰乱社会秩序,破坏社会稳定;
    8)宣扬淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪;
    9)煽动非法集会、结社、游行、示威、聚众扰乱社会秩序;
    10)侮辱或者诽谤他人,侵害他人名誉、隐私和其他合法权益;
    11)通过网络以文字、图片、音视频等形式,对未成年人实施侮辱、诽谤、威胁或者恶意损害未成年人形象进行网络欺凌的;
    12)危害未成年人身心健康的;
    13)含有法律、行政法规禁止的其他内容;


2. 不友善:不尊重用户及其所贡献内容的信息或行为。主要表现为:
    1)轻蔑:贬低、轻视他人及其劳动成果;
    2)诽谤:捏造、散布虚假事实,损害他人名誉;
    3)嘲讽:以比喻、夸张、侮辱性的手法对他人或其行为进行揭露或描述,以此来激怒他人;
    4)挑衅:以不友好的方式激怒他人,意图使对方对自己的言论作出回应,蓄意制造事端;
    5)羞辱:贬低他人的能力、行为、生理或身份特征,让对方难堪;
    6)谩骂:以不文明的语言对他人进行负面评价;
    7)歧视:煽动人群歧视、地域歧视等,针对他人的民族、种族、宗教、性取向、性别、年龄、地域、生理特征等身份或者归类的攻击;
    8)威胁:许诺以不良的后果来迫使他人服从自己的意志;


3. 发布垃圾广告信息:以推广曝光为目的,发布影响用户体验、扰乱本网站秩序的内容,或进行相关行为。主要表现为:
    1)多次发布包含售卖产品、提供服务、宣传推广内容的垃圾广告。包括但不限于以下几种形式:
    2)单个帐号多次发布包含垃圾广告的内容;
    3)多个广告帐号互相配合发布、传播包含垃圾广告的内容;
    4)多次发布包含欺骗性外链的内容,如未注明的淘宝客链接、跳转网站等,诱骗用户点击链接
    5)发布大量包含推广链接、产品、品牌等内容获取搜索引擎中的不正当曝光;
    6)购买或出售帐号之间虚假地互动,发布干扰网站秩序的推广内容及相关交易。
    7)发布包含欺骗性的恶意营销内容,如通过伪造经历、冒充他人等方式进行恶意营销;
    8)使用特殊符号、图片等方式规避垃圾广告内容审核的广告内容。


4. 色情低俗信息,主要表现为:
    1)包含自己或他人性经验的细节描述或露骨的感受描述;
    2)涉及色情段子、两性笑话的低俗内容;
    3)配图、头图中包含庸俗或挑逗性图片的内容;
    4)带有性暗示、性挑逗等易使人产生性联想;
    5)展现血腥、惊悚、残忍等致人身心不适;
    6)炒作绯闻、丑闻、劣迹等;
    7)宣扬低俗、庸俗、媚俗内容。


5. 不实信息,主要表现为:
    1)可能存在事实性错误或者造谣等内容;
    2)存在事实夸大、伪造虚假经历等误导他人的内容;
    3)伪造身份、冒充他人,通过头像、用户名等个人信息暗示自己具有特定身份,或与特定机构或个人存在关联。


6. 传播封建迷信,主要表现为:
    1)找人算命、测字、占卜、解梦、化解厄运、使用迷信方式治病;
    2)求推荐算命看相大师;
    3)针对具体风水等问题进行求助或咨询;
    4)问自己或他人的八字、六爻、星盘、手相、面相、五行缺失,包括通过占卜方法问婚姻、前程、运势,东西宠物丢了能不能找回、取名改名等;


7. 文章标题党,主要表现为:
    1)以各种夸张、猎奇、不合常理的表现手法等行为来诱导用户;
    2)内容与标题之间存在严重不实或者原意扭曲;
    3)使用夸张标题,内容与标题严重不符的。


8.「饭圈」乱象行为,主要表现为:
    1)诱导未成年人应援集资、高额消费、投票打榜
    2)粉丝互撕谩骂、拉踩引战、造谣攻击、人肉搜索、侵犯隐私
    3)鼓动「饭圈」粉丝攀比炫富、奢靡享乐等行为
    4)以号召粉丝、雇用网络水军、「养号」形式刷量控评等行为
    5)通过「蹭热点」、制造话题等形式干扰舆论,影响传播秩序


9. 其他危害行为或内容,主要表现为:
    1)可能引发未成年人模仿不安全行为和违反社会公德行为、诱导未成年人不良嗜好影响未成年人身心健康的;
    2)不当评述自然灾害、重大事故等灾难的;
    3)美化、粉饰侵略战争行为的;
    4)法律、行政法规禁止,或可能对网络生态造成不良影响的其他内容。


二、违规处罚
本网站通过主动发现和接受用户举报两种方式收集违规行为信息。所有有意的降低内容质量、伤害平台氛围及欺凌未成年人或危害未成年人身心健康的行为都是不能容忍的。
当一个用户发布违规内容时,本网站将依据相关用户违规情节严重程度,对帐号进行禁言 1 天、7 天、15 天直至永久禁言或封停账号的处罚。当涉及欺凌未成年人、危害未成年人身心健康、通过作弊手段注册、使用帐号,或者滥用多个帐号发布违规内容时,本网站将加重处罚。


三、申诉
随着平台管理经验的不断丰富,本网站出于维护本网站氛围和秩序的目的,将不断完善本公约。
如果本网站用户对本网站基于本公约规定做出的处理有异议,可以通过「建议反馈」功能向本网站进行反馈。
(规则的最终解释权归属本网站所有)

我知道了
恭喜你~答对了
+5羽毛
下一次认真读哦
成功推荐给其他人
+ 10羽毛
评论成功且进入审核!审核通过后,您将获得10羽毛的奖励。分享本文章给好友阅读最高再得15羽毛~
(羽毛可至 "羽毛精选" 兑换礼品)
好友微信扫一扫
复制链接