web-dev-qa-db-fra.com

Vibrer lors de la notification Push

Tout d'abord, j'ai vérifié tous ces liens:

Mais je ne parviens pas à faire vibrer mon téléphone lorsque je reçois une notification Push. Voici mon code:

PushReceiver

public class PushReceiver extends FirebaseMessagingService {
    public PushReceiver() {
    }

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        if(remoteMessage.getData() != null){
            Map<String, String> data = remoteMessage.getData();
            sendNotification(data.get("message"));
        }
        else{
            if(remoteMessage.getNotification() != null) {
                sendNotification(remoteMessage.getNotification().getBody());
            }
        }
    }

    private void sendNotification(String messageBody) {
        Intent intent = new Intent(this, BaseActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        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(R.drawable.ic_done_all_24dp)
                .setContentTitle(getString(R.string.str_notification_order_ready))
                .setContentText(messageBody)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);

        notificationBuilder.setVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 });

        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);


        notificationManager.notify(ConstantUtils.NOTIFICATION_ID_ORDER_READY, notificationBuilder.build());
    }
}

Permission

<uses-permission Android:name="Android.permission.VIBRATE"/>

Test  

Appareil: Nexus 5 

Version Android: 6.0.1

Il y a une sorte de sorcellerie inconnue que je devrais faire pour que cela fonctionne?

7
guisantogui

Vous pouvez également utiliser setDefaults (int defaults) pour votre instance NotificationCompat.Builder qui vous fournit le son, les vibrations et les sons système par défaut pour votre notification.

La valeur doit être un ou plusieurs des champs suivants combinés avec bitwise-or (|): DEFAULT_SOUND , DEFAULT_VIBRATE , DEFAULT_LIGHTS .

Pour toutes les valeurs par défaut, utilisez DEFAULT_ALL .

Ex. Selon votre code, vous définissez le son par défaut. Par conséquent, si vous souhaitez définir le son par défaut et le faire vibrer:

notificationBuilder.setDefaults(DEFAULT_SOUND | DEFAULT_VIBRATE);

Si vous voulez tous les paramètres par défaut, vous pouvez y parvenir en définissant notificationBuilder.setDefaults(-1), qui est considéré comme une valeur DEFAULT_ALL.

Voir Android doc pour setDefaults.

EDIT:

La vibration a un délai de 1000 ms. Si vous définissez le premier sur 0, il s'éteindra instantanément. C'est un modèle {delay, vibrer, dormir, vibrer, dormir}

 // Each element then alternates between delay, vibrate, sleep, vibrate, sleep
 notificationBuilder.setVibrate(new long[] { 1000, 1000, 1000, 1000, 1000}); 
14
pRaNaY

Cela fait vibrer le téléphone:

Vibrator v = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 500 milliseconds
v.vibrate(500);

Lorsque vous appelez la notification, appelez également cette

0
John Sardinha