我正在使用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(); } }