AndroidのFirebaseを使用してサーバーから通知を送信しています。私のコードは、Firebaseコンソールから通知を送信するときに機能しますが、サーバからメッセージを送信すると機能しません。私はデバッグをオンにし、FirebaseMessagingServiceのonMessageReceived
メソッドが呼び出されないことを分析しました。ここで AndroidでFirebaseを使用しているサーバからの通知でonMessageReceivedが通知されない
public class FirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService {
private static final String TAG = FirebaseMessagingService.class.getSimpleName();
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
showNotification(remoteMessage.getData().get("message"));
}
private void showNotification(String message){
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Firebase Push Notification")
.setContentText(message)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
}
}
は、サーバ側」の私のPHPコードである
public function sendPushNotificationToGCMSever($token, $message){
//include_once 'config.php';
$url = 'https://fcm.googleapis.com/fcm/send';
$fields = array(
'registration_ids' => $token,
'notification' => $message
);
$headers = array(
'Authorization:key=' . SERVER_KEY,
'Content-Type:application/json'
);
$ch = curl_init();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
誰も私が間違ってやっているものを私に言うことができるすべてのヘルプははるかに高く評価されるだろう? 。ありがとうございました:)
は、フォアグラウンドまたはバックグラウンドの状態でアプリですか? –