Как установить звук по умолчанию в консоли Firebase для push-сообщений http v1

Этот вопрос относится к уведомлениям консоли 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"
            }
        }
    }

};

Спасибо.

1
0
586
1

Ответы 1

Я получил данные 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());
    }

Другие вопросы по теме