我的应用程序是 android 中的多人游戏,服务器在谷歌应用引擎上运行,并使用 GCM 将服务器与播放器设备连接起来。我已经在 GCM 中注册了设备,然后我将 registerId 发送到服务器以连接设备。当我运行游戏时,有时它工作正常,但有时设备没有从 GCM 接收到任何东西,服务器仍然从设备接收。我不知道发生了什么:s
这是我在主类的 onCreate 中注册我的设备的地方:
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
if (GCMRegistrar.isRegistered(this)) {
Log.d("info", GCMRegistrar.getRegistrationId(this));
}
regId = GCMRegistrar.getRegistrationId(this);
deviceId = getDeviceId();
if (regId.equals("")) {
GCMRegistrar.register(this, SENDER_ID);
Log.d("info", GCMRegistrar.getRegistrationId(this));
}
然后我第一次在手机上运行应用程序时,我使用此代码将注册 ID 发送到服务器:
sendMessage("code=" + REGISTRATION_CODE +
"&deviceId=" + deviceId +
"®Id=" + regId +
"&phoneNumber=" + phoneNumber);
这是服务器中将消息发送回设备的代码:
public void sendMessage(String regId, String text) {
Sender sender = new Sender(APIKey);
Message message = new Message.Builder().collapseKey("1").timeToLive(3).delayWhileIdle(true).addData("message", text).build();
try {
sender.send(message,regId,1);
} catch (IOException e) {
e.printStackTrace();//Manejar la excepcion
}
}
我不明白为什么停止工作,我正在玩游戏,停止工作,然后再次工作......