[英]Google Cloud Messaging (GCM) downstream message delay
我已经从http://code.google.com/p/gcm/下载并安装了Android gcm-client和gcm-demo-server(http服务器)。 我已经设法在我的Android gcm-client应用程序中接收下游消息。 我做了很多具有以下特点的测试:
在所有情况下,应用程序会在发送后25-30秒之后收到已发送的消息。 但是,我测试了其他使用GCM下游消息的Android应用程序,在大多数情况下,消息几乎立即到达(<5秒)。
我可以在客户端或服务器中更改某些内容,以便更快地在应用程序中收到消息吗?
我还尝试使用http://developer.android.com/google/gcm/ccs.html中提供的gcm XMPP服务器(使用Smack的Java应用程序),但我没有设法发送任何消息。 我从GCM Cloud Connection Server(CCS)收到的回复显示“项目XXXXXXXXXX未列入白名单”。 最可能的原因是我的CCM注册尚未获得批准,如Google CCS(GCM)所述 - 项目未列入白名单 。 正如我在各种网站上看到的,批准通常需要2-3个月,所以我很可能很快就无法测试XMPP服务器。
是否有可能只能使用XMPP服务器接收即时消息? 有没有人对使用XMPP服务器遇到的延迟有任何经验?
提前致谢
我认为问题是在android gcm-client演示中保留了消息,而不是在gcm-server中。 在gcm-client演示的GcmIntentService.java文件中,可以看到函数protected void onHandleIntent(Intent intent)具有以下代码:
[...]
// If it's a regular GCM message, do some work.
} else if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) {
// This loop represents the service doing some work.
for (int i = 0; i < 5; i++) {
Log.i(TAG, "Working... " + (i + 1)
+ "/5 @ " + SystemClock.elapsedRealtime());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
}
[...]
在发送通知消息之前,此代码每次迭代(总共25秒)睡眠android应用程序5秒。 您可以删除此代码,因为这是一个示例,您可以在显示通知之前插入else if语句中的一些工作。
我已经实现了一个xmpp服务器,我在<5秒内收到通知,当然没有这个工作代码。
希望这有帮助,抱歉我的英语不好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.