在app的后端设计中,免不了消息的推送,短信,邮件等服务,下面就个人的开发经验谈谈这方面。

(1)最重要的是,各种推送一定要放在队列系统中处理,不然会严重影响api的响应时间。

(2)短信方面

以前我们是用亿美软通的短信服务,但在三大运营商收紧了短信服务后,亿美软通的短信延迟非常厉害,后来我们找到了这家短信服务商 http://luosimao.com,这家发送短信到联通,电信,移动手机很快就到了(直到2014.01.24)。

如果发送到移动的短信还没有改善,最后的后备方案:发送到联通,电信的短信使用国内的服务商,发送到移动的短信就只能使用国外的短信服务商(国外发短信到移动手机3毛一条,好贵啊!!!)

注:现在sharesdk提供了免费的短信验证码服务(http://mob.com/sms),试运营期间为开发者提供每个App每天10000条免费短信验证。

(3)邮件

在一开始时使用服务器自身的postfix发送邮件的,但我们发现邮件被很多邮件服务商当成垃圾邮件了,而且没有重发机制,不能保证邮件的准确到达。

后来查了一下各大网站,发现知乎和github 都是使用http://www.mailgun.com/ 的邮件服务,看了一下文档,价格很公道,而且每月有1万封的免费邮件额度,非常适合创业型的公司。

(4)推送服务

在这方面,我考虑的重点是:在创业初期,能用第三方就尽可能多使用第三方的服务,自身只处理业务逻辑本身,快速的开发产品。

android篇:

android方面,我们使用过3种消息推送机制:

1.极光推送,现在放弃了。我们使用的过程中,发现极光的机制有点古怪,一般来说,一个app在极光服务器中是固定一个id,但在极光中是通过广播来通知app这个id,而且在文档中居然说明这个id会不定期变化。

2.openfire服务器。app通过连接openfire服务器来获取各种消息,但是openfire有个机制,当app连接openfire后空闲就自动断开,没法保持连接的的稳定性,而修改这个openfire的机制成本太高了,后来也放弃使用openfire。

3.百度推送。已现在使用一段时间的情况来说,推送及时快速,挺满意百度的推送服务。

iphone篇:

apns是iphone推送的不二选择。但如果自身开发apns的服务,会遇到无效token而需要重发,这样需要维护一个队列并建立重发机制,考虑到项目的时间和研发成本,最后也是使用了百度推送的服务。

当用户在iphone上卸载了app后,device token会失效,所以应该定期访问苹果的feedback服务器,把无效的token去掉。

app后端系列文章总目录

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

修改记录:

2014.01.24:短信服务提供商现在3大运营商很快就收到了。

2014.12.05:增加了sharesdk的免费短信验证码信息

如果您觉得这系列的文章对你有所帮助,欢迎打赏。

支付宝账号:190678908@qq.com 收款人:曾健生

[文章作者]曾健生

[作者邮箱]h6k65@126.com

[作者QQ]190678908

[新浪微博] @newjueqi

[博客]http://blog.csdn.net/newjueqi

http://blog.sina.com.cn/h6k65

版权声明:本文为博主原创文章,未经博主允许不得转载。

app后端设计(3)--短信,邮件,推送服务(2014.12.05更新)的更多相关文章

  1. (转)短信vs.推送通知vs.电子邮件:app什么时候该用哪种方式来通知用户?

    转:http://www.360doc.com/content/15/0811/00/19476362_490860835.shtml 现在,很多公司都关心的一个问题是:要提高用户互动,到底采取哪一种 ...

  2. app后端设计(11)-- 系统架构(2014.12.05更新)

    个人认为,在小型的创业团队中,特别是以应用产品为主,在架构后台的时候,需要集中精力解决自身业务上的问题,不是花时间解决第三方已经解决的问题,简单点来说,就是能用第三方服务就使用第三方的服务.基于这个原 ...

  3. 解决.NET Core中MailKit无法使用阿里云邮件推送服务的问题

    在博问中(.net core怎么实现邮件发送)知道了MailKit无法使用阿里云邮件推送服务发送邮件的问题,自已实测也遇到同样的问题,而用自己搭建的邮件服务器没这个问题. 于是,向阿里云提交了工单.. ...

  4. Laravel 下结合阿里云邮件推送服务

    最近在学习laravel做项目开发,遇到注册用户推送邮件的问题,之前用java做的时候是自己代码写的,也就是用ECS推送邮件,但是现在转php的laravel了就打算用php的邮件发送功能来推送邮件, ...

  5. wordpress使用阿里云邮件推送服务实现发送邮件

    之前用腾迅云时,配置了wordpress是可以使用邮件服务的,然而到了阿里云,却无法使用了,有人说是因为阿里云关了25端口,但腾迅好像也关了. 百度看看有没有其他方法,最终让我找到个方法,可惜不是很完 ...

  6. python 阿里云短信群发推送

    本篇文章是使用Python的Web框架Django提供发送短信接口供前端调用,Python版本2.7 阿里云入驻.申请短信服务.创建应用和模板等步骤请参考:阿里云短信服务入门 1.下载sdk 阿里云短 ...

  7. java-阿里邮件推送服务开发 -- 发送邮箱验证码

    参考文档: 如何在 DNS 服务器上配置域名:https://help.aliyun.com/knowledge_detail/39397.html?spm=5176.2020520150.102.d ...

  8. app后端设计--总目录 (转)

    特此说明,我转载的!!! app后端设计(1)--api app后端设计(2)--xmpp的使用 app后端设计(3)--短信,邮件,推送服务 app后端设计(4)-- 通讯的安全性 app后端设计( ...

  9. app后端设计--总目录

    做了3年app相关的系统架构,api设计,先后在3个创业公司中工作,经历过手机网页端,android客户端,iphone客户端,现就职于app云后端平台bmob(想了解bmob点击这里).其中的乐与苦 ...

随机推荐

  1. web报表工具FineReport的SQL编辑框的语法简介

    感谢大家捧场,这里继续分享关于SQL编辑框的一些语法心得总结,因为数据集定义的面板,也是FineReport报表中最常用的模块之一. 1.我理解的执行过程. 这里其实是生成一个字符串,FineRepo ...

  2. ibm云时代的转型

    好几个月了,有两个说法很流行. 第一个说法,是老有人嚷嚷思科快被SDN整趴下了:第二个说法,是老有人嚷嚷IBM在云计算时代完全落后了,要倒下了. 刚开始我还跟有些人辩论: 1.裁员是西方企业常用的战略 ...

  3. Android的源代码下载教程-android学习之旅(102)

    一.环境准备 1.安装ubuntu系统,或者虚拟机. 2.安装java的sdk 3.安装依赖包 ,命令是:sudo apt-get install flex bison gperf libsdl-de ...

  4. gcc如何生成预编译头文件(.gch)

    1 建立comm.h 2 main.c中包含comm.h : #include "comm.h" 3 gcc -o comm.h.gch comm.h(低版本gcc会有bug) 4 ...

  5. The 13th tip of DB Query Analyzer, powerful processing EXCEL file

    The 13thtip of DB Query Analyzer, powerful processing EXCEL file MA Genfeng (Guangdong UnitollServic ...

  6. 如何在asp.net mvc 中使用Autofac 控制反转(Ioc)

    前言 最近看了一些关于Ioc方面的开源项目,里面的类跳来转去,看的迷迷糊糊的.项目里根本不需要这么“复杂的”设计,只需简单完成Ico,达到解耦的目的,并且能高效的完成项目.于是参考autofac的官网 ...

  7. permutations(全排列)

    Given a collection of distinct numbers, return all possible permutations. For example,[1,2,3] have t ...

  8. java中内存的使用

    一个java运行起来执行代码,主要的内存消耗有这几块: 1.堆 2.栈 :栈是每个线程一个的,是以消耗的内存是内存大小*线程数,当线程数特多时候需要小心 . 3.直接内存:主要是通道时候的缓存,在内存 ...

  9. linux下单独线程启动

    void linux_start() { signal(2, signal_callback_handler); //signal(9, signal_callback_handler); pid_t ...

  10. 关于非现场审计软件的一些介绍(ACL、IEDA、Teammate)

    http://group.vsharing.com/Article.aspx?aid=661512 IDEA是由caseware开发的数据分析软件.caseware的网址如下:http://www.c ...