まず最初に、これらすべてのリンクを確認しました。
しかし、プッシュ通知を受け取ったときに電話が振動するのを達成できません。これが私のコードです:
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());
}
}
許可
<uses-permission Android:name="Android.permission.VIBRATE"/>
テスト
デバイス:Nexus 5
Androidバージョン:6.0.1
それを機能させるために私がしなければならないある種の未知の魔術がありますか?
setDefaults (int defaults)
を_NotificationCompat.Builder
_インスタンスに使用して、通知用のデフォルトのシステムサウンド、バイブレーション、ライトを提供することもできます。
値は、1つ以上の次のフィールドをビット単位で組み合わせる必要があります-または(|): DEFAULT_SOUND 、 DEFAULT_VIBRATE 、 DEFAULT_LIGHTS 。
すべてのデフォルト値には、 DEFAULT_ALL を使用します。
例コードに従って、デフォルトのサウンドを設定しているので、デフォルトのサウンドを設定してバイブレーションを行う場合は、次のようにします。
_notificationBuilder.setDefaults(DEFAULT_SOUND | DEFAULT_VIBRATE);
_
すべてのデフォルト設定が必要な場合は、notificationBuilder.setDefaults(-1)
を設定することで実現できます。これは、DEFAULT_ALL値と見なされます。
setDefaultsについては、Android doc )を参照してください。
編集:
振動には1000ミリ秒の遅延があります。最初のものを0に設定すると、すぐにオフになります。 {遅延、バイブレーション、スリープ、バイブレーション、スリープ}パターンです
_ // Each element then alternates between delay, vibrate, sleep, vibrate, sleep
notificationBuilder.setVibrate(new long[] { 1000, 1000, 1000, 1000, 1000});
_
これは電話を振動させます:
Vibrator v = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 500 milliseconds
v.vibrate(500);
通知を呼び出すときは、これも呼び出します