また、音を出さなければならない通知にも問題がありました。アプリがフォアグラウンドにあるとすべてが正しく機能しましたが、アプリがバックグラウンドにあると音が出ませんでした。
通知はFCMを介してサーバーによって送信されました。つまり、サーバーは通知のJSONをマウントしてFCMに送信し、FCMは通知をアプリに送信します。サウンドタグを付けても、背景に音が出ません。
サウンドタグを付けても機能しませんでした。
たくさん検索した後、私はgithubフォーラムで解決策を見つけました。次に、私の場合、2つの問題があることに気づきました。
1-APIレベル26以降で動作するために重要なchannel_idタグの送信がありませんでした
2-Androidアプリケーションでは、通知がサーバーから直接送信されるこの特定のケースでは、事前にチャネルIDを構成する必要があったため、メインアクティビティでは、Androidがいつ何をすべきかを認識できるようにチャネルを構成する必要がありました。通知が届きました。
サーバーから送信されるJSONの場合:
{
"title": string,
"body": string,
"icon": string,
"color": string,
"sound": mysound,
"channel_id": videocall,
}
あなたの主な活動:
@Background
void createChannel(){
Uri sound = Uri.parse("android.resource://" + getApplicationContext().getPackageName() + "/" + R.raw.app_note_call);
NotificationChannel mChannel;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mChannel = new NotificationChannel("videocall", "VIDEO CALL", NotificationManager.IMPORTANCE_HIGH);
mChannel.setLightColor(Color.GRAY);
mChannel.enableLights(true);
mChannel.setDescription("VIDEO CALL");
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_ALARM)
.build();
mChannel.setSound(sound, audioAttributes);
NotificationManager notificationManager =
(NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(mChannel);
}
}
これは最終的に私の問題を解決しました、私がしたように誰かが2日を無駄にしないのを助けることを願っています。コードに入れるすべてのものに必要かどうかはわかりませんが、これが方法です。また、私が行ったのはそこに投稿されたものと同じだったので、答えをクレジットするためのgithubフォーラムのリンクも見つかりませんでした。