gpt4 book ai didi

php - 当条件设置时,Android fcm接收来自mysql的通知

转载 作者:行者123 更新时间:2023-11-29 18:27:51 26 4
gpt4 key购买 nike

我目前正在实现 Firebase 云消息传递,以便在满足表行数据中的条件时接收来自 mysql 数据库的通知。我现在所拥有的只是当我使用浏览器输入 php 文件时的简单推送通知。以下是我的所有编码。

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表

token

现在,当用户余额小于0.5并且这是我的用户时,我如何能够从mysql数据库接收通知表

user table

最佳答案

您已经将系统设置得足够好,可以执行发送和接收推送通知的基本操作。

据我所知,您有一个系统,您希望在用户余额低于 0.5 时发送推送通知。您可以在 PHP 中编写代码,其中有余额操作来检查用户的当前余额并发送推送通知。

或者

您可以设置一个 cron 来检查每个用户的余额,并在余额低于 0.5 时向他们发送通知

关于php - 当条件设置时,Android fcm接收来自mysql的通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46005163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com