Передовые сообщения в Android
Я работаю над GCM (Google Cloud Messaging) в Android. Я ищу сообщение вверх по течению, используя GCM.
Код отправьте сообщения GCM в облако здесь
try {
Bundle data = new Bundle();
// the account is used for keeping
// track of user notifications
data.putString("account", account);
// the action is used to distinguish
// different message types on the server
data.putString("action", Constants.ACTION_REGISTER);
String msgId = Integer.toString(getNextMsgId());
gcm.send(projectId + "@gcm.googleapis.com", msgId,
Constants.GCM_DEFAULT_TTL, data);
} catch (IOException e) {
Log.e("grokkingandroid",
"IOException while sending registration id", e);
}
Теперь вопрос в том, что облако будет делать для этого вышестоящего сообщения, где оно может быть полезным в Android и как?
2 ответа
Когда вы отправляете исходящее сообщение из своего приложения, сервер облачных соединений (CCS) GCM передает это сообщение на ваш сервер. Чтобы это работало, вы должны внедрить сервер, который поддерживает протокол XMPP и устанавливает TLS-соединение с GCM Cloud Connection Server. Вам также нужно, чтобы ваш проект API был включен в белый список для использования этой функции. Вы можете прочитать больше об этом здесь.
Что касается полезности, он позволяет вам отправлять сообщения в ваше приложение через соединение GCM, а не через ваше собственное соединение между вашим приложением и вашим сервером. Это более эффективный аккумулятор.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "FCM Token creation logic");
// Get variables reference
deviceText = (TextView) findViewById(R.id.deviceText);
editTextEcho = (EditText) findViewById(R.id.editTextEcho);
buttonUpstreamEcho = (Button) findViewById(R.id.buttonUpstreamEcho);
//Get token from Firebase
FirebaseMessaging.getInstance().subscribeToTopic("test");
final String token = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Token: " + token);
deviceText.setText(token);
//Call the token service to save the token in the database
tokenService = new TokenService(this, this);
tokenService.registerTokenInDB(token);
buttonUpstreamEcho.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "Echo Upstream message logic");
String message = editTextEcho.getText().toString();
Log.d(TAG, "Message: " + message + ", recipient: " + token);
FirebaseMessaging.getInstance().send(new RemoteMessage.Builder(FCM_PROJECT_SENDER_ID + FCM_SERVER_CONNECTION)
.setMessageId(Integer.toString(RANDOM.nextInt()))
.addData("message", message)
.addData("action", BACKEND_ACTION_ECHO)
.build());
// To send a message to other device through the XMPP Server, you should add the
// receiverId and change the action name to BACKEND_ACTION_MESSAGE in the data
}
});
}
Это пример проекта Android для демонстрации Firebase Cloud Messaging (FCM) для управления восходящими и нисходящими сообщениями.
https://github.com/carlosCharz/FCMTest
Это видео на YouTube, которое объясняет, что он делает.
https://www.youtube.com/watch?v=SEzOKSoAMG0
Надеюсь, что вы найдете ее полезной.