【发布时间】:2017-03-14 15:52:08
【问题描述】:
我正在使用此脚本向单个用户发送推送通知。
我想在脚本中创建一个循环以将通知发送给所有用户。
我必须从数据库中获取令牌并为每个令牌循环。
<?php
require "init.php";
$message=$_POST['message'];
$title=$_POST['title'];
$path_to_fcm='https://fcm.googleapis.com/fcm/send';
$server_key="MY_SERVER_KEY";
$sql="select * from fcm_info"; //there's one field called fcm_token
$result=mysqli_query($con,$sql);
$row=mysqli_fetch_row($result);
$key=$row[0];
$headers= array(
'Authorization:key='.$server_key,
'Content-Type:application/json'
);
$fields= array('to'=>$key,
'notification'=>array('title'=>$title,'body'=>$message));
$payload=json_encode($fields);
$curl_session= curl_init();
curl_setopt($curl_session,CURLOPT_URL, $path_to_fcm);
curl_setopt($curl_session,CURLOPT_POST, true);
curl_setopt($curl_session,CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl_session,CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_session,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_session,CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($curl_session,CURLOPT_POSTFIELDS, $payload);
$result=curl_exec($curl_session);
curl_close($curl_session);
mysqli_close($con);?>
我试过的是:
while($d=mysqli_fetch_array($result,MYSQLI_BOTH))
{
echo $d[0];
}
我改变了:
$key to $d[0];
但是没用,
任何建议,请。
//更新了
- 我只得到一个令牌,但我在数据库中有两个
- MySQLi 错误
查看:Result
//Riggs 这是我的更新:
我曾经测试过你的代码,没有出现错误。
我添加了 echo $row['fcm_token'];在while循环之后,但页面没有显示我的回声。
通知已发送到数据库中 fcm_token 的第一行。我认为 Riggs 认为循环没有获取第二行,也没有将 $key 设置为新令牌。
你有办法简单地做吗:
- 获取第一行标记值
- 将 $key 设置为令牌
- 计数器 ++
- 获取第二行标记值
//做同样的步骤
【问题讨论】:
-
你对“它不起作用”是什么意思——你有错误吗?显示消息..你有错误的结果.? .然后显示数据样本您的结果和预期结果
-
“但它不起作用” - 定义它;将
mysqli_error($con)添加到查询中是否有任何错误?错误报告呢? -
抱歉,编辑了问题伙计们,代码有效,但它正在将通知发送到我从数据库中获得的唯一令牌,但我有两个,可能是错误的循环?
标签: php android push-notification