讲一个可能有推卸责任嫌疑的事情:其实我在数据库里设计了一张短消息记录表,只要开发人员把短消息插进来,后台的自动程序就会不断的去推消息,就算不推也一定能在APP的短消息列表中看到。但问题是写接口的程序猿根本TM的没顾及到这一点,以为发个短信就行了,可他就不想想短信是第三方发的,如果第三方出了问题,那锅是谁的?我们能跟用户解释说第三方出了问题吗?
由此引发出原则一:绝不要相信第三方,除非是阿里、腾讯。
我们之前对接过途牛的接口,遇到不懂的问题去问途牛时,对方的技术人员有气无力的甩过来一句话:看文档。我们以为自己是没有把文档读懂,就跑去把代码和文档都对了一遍,结果发现文档里面的字段跟DEMO都不一致……跟对方反映过后,对方给了个网址让我们测试,那是他们自动生成的一段提交数据,这个功能不错。
然而等到我们在测试环境下测完,正式上线的时候又报出了签名异常,再把完全一样的数据放到测试环境中就正常。再去找技术人员问情况,技术人员表示测试接口中没有验证签名,所以不管你传入的签名是什么都不会报错……我勒个去的,好歹途牛也是全国OTA行业前几的公司,怎么写个测试接口还这么傻叉……
我之所以加了个“除非是阿里、腾讯”,是因为我对接过阿里与腾讯的接口,文档、测试接口写的非常完善,我基本上不用跟他们的技术人员对接就能写好接口。当然国内也许还有其他写接口写得非常完善的公司,但是像途牛这么大的公司都写成这样子,我实在对国内的互联网公司没多少信心了,宁可错杀一千不可使一个漏网。
这个短信也是如此,按我的想法应该先把短信保存在本地数据库,状态设为未发送,等发送成功以后把状态改为已发送,隔一段时间后如果还没有发送成功就再发送一次——最多发两次,这样就算发送不成功我们也有记录可查。但是我跑去查了一遍数据库,居然发现所有记录都存在第三方那里,我们本地连追踪信息都追踪不到,这TM就坑爹了,真想宰了某些人。