Для работы с push-уведомлениями создайте приложение «PushActivity», в котором используются методы, реализованные в модуле PushAPI.
Приложение позволяет подписываться на получение сообщений указанной темы и добавлять токен на сервер мобильной платформы.
Перед созданием приложения «PushActivity» настройте сервис Firebase и push-уведомления в консоли администратора.
Приложение «PushActivity» состоит из одного экрана, области ввода текста и кнопок:
«Topics». Получение списка тем сообщений;
«Subscribe». Подписка на получение сообщений определенной темы;
«Tokens». Получение списка активных токенов;
«FirebaseToken». Получение токена с помощью Firebase;
«AddToken». Отправление токена на сервер мобильной платформы;
«Unsubscribe». Отписка от получения сообщений определенной темы;
«RemoveTokens». Удаление токенов с сервера мобильной платформы.
Область ввода текста содержит имя темы сообщений. По умолчанию область ввода текста пустая.
Для просмотра результата работы приложения используйте интерактивный пример:
Нажмите кнопку «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);
}
}
См. также: