星云星云完成1100万美元A+轮融资,由华泰创新等领投
06-18
我是一个普通的iOS程序员。
我自从加入公司以来一直在机动卫士部门从事开发工作。
最近我们推出的AppStore版本的防骚扰电话功能引起了网友的讨论,也勾起了我自己对这三年来iPhone软件开发工作的一些思考。
既然这篇文章的标题叫“不归路”,那就请允许我把我的苦水倒出来吧。
起初,我妻子以为我是一个水平很高的iOS开发者。
我真是太有才华了,莫名其妙的比Android开发高了几个级别。
但我正在做 iOS 开发中最安全的部分。
我心里只有正在奋斗的战友。
与同行相识。
随着新版Defender中骚扰号码识别功能的推出,广大iPhone用户又找回了往日拦截骚扰电话的愿望。
虽然目前的实施方案只是“在通讯录中添加骚扰号码库,但可以识别骚扰号码,但无法拦截来电”。
“这样的解决方案很无奈,但对于限制较多的iOS系统来说,安全应用的一点功能改进就意味着在这个功能上花费了大量失败的尝试。
试错不是互联网公司的专属领域,但互联网公司无法生存刚加入团队的时候,我其实不太明白上面这句话的意思,第一次听到团队里的产品老大这么说,心想:就给吧。
一定要用这样的外来词吗?后来的经验告诉我,试错并不像验证一段代码那么容易……年初的时候,我刚刚加入团队3个月,运营的同学反映,每个月都会收到上千名用户强烈要求增加通话地点显示,拦截骚扰电话和垃圾短信,然后技术负责人经常会。
把我们拖了一晚上的讨论,给出了几十种技术方案的例子,还研究了国外很多iOS高手跨防火墙的分析。
结论仍然是,除了企业版,使用 private 接口没有其他方式实现,所以先做企业版吧。
经过一个多月的封闭开发,手机卫士企业版已正式上线上述两项功能。
识别方法简单有效:拦截来电/短信,更改主叫号码并传输至云端与骚扰号码数据库进行比对,最后将结果返回至App并显示在App上。
图:年初用户反馈 iPhone用户可以拦截骚扰电话和短信,解决了少数企业用户的需求,圆了一个工程师的小梦想。
这段时间是我记忆中为数不多的激动人心的时刻之一,因为作为一个程序员,你可以用你认为最好的代码来完美地实现想要的功能。
没有什么比这更让人满足的了。
事实也证明,企业用户对这个功能的喜爱完全符合我们的预期,这给了我们很大的鼓励。
然而,我深知,走到这一步,并不是程序员唾手可得的杰作,而是如履薄冰的冒险。
根据苹果企业版证书开发许可协议,使用此类接口开发的应用程序不允许提供给普通用户。
然而,面对当时普通用户激增的需求,我们并没有更完美的解决方案(实际上直到现在),我们正在根据企业用户的反馈和建议来验证每一个细节,并穿插测试可行性向普通用户开放此功能。
结果不小心踩到了地雷……2019年1月25日,Defender被正式从App Store下架,公司所有iOS产品都受到牵连。
说实话,那天早上我被产品总监的电话吵醒的时候,我整个人都糊涂了。
这不是一个梦吗?作为一名 iOS 程序员,仅仅一年后,我就进入了一种完全不可预测的状态。
接下来的时间里,我又切换到了越狱版、Windows Phone版,甚至差一点就成为了一名服务器工程师。
总之,我只是随波逐流,心里却总感觉欠债了。
而且,在下架初期,用户的不理解、竞争对手的诽谤以及每天盼着它重新上市却一次次失望的感觉像噩梦一样挥之不去。
最重要的是,作为一个像我们PM一样直接参与实现这个“离经叛道”功能并面临其下架后果的人,我只剩下一点希望了,那就是祈祷我的产品不要被淘汰。

被用户遗忘。
那段时间,我真切地感受到这个产品就像我自己的孩子一样。
已经等了一年了。
难得我不用熬夜。
我很少在九点前回家。
我很少有更多的时间陪伴我的妻子。
在这如梦如幻、令人难以忘怀的一年里,我真的变成了一个孩子。
爸爸。
当你成为失败者时,你就成为叔叔,当你成为叔叔时,你就成为父亲。
年初,苹果解封了开发者账户,其主打产品Phone Defender的市场份额遭受重创。
说实话,当我听到团队重组,恢复AppStore版本开发的消息时,我的第一反应不是高兴,而是困惑。
我们能做什么?一方面是iPhone用户不断有拦截骚扰的需求,另一方面苹果对我们的审核更加严格(据说专门安排了两批审核人员),有红线是无法跨越的。
当然,很混乱,产品还需要发布,但它是一个剥离了很多功能的版本,包括拦截骚扰电话、显示来电位置、清理加速等。
哈哈,都被砍掉了。
除了适应iOS7的扁平化设计之外,我们能做的就是优化代码、美化界面以及添加其他无关紧要的功能。
结果上线后,用户互相批评。
我们既委屈又无奈。
我们很想在更新日志中说这个版本是艺术版本。
发展。
这种情况一直持续到今年七、八月份。
苹果iOS8透露了一些新的界面,包括通知中心、输入法等扩展功能。
作为一款安全软件,通知中心界面发挥的作用最大,所以我们经历了两次被拒绝后,在苹果正式推送iOS8下载的第二天,就成为国内第一家推出版本的公司。
更新完美适配iOS8和Arm64架构并支持通知中心插件。
然而,这仍然没有解决用户最普遍的需求。
曾经有过很强的骚扰电话拦截问题,直到一个偶然的机会……说起来,这个机会也与公司的原则之一有关,也是老周的三件事之一——“用户提出的任何问题必须追根溯源,找到问题的原因,从用户的角度寻找解决方案。
“无论用户给我们提出建议、抱怨、生气,团队中的每个人都要积极倾听、理解需求。
在用户背后改进产品。
正因为如此,在一次内部投诉会上,我们有幸借鉴了论坛用户关于显示来电位置的建议,并提出了解决方案:利用iPhone系统的一个联系人可以附加多个电话号码的机制,我们可以在用户的??手机上新建一个联系人,名字为空,然后在下面添加我们从云端拉取的1个骚扰号码,并将这些号码的标签命名为“骚扰号码”,这样当用户接到电话时从这些号码来看,由于没有名字,iPhone系统会显示其标签名称“骚扰号码”,相当于提醒用户!然后开始研究。
看似简单的功能,其实细节很多,尤其是需要测试的工作量很大: 1、将骚扰类型放在姓名上、标签上、其他字段上,写入通讯录中。
查看通讯录中的显示、来电时的显示、去电时的显示; 2.为每个联系人添加不同的号码,并进行对比测试:启动通讯录时的响应速度、正常通话的响应速度、骚扰号码的响应速度、正常外拨电话响应速度、外拨骚扰号码显示速度、双倍点击首页显示速度、最近联系人打开和关闭时的响应速度; 3、数字与标签的对应关系、编码方式以及上述各种响应速度的对比测试; 4、在不同的iPhone机型和iOS版本上进行测试,确定各机型的最佳配置; 5.完成以上之后,看起来就不错了。
当我打开手机上常用的软件时,为什么推荐了这么多陌生的手机号码? ?尤其是一个可以推荐朋友的朋友的社交产品。
对比一下:产品A只推荐朋友,也就是你通讯录里的人。
那么当你发现自己推荐了一堆随机的人时,你首先会想到将骚扰号码添加到数据库中。
删掉它,这样就直接解决问题了。
产品B是朋友的朋友推荐的。
发现问题后删除骚扰号码库是没有用的!因为只要你的通讯录中的某个朋友的通讯录中存在骚扰号码库,那么该骚扰号码仍然会成为你的“朋友的朋友”。
如果骚扰号码库里有上万个号码,后果不堪设想!于是我们寻找解决方案:尝试在手机号码中添加各种无效字符和国家代码组合,测试能否在保证来电时苹果系统能够识别该号码的同时,避免社交软件的好友推荐。
不可避免地将我们的骚扰号码联系特征发送给产品开发商或公司,并要求他们避开。
这样才能避免给用户带来困惑; 6.还要善待通讯录备份软件及相关开发商。
您需要重新进行第5项的流程; 7、删除这个特殊联系人后,通讯录中会多出很多标签,这些标签将永远保存在用户的手机中。
iOS通讯录无法批量清除这些标签,需要用户手动一一删除。
删除太麻烦了。
可以通过代码批量删除吗?我可以通过 iTunes 同步和删除我的通讯录吗??我可以通过 iCloud 同步和删除联系人吗?可以通过恢复手机设置来删除吗?恢复手机可以删除所有内容和设置吗?我可以通过 iTunes 备份和恢复已删除的文件吗?每种方法都尝试一下! 8、还有识别率的问题。
骚扰号码库的大小(通讯录中该特殊联系人的号码数量)与骚扰识别率之间的权衡。
如何在不影响通讯录的情况下,尽可能的提高骚扰识别率?识别率?真心要感谢安卓版Defender的广大用户标记了这几年骚扰号码的庞大数据库(比某只狗还多两个数量级好吗!)。
量级足够大,可以根据用户数量所在位置分别下载。
贴出最上面的数据可以保证很好的识别率。
后来看到有人说这是今年最好的大数据实践案例。
其实这和我们团队没有任何关系。
这都是其他Android用户的贡献; 9、最后还有一个终极问题是,这次除了骚扰识别的主要实现机制必须严格遵守苹果的开发者协议外,任何解决慢卡顿、社交产品兼容性等副作用的方法都必须保证这条红线没有被跨越! (将此分享给广大iOS开发者)分析工作完成后,经过近两周如履薄冰、绞尽脑汁的紧张加班,新版本产品终于提交苹果审核11月23日再次抱着试错的心态。
结果,这两种产品均获得批准。
几天后,我们看到又一款大体思路相同的竞品正式上线!而且,因为做法粗暴,导致用户手机被卡、被骂。
我和我团队中的产品普遍开始担心。
这次又要翻船了吗?你想保持低调并提高音量吗?甚至取消上市?前进。
首先,不懂的用户会指责你抄袭。
其次,用户不知道自己能否接受这种实现方式。
所以不要继续。
我们仔细考虑了那么多因素,做了那么多测试,都是没有用的。
最终,产品总监一句话做出了决定:我们历经了火与剑,不试一试就死而复生!结果:这一次,我们可能做对了!至少到目前为止,用户对我们的骚扰识别功能的反馈是积极的。
虽然也有一些声音说我们抄袭,但很快就被大家的好评淹没了。
作为程序员,我认为这就足够了。
当然,我们也没有闲着。
接下来,随着服务器端数据算法的完善以及我们对苹果iOS系统的深入了解,我们将尝试解决骚扰号码数据库的打开速度与识别率之间的矛盾。
比如,首先将号码库从一个增加到一个,不仅提高了骚扰号码的识别率,还提高了用户打开这个特殊联系人的速度。
通过反复试验,我们可以逐步把这个功能带到我们认可、用户认可的理想状态!我以前听过一句话:程序员天生就是一个理想主义者。
代码必须编写整齐、执行高效、容错、适应性强。
想想还真是符合自己的编程习惯。
然而我这几年的开发经历让我完全无法体会到这种理想主义带来的任何好处。
相反,我处处碰壁。
现在我终于明白:没有任何程序可以一次性满足所有用户的需求。
只有一步。
经过反复试验,程序变得越来越贴近用户需求!这三年来,我的头发已经花白了,我也从未停止过尝试解决iPhone骚扰电话的问题。
作为一个小小程序员,我已经习惯了在红线之内戴着枷锁跳舞。
用我老婆的话说,这三年我有所收获,收获了一个孩子。
自从当了爸爸之后,我的心态好了很多。
我每天都努力工作,努力工作。
抬头望着帝都雾霾消散的晴空,期待着iOS未来的开放。
本文作者:手机卫士程序员艳占龙雷锋网版权所有文章,未经授权禁止转载。
详情请参阅转载说明。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-17
06-17
06-06
06-17
最新文章
Android旗舰之王的过去与未来
智能手表不被开发、AR眼镜被推迟,Meta的产品经历了一波三折
为什么Cybertruck是特斯拉史上最难造的车?
更新鸿蒙3后,文杰允许你在车里做PPT了
新起亚K3试驾体验:追求“性价比”,韩系汽车仍不想放弃
阿维塔15登场!汽车配备了增程动力,理想情况下会迎来新的对手吗?
马斯克宣布创建 ChatGPT 竞争对手! OpenAI的CEO给他泼了冷水, GPT-5可能会发生巨大变化
骁龙无处不在,是平台也是生态