2017-08-09 3 views
3

アプリへのプッシュ通知は常に送信されますが、問題はありません。問題は、アプリが開いていて電話がロックされていない場合にのみ、アプリから新しい通知を受け取った場合に電話が振動することです。 アプリが開いていないか、電話がロックされていると、受信した通知で電話が振動しません。 ロックされていても、アプリが開いていなくても、の電話が振動するようにする方法はありますか?何が問題なのでしょうか?私が見つけたものから、通知は次のコードの助けを借りて作成されます。携帯電話がロックされていない/アプリが開いていないときにプッシュ通知が振動しない

public class NotifyFirebaseMessagingService extends FirebaseMessagingService { 
    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
     manager.notify(
       remoteMessage.getMessageId(), 
       1, 
       new NotificationCompat.Builder(this) 
         .setSmallIcon(R.drawable.ic_paperplane) 
         .setContentTitle(remoteMessage.getNotification().getTitle()) 
         .setContentText(remoteMessage.getNotification().getBody()) 
         .setVibrate(new long[] { 150, 300, 150, 600}) 
         .setAutoCancel(true) 
         .build()); 
     super.onMessageReceived(remoteMessage); 
    } 
} 

マニフェストが振動するとWAKE_LOCK権限を持っています

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

答えて

2

通知ペイロードにこれを追加します。それはモードを沈黙し、それは完全に働いた振動モード

+0

、助けてくれてありがとうだ時に振動していない場合

"notification":{ "sound":"default" } 

これは音に実行されます。それは音と振動を実行する方法はありますか? – Cctest

0

firebaseデータメッセージとfirebaseの間には大きな違いがあります通知メッセージ。 docsから

:アプリケーションがバックグラウンドにあるとき

通知メッセージは、通知トレイに配信されます。フォアグラウンドでのアプリのために、メッセージはこれらのコールバックで処理されます。
onMessageReceived()アンドロイド

に、データメッセージのAndroid上で

のために、クライアントアプリはonMessageReceivedに()

データメッセージを受け取ります

バックグラウンドで受信した通知メッセージは処理できません。私はタイトルとメッセージだけを含むデータメッセージを送信し、あなたのアプリでそれをマニュアルで解析します。これにより、振動を有効にすることができます。

また、firebaseコンソールを使用している場合は、メッセージを送信するときに拡張オプションで「サウンド」を有効にすることができます。

関連する問題