我正在为Android和iPhone构建应用程序.此应用需要接收用户收件箱中新邮件的通知.作为app dev中的总菜鸟,我想知道你们中的任何人是否可以建议在这里实现我需要的最佳方式.
我在Android上阅读的内容比iPhone更多,所以我对后者的理解可能不足.基于我已经阅读和理解的内容,我相信当我的应用程序第一次启动时,我需要启动服务(或者每次设备启动时指示设备启动服务).然后,此服务将与服务器连接以接收通知并显示它们.单击通知将启动该应用程序.
我的选择是
C2DM或APNS
城市飞艇
我自己的服务器主要使用与客户端的空闲TCP连接.
根据我选择的选项,我的客户端实现以及服务器端实现都会发生变化.
你们会推荐什么?有没有其他方法可以做我需要做的事情?
任何帮助是极大的赞赏.
更新:
建立在jbat100上的答案.Apple不允许我编写自己的服务器直接与我的应用程序通信以进行通知这一事实意味着必须使用APNS.所以选项3完全没有了.这意味着我们留下了Urban Airship或直接与APNS和C2DM接口.根据我的研究,这两种情况所涉及的努力是可比较的,因此仅仅支持4-5K/mo额外支持通知是没有意义的.因此,我计划实施选项1.如果您有任何其他想法,请在下面留言.
谢谢.
iphone android push-notification apple-push-notifications ios
我有一个带有以下路线的Flask应用程序:
@app.route('/')
def index():
console = logging.StreamHandler()
log = logging.getLogger("asdasd")
log.addHandler(console)
log.setLevel(logging.DEBUG)
log.error("Something")
print >> sys.stderr, "Another thing"
return 'ok'
Run Code Online (Sandbox Code Playgroud)
我用这个来运行
python gunicorn --access-logfile /mnt/log/test.log --error-logfile /mnt/log/test.log --bind 0.0.0.0:8080 --workers 2 --worker-class gevent --log-level debug server:app
Run Code Online (Sandbox Code Playgroud)
日志如下:
2014-06-26 00:13:55 [21621] [INFO] Using worker: gevent
2014-06-26 00:13:55 [21626] [INFO] Booting worker with pid: 21626
2014-06-26 00:13:55 [21627] [INFO] Booting worker with pid: 21627
2014-06-26 00:14:05 [21626] [DEBUG] GET /
10.224.67.41 - - [26/Jun/2014:00:14:14 +0000] "GET / HTTP/1.1" 200 525 "-" "python-requests/2.2.1 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下代码连接到无法访问的服务器:
println!("Connecting");
TcpStream::connect(s).unwrap();
println!("Connected");
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,它卡在第二行。
输出:
Connecting
Run Code Online (Sandbox Code Playgroud) 那就是问题所在.有没有其他语言的项目试图模仿无栈python正在为python做什么?