6

Als erstes habe ich alle diese Links überprüft haben:Vibrieren auf Push-Benachrichtigung

Aber ich kann mein Handy vibriert nicht erreichen, wenn ich erhalte eine Push-Benachrichtigung. Hier geht mein 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"/> 

Testing

Device: Nexus 5

Android-Version: 6.0.1

es irgendeine Art von unbekannter Zauberei ist, was ich tun soll es funktionieren zu machen?

+0

Möglicherweise möchten Sie diese SO [Lösung] überprüfen (http://stackoverflow.com/a/36869888/5995040) oder [diese] (http://stackoverflow.com/a/33951000/5995040). Dies könnte Ihnen helfen, Ihr Problem zu lösen. –

+0

@ Mr.Rebot Es tut mir leid für die Verzögerung zu antworten, aber keine dieser Lösungen funktionierte für mich! :( – guisantogui

Antwort

9

Sie können auch anrufen auch setDefaults (int defaults) auf Ihre NotificationCompat.Builder Instanz verwenden können, die Sie Systemsounds auf Standard bietet, vibrieren und Lichter für Ihre Benachrichtigung. DEFAULT_SOUND, DEFAULT_VIBRATE, DEFAULT_LIGHTS: |()

sollte der Wert ein oder mehrere der folgenden Felder mit bitweise oder kombiniert werden.

Verwenden Sie für alle Standardwerte DEFAULT_ALL.

Ex. Wie pro Ihre Code, den Sie Standard-Sound setzen so, wenn Sie Standard-Sound einstellen möchten und vibrieren:

notificationBuilder.setDefaults(DEFAULT_SOUND | DEFAULT_VIBRATE); 

Wenn Sie alle Standardeinstellungen möchten, können Sie es, indem Sie notificationBuilder.setDefaults(-1) erreichen kann, ist es als DEFAULT_ALL Wert betrachten.

Siehe android doc für setDefaults.

EDIT:

Die Schwingung eine Verzögerung von 1000 ms hat. Wenn Sie den ersten Wert auf 0 setzen, wird er sofort ausgelöst.Es ist eine {Verzögerung, Vibrieren, schlafen, Vibrieren, schlafen} Muster

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

Dieses vibriert das Telefon:

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

Wenn Sie rufen die Meldung dieses

+0

man Ich habe keine mContext in meinem Dienst, aber ich kann getSystemService ohne es aufrufen, aber es vibriert nicht :( – guisantogui

+0

mContext ist der Kontext, Sie können 'getActivity()' stattdessen verwenden –

Verwandte Themen