Пример работы с push-уведомлениями

Для работы с push-уведомлениями создайте приложение «PushActivity», в котором используются методы, реализованные в модуле PushAPI.

Приложение позволяет подписываться на получение сообщений указанной темы и добавлять токен на сервер мобильной платформы.

Перед созданием приложения «PushActivity» настройте сервис Firebase и push-уведомления в консоли администратора.

Настройка сервиса Firebase

Настройка push-уведомлений

Приложение «PushActivity» состоит из одного экрана, области ввода текста и кнопок:

Область ввода текста содержит имя темы сообщений. По умолчанию область ввода текста пустая.

Для просмотра результата работы приложения используйте интерактивный пример:

  1. Нажмите кнопку «Topics».

public class PushActivity extends AppCompatActivity {
   private static final String MY_URL = "http://testmasterfmp.fsight.cloud/";
   private static final VersionAPI MY_VERSION_API = VersionAPI.V_1;
   private static final String MY_ENVIRONMENT = "Leonid_environment";
   private static final String MY_PROJECT = "Leonid_project";
   private static final String MY_VERSION = "v1";
   private static final String MY_LOGIN = "Leonid";
   private static final String MY_PASSWORD = "123123";
   private static final String TAG = "FileActivity";
 
   private HyperHive hyperHive;
   private TextView textView;
   private EditText editText;
 
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_push);
 
       textView = findViewById(R.id.text_view_push);
       editText = findViewById(R.id.edit_text_push);
 
       Handler uiHandler = new Handler();
 
       hyperHive = new HyperHiveState(getApplicationContext())
               .setHostWithSchema(MY_URL)
               .setApiVersion(MY_VERSION_API)
               .setEnvironmentSlug(MY_ENVIRONMENT)
               .setProjectSlug(MY_PROJECT)
               .setVersionProject(MY_VERSION)
               .setHandler(uiHandler)
               .buildHyperHive();
 
       authentication();
   }
 
   public void authentication() {
       boolean status = hyperHive.authAPI.auth(MY_LOGIN, MY_PASSWORD, true).execute().isOk();
       showStatus(status);
   }
 
   // Получим токен с помощью Firebase для мобильного устройства
   public void getFirebaseToken(View view) {
       FirebaseInstanceId.getInstance().getInstanceId()
               .addOnCompleteListener(task -> {
                   if (!task.isSuccessful()) {
                       Log.w(TAG, "getInstanceId failed", task.getException());
                       return;
                   }
 
                   String token = task.getResult().getToken();
 
                   Log.d(TAG, token);
                   editText.setText(token);
               });
   }
 
   private void showStatus(boolean status) {
       Log.d(TAG, "status: " + status);
       Toast.makeText(this, String.valueOf(status), Toast.LENGTH_SHORT).show();
   }
 
   // Получим список тем сообщений
   public void getTopicsPush(View view) {
       String topics = hyperHive.pushAPI.getTopicsInRawString().execute();
       textView.setText(topics);
   }
 
   // Получим список токенов
   public void getTokensPush(View view) {
       String tokens = hyperHive.pushAPI.getTokensInRawString().execute();
       textView.setText(tokens);
   }
  
   // Добавим токен
   public void addTokenPush(View view) {
       String token = editText.getText().toString();
       boolean status = hyperHive.pushAPI.addToken(token).execute().isOk();
       showStatus(status);
   }
 
   // Удалим токен
   public void removeTokenPush(View view) {
       String token = editText.getText().toString();
       boolean status = hyperHive.pushAPI.removeTokens(Arrays.asList(token)).execute().isOk();
       showStatus(status);
   }
 
   // Подпишемся на получение сообщений указанной темы
   public void subscribePush(View view) {
       String topic = editText.getText().toString();
       boolean status = hyperHive.pushAPI.subscribe(Arrays.asList(topic)).execute().isOk();
       showStatus(status);
   }
 
   // Отпишемся от получения сообщений указанной темы
   public void unsubscribePush(View view) {
       String topic = editText.getText().toString();
       boolean status = hyperHive.pushAPI.unsubscribe(Arrays.asList(topic)).execute().isOk();
       showStatus(status);
   }
}

Firebase-сервис:

public class MyFirebaseMessagingService extends FirebaseMessagingService {
   private static final String TAG = "MyFirebaseMsgService";
 
   @Override
   public void onMessageReceived(RemoteMessage remoteMessage) {
       Log.d(TAG, "From: " + remoteMessage.getFrom());
 
       if (remoteMessage.getData().size() > 0) {
           Log.d(TAG, "Message data payload: " + remoteMessage.getData());
       }
 
       if (remoteMessage.getNotification() != null) {
           Log.d(TAG, "title: " + remoteMessage.getNotification().getTitle());
           Log.d(TAG, "body: " + remoteMessage.getNotification().getBody());
       }
   }
 
   @Override
   public void onNewToken(String token) {
       Log.d(TAG, "Refreshed token: " + token);
   }
}

См. также:

Примеры использования Android-фреймворка