我正在使用FCM进行推送通知
下面的代码在收到通知时发出声音
public void playNotificationSound() {
try {
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(mContext,notification);
r.play();
} catch (Exception e) {
e.printStackTrace();
}
}
我正在调用这个OnMessageReceived方法,但声音仅在应用程序处于前台时播放,而不是在应用程序处于后台时播放
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.e(TAG,"From: " + remoteMessage.getFrom());
if (remoteMessage == null)
return;
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.e(TAG,"Notification Body: " + remoteMessage.getNotification().getBody());
handleNotification(remoteMessage.getNotification().getBody());
}
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.e(TAG,"Data Payload: " + remoteMessage.getData().toString());
try {
JSONObject json = new JSONObject(remoteMessage.getData().toString());
handleDataMessage(json);
} catch (Exception e) {
Log.e(TAG,"Exception: " + e.getMessage());
}
}
}
private void handleNotification(String message) {
if (!NotificationUtils.isAppIsInBackground(getApplicationContext())) {
// app is in foreground,broadcast the push message
Intent pushNotification = new Intent(config.PUSH_NOTIFICATION);
pushNotification.putExtra("message",message);
LocalBroadcastManager.getInstance(this).sendBroadcast(pushNotification);
// play notification sound
NotificationUtils notificationUtils = new NotificationUtils(getApplicationContext());
notificationUtils.playNotificationSound();
}else if (NotificationUtils.isAppIsInBackground(getApplicationContext())){
// If the app is in background,firebase itself handles the notification
NotificationUtils notificationUtils = new NotificationUtils(getApplicationContext());
notificationUtils.playNotificationSound();
}
}