Я работаю над 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 и как?

1
N Sharma 9 Апр 2014 в 10:09

2 ответа

Лучший ответ

Когда вы отправляете восходящее сообщение из своего приложения, GCM Cloud Connection Server (CCS) передает это сообщение на ваш сервер. Чтобы это работало, вы должны реализовать сервер, который поддерживает протокол XMPP и устанавливает соединение TLS с сервером подключения к облаку GCM. Вам также необходимо, чтобы ваш проект API был внесен в белый список для использования этой функции. Подробнее об этом можно узнать здесь.

Что касается полезности, он позволяет вам отправлять сообщения в ваше приложение через соединение GCM, а не через ваше собственное соединение между вашим приложением и вашим сервером. Это более эффективный аккумулятор.

3
Eran 9 Апр 2014 в 14:22
@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 (FCM) для управления исходящими и исходящими сообщениями.

https://github.com/carlosCharz/FCMTest

Это видео на YouTube, которое объясняет, что он делает.

https://www.youtube.com/watch?v=SEzOKSoAMG0

Надеюсь, что вы найдете ее полезной.

2
Carlos Becerra Rodriguez 5 Ноя 2016 в 16:45