发送通知时播放默认铃声



我尝试用铃声通知通知。我尝试了很多代码,但它不起作用.
我想在发送通知时播放默认铃声。通知是我正确发送的..但是手机中没有声音.

我的代码是

  public class MyFirebaseMessagingService extends FirebaseMessagingService {
   private static final String TAG = "FCMPlugin";
/**
 * Called when message is received.
 *
 * @param remoteMessage Object representing the message received from Firebase Cloud Messaging.
 */
// [START receive_message]
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    // TODO(developer): Handle FCM messages here.
    // If the application is in the foreground handle both data and notification messages here.
    // Also if you intend on generating your own notifications as a result of a received FCM
    // message, here is where that should be initiated. See sendNotification method below.
    Log.d(TAG, "==> MyFirebaseMessagingService onMessageReceived");
    if( remoteMessage.getNotification() != null){
        Log.d(TAG, "tNotification Title: " + remoteMessage.getNotification().getTitle());
        Log.d(TAG, "tNotification Message: " + remoteMessage.getNotification().getBody());
    }
    Map<String, Object> data = new HashMap<String, Object>();
    data.put("wasTapped", false);
    for (String key : remoteMessage.getData().keySet()) {
            Object value = remoteMessage.getData().get(key);
            Log.d(TAG, "tKey: " + key + " Value: " + value);
            data.put(key, value);
    }
    Log.d(TAG, "tNotification Data: " + data.toString());
    FCMPlugin.sendPushPayload( data );
    //sendNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody(), remoteMessage.getData());
}
// [END receive_message]
/**
 * Create and show a simple notification containing the received FCM message.
 *
 * @param messageBody FCM message body received.
 */
private void sendNotification(String title, String messageBody, Map<String, Object> data) {
    Intent intent = new Intent(this, FCMPluginActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    for (String key : data.keySet()) {
        intent.putExtra(key, data.get(key).toString());
    }
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
            PendingIntent.FLAG_ONE_SHOT);
    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(getApplicationInfo().icon)
            .setContentTitle(title)
            .setContentText(messageBody)
            .setAutoCancel(true)
            .setSound(defaultSoundUri)
            .setContentIntent(pendingIntent);
    NotificationManager notificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}

}

如果您在模拟器上尝试此操作,它将不起作用,因为如果我没记错的话,它没有将默认铃声设置为:

content://settings/system/ringtone  

您是否尝试过测试

Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(getApplicationInfo().icon)
            .setContentTitle(title)
            .setContentText(messageBody)
            .setAutoCancel(true)
            .setSound(defaultSoundUri)
            .setContentIntent(pendingIntent);

在实际设备上?

检查您的应用是否在后台运行。如果应用程序在后台,则不会调用onMessageReceived函数,因此没有铃声。

最新更新