Этот вопрос относится к уведомлениям консоли Firebase для версия http v1 на Android. iOS работает.
Пожалуйста, не устанавливайте его как дубликат, если нет вопросов относительно этой конкретной версии!
Я не могу найти способ отправить правильное push-уведомление со звуком, установленным по умолчанию. Я внимательно посмотрел на документы, но у них нет какого-либо функционального примера !!!
Знаете ли вы функциональный пример допустимого формата json для push-уведомлений Android через Консоль Firebase, версия http v1 с ключом «звук», установленным по умолчанию?
Этот формат работает, уведомление приходит на всех устройствах, часть звука, а часть нет. Это не проблема устройства. Они включены в настройках устройства.
const requestBody1 = {
message: {
token: deviceToken,
sound: "default",
notification: {
body: theMsg,
title: theTitle
},
apns: {
"payload": {
"aps": {
"sound": "default"
}
}
}
}
};
Я протестировал множество различных форматов json (не говоря уже о кавычках), чтобы получить звук: "default". Все они возвращают ошибку:
I.E
const requestBody = {
"message":{
"android": {
"collapse_key": "a collapse key",
"priority": "normal",
"ttl": "10s",
"restricted_package_name": "com.test.app",
"data": {
"dummydata" : "dummydata",
},
"notification": {
"title": "one title",
"body": "one message",
"sound": "default"
}
}
}
};
Спасибо.
Я получил данные JSON, как показано ниже:
public void onMessageReceived(RemoteMessage message) {
Session session=new Session(this);
try {
JSONObject data=new JSONObject(message.getData().get("data"));
System.out.println("------------------- Notification Received : " + data.toString());
if (!session.getUserId().equals(null)) {
if (!session.getUserId().equals("")) {
System.out.println("---------------------- USERID : " + session.getUserId());
sendMyNotification(data.get("body").toString(), data.get("title").toString());
}
}
} catch (JSONException e) {
System.out.println("----------------Error in onMessageReceived : " + e.getMessage());
e.printStackTrace();
}catch (Exception e){
System.out.println("----------------Error in onMessageReceived : " + e.getMessage());
}
}
И мои данные Json, которые я отправляю, выглядят следующим образом:
{
"to" : "User Token" : {
"data" :{
"body" : "Hello, How are you?",
"title": "Notification From API"
}
}
}
вы можете отправить звук по умолчанию для такого уведомления, но если у вас есть звуковой uri, вы можете напрямую установить его, установив свойство setSound ():
и вы можете преобразовать строку в uri следующим образом: Uri myUri = Uri.parse("Your String data")
Uri soundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
@SuppressLint("WrongConstant")
NotificationChannel notificationChannel=new NotificationChannel("my_notification","n_channel",NotificationManager.IMPORTANCE_MAX);
notificationChannel.setDescription("description");
notificationChannel.setName("Channel Name");
notificationManager.createNotificationChannel(notificationChannel);
}
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.listlogo)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.tlogo))
.setContentTitle(title)
.setContentText(message)
.setAutoCancel(true)
.setSound(soundUri)
.setContentIntent(pendingIntent)
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(NotificationManager.IMPORTANCE_MAX)
.setOnlyAlertOnce(true)
.setChannelId("my_notification")
.setColor(Color.parseColor("#3F5996"));
notificationManager.notify(0, notificationBuilder.build());
}