我正在实现GCM - 我做的第一件事是调用GCMRegistrar.getRegistrationId来查看设备是否已注册.它不是(返回空字符串),所以我对GCMRegistrar.register进行异步调用.正如所料,我的意图服务(从GCMBaseIntentService派生)获取其调用的onRegistered()方法,以及我的服务器可用于向此设备发送GCM消息的令牌.到现在为止还挺好.
但是,下次运行应用程序时,我希望首先调用GCMRegistrar.getRegistrationId来返回我在intent服务的onRegistered函数中返回的令牌.但我又得到了空字符串.我认为GCM客户端库(gcm.jar)会将GCM注册ID(令牌)保存到私有SharedPreferences对象 - 事实上,GCMRegistrar类的文档(http://developer.android.com/guide/ google/gcm/client -javadoc/com/google/android/gcm/GCMRegistrar.html)声明"注意:此类使用私有SharedPreferences对象来跟踪注册令牌"
我没有取消注册设备,卸载应用程序或更新了versionCode.我缺少什么想法?谢谢
注意 - 此问题已在android-gcm标记下的google组中发布.网址在这里:
https://groups.google.com/forum/#!topic/android-gcm/4FPqZLzlvE4
Mark Murphy(一个Commons Guy)对这个问题的初步诊断非常有帮助,但没有任何具体的问题浮出水面
更新编辑 - 这是我的AndroidManifest.xml的相关部分
<receiver android:name=".push.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.myapp.package.name" />
</intent-filter>
</receiver>
<service android:name=".push.GCMIntentService" />
Run Code Online (Sandbox Code Playgroud) 我有Nginx,Gunicorn和Django都运行在同一个Ubuntu EC2实例上.我有一个相当传统的设置,并希望将所有gunicorn错误记录到特定文件.
我对Gunicorn的配置是:
#!/bin/bash
NAME="server"
GUNICORNDIR=/ebs/env/bin
DJANGODIR=/ebs/server/
SOCKFILE=/tmp/gunicorn.sock
LOGFILE=/var/log/gunicorn/gunicorn.error
USER=ubuntu
GROUP=ubuntu
NUM_WORKERS=5
TIMEOUT=60
DJANGO_SETTINGS_MODULE=settings
DJANGO_WSGI_MODULE=wsgi
echo "Starting $NAME"
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR
exec $GUNICORNDIR/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--timeout=$TIMEOUT \
--user=$USER --group=$GROUP \
--log-level=error --log-file=$LOGFILE \
--bind=unix:$SOCKFILE
Run Code Online (Sandbox Code Playgroud)
但是,使用此配置,我将从DEBUG及以上的所有日志写入文件.我的日志级参数似乎被忽略了.
我要找的是只写这些类型的日志消息:
2014-01-02 13:54:53 [3327] [CRITICAL] WORKER TIMEOUT (pid:3338)
2014-01-02 13:54:53 [3327] [CRITICAL] WORKER TIMEOUT (pid:3338)
Run Code Online (Sandbox Code Playgroud)
我认为我的settings.py中指定的Django日志记录配置可能会干扰,所以我添加了一个处理程序和一个记录器来尝试并定位gunicorn,但这不起作用.
'handlers': {
'gunicorn': {
'level': 'ERROR',
'class': 'logging.handlers.RotatingFileHandler',
'formatter': 'verbose',
'filename': '/ebs/log/gunicorn.error',
'maxBytes': 1024 * 1024 * …Run Code Online (Sandbox Code Playgroud)