2017-09-01 2 views
0

Je suis actuellement implémenter la messagerie cloud firebase pour recevoir une notification de la base de données mysql quand une condition dans les données de la ligne de tableau est remplie. Ce que j'ai actuellement en ce moment est juste une simple notification push lorsque j'entre dans un fichier php en utilisant le navigateur. Voici tout mon codage.Android fcm recevoir une notification de mysql lorsque la condition est définie

push_notification.php

<?php 

function send_notification ($tokens, $message) 
{ 
    $url = 'https://fcm.googleapis.com/fcm/send'; 

    $fields = array(
     'registration_ids' => $tokens, 
     'data' => $message 
     ); 

    $headers = array(
     'Authorization:key = AAAA0********* ', 
     'Content-Type: application/json' 
     ); 

    $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);  

    if ($result === FALSE) { 
     die('Curl failed: ' . curl_error($ch)); 
    } 

    curl_close($ch); 
    return $result; 
} 

$conn = mysqli_connect("localhost", "root", "", "fcm"); 
$sql = " Select fcm_token From fcm_notification"; 
$result = mysqli_query($conn, $sql); 
$tokens = array(); 

if(mysqli_num_rows($result) > 0){ 
    while ($row = mysqli_fetch_assoc($result)) { 
     $tokens[] = $row["fcm_token"]; 
    } 
} 

mysqli_close($conn); 
$message = array("message" => " FCM PUSH NOTIFICATION TEST MESSAGE"); 
$message_status = send_notification($tokens, $message); 
echo $message_status; 

?> 

MyFirebaseInstanceIDService.java

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { 

@Override 
public void onTokenRefresh() { 

    String token = FirebaseInstanceId.getInstance().getToken(); 

    registerToken(token); 
} 

private void registerToken(String token) { 

    OkHttpClient client = new OkHttpClient(); 
    RequestBody body = new FormBody.Builder() 
      .add("fcm_token", token) 
      .build(); 

    Request request = new Request.Builder() 
      .url("http://192.168.1.5/fcm/register.php") 
      .post(body) 
      .build(); 

    try { 
     client.newCall(request).execute(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

} 

MyFirebaseMessagingService.java

public class MyFirebaseMessagingService extends FirebaseMessagingService { 

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 

    showNotification(remoteMessage.getData().get("message")); 
} 

private void showNotification(String message) { 

    Intent i = new Intent(this,MainActivity.class); 
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT); 

    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 

    NotificationCompat.Builder builder = new NotificationCompat.Builder(this) 
      .setAutoCancel(true) 
      .setContentTitle("FCM Test") 
      .setContentText(message) 
      .setLights(Color.BLUE,1,1) 
      .setSmallIcon(R.drawable.common_google_signin_btn_icon_dark) 
      .setContentIntent(pendingIntent); 

    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    manager.notify(0,builder.build()); 
} 
} 

fcm_token Table

token

En ce moment, comment puis-je en mesure de recevoir une notification de base de données MySQL lorsqu'un utilisateur balance est inférieure à 0.5 et voici mon user tableau

user table

Répondre

0

Vous avez configuré votre système assez bien pour faire l'essentiel de l'envoi et de la réception de la notification push. D'après ce que je comprends, vous avez un système où vous voulez envoyer une notification push lorsque le solde de l'utilisateur est inférieur à 0,5. Vous pouvez écrire du code en PHP où il y a manipulation de solde pour vérifier le solde actuel de l'utilisateur et envoyer la notification push.

OU

Vous pouvez configurer un cron pour vérifier l'équilibre de chaque utilisateur et les envoyer une notification s'il solde est inférieur à 0,5

+0

J'ai entendu parler cron job, mais je ne sais pas comment utiliser et peut-être que je ne prévois pas de l'utiliser. Comment puis-je écrire du code en php? Je n'ai jamais fait ça avant, pourriez-vous me montrer le premier pas? – lolol