我正在创建一个iOS应用程序,我面临着用PHP编写的Web服务部分的困难。我想要实现的是,向设备发送推送通知。我已完成那部分。但是,我需要一种机制来区分已成功传送到手机的通知和尚未通知的通知。我为此目的使用反馈网络服务,它也在工作。有一个具有以下结构的MySQL表。根据每个通知的状态位,我收集与每个设备令牌对应的所有通知,并将其转换为阵列并将其发送到设备。这是我遇到困难的地方。
我有两张桌子。
此表存储通知ID,设备令牌和通知状态。通过查看此表,我的脚本可以确定通知是否已传递到特定设备。我的脚本收集所有未传递给特定设备ID的通知ID,并使用以下apps_notif表来获取未传递的通知。表格结构如下。
我的PHP / MySQL脚本如下。
$fecthnotif=mysqli_query($mysqli,"SELECT notif_id FROM notif_status WHERE notif_status=0 AND dev_token='$device_token'") or die(mysqli_error($mysqli));
$d2=array();
while($row = mysqli_fetch_assoc($fecthnotif)) {
$d2[]=$row;
$json = json_encode($d2);
$arr = json_decode( $json,true);
到这个时候,我得到了一系列未传递的通知作为JSON。结果如下。
[{ “notif_id”: “124”},{ “notif_id”: “129”}]
现在,我将结果循环如下。
foreach($arr as $item) { //foreach element in $arr
$uses= $item['notif_id']; }
我想要实现的是从上面的结果中获取每个notif_id,从apss-Notif表中获取所有通知数据,使其成为单个JSON对象并将该有效负载返回给app.So该JSON应该具有所有所有在第一时间未送达的通知的通知数据。
在foreach循环中,我编写了一个查询循环来将所有挂起的通知存储到数组中,但它无法正常工作。
$d=array();
foreach($arr as $item) { //foreach element in $arr
$uses= $item['notif_id']; //etc
//echo $uses;
$sendnotif=mysqli_query($mysqli,"SELECT * FROM apps_notif WHERE notif_id='$uses'") or die(mysqli_error($mysqli));
while($row = mysqli_fetch_assoc($sendnotif)) {
$d[]=$row;
$i++;
}
}
编辑:基本上,我想要实现的是从apps_notif表中返回符合条件的行,notif_status = 0(来自表notif_status)和dev_token =“qwerty”(来自apps_notif表)
我可以看到两行符合条件。
答案 0 :(得分:1)
希望有所帮助
SELECT b.*
FROM notif_status a
INNER JOIN apps_notif b ON a.notif_id = b.notif_id
WHERE notif_status = 0
AND dev_token = '$device_token';
使用子查询,
SELECT *
FROM app_notify
WHERE notify_id IN (SELECT notif_id
FROM notif_status
WHERE notif_status = 0
AND dev_token = '$device_token') ;
见表。在表1中,您有notify_id
,但在table 2
中date
有类似的值。因此,如果您匹配table1 notifyId
和table2 notifyId
,您将无法获得所需的输出。首先检查表格的设计方法。
答案 1 :(得分:1)
您可以尝试使用以下PHP代码从2表中获取详细信息并生成JSON对象。没有经过测试的查询,因为我没有相应的数据库表。
$(function(){
$(".lb_save").click(function(){
var lb_text = $('.lb_text').val();
if(lb_text == '')
{
alert("Enter Some Text...");
$('.lb_text').focus();
}
else
{
$.ajax({
type: "POST",
url: "index.php",
data:{
lb_text:lb_text,
},
success:function(response){
alert('successfully updated');
}
});
}
return false;
});
});
希望这会对你有所帮助。