0

我想发送firebase通知到Android设备的mysql数据库中的所有注册令牌,我使用正常的php方式创建收件人令牌数组,以便我可以发送通知,但是何时我发送通知非注册设备收到它。我想知道是否需要添加一些PHP代码来与Firebase一起工作,以便完成工作,如果是的话,我应该如何以及在哪里使用它,这取决于我的代码或我的代码有什么问题,以及我可以修复它吗?发送Firebase通知到多个注册的Android设备

//这里是发送通知

<?php 
    $message =$_POST['message']; 
    $title=$_POST['title']; 
//firebase server url 
    $path_to_fcm='https://fcm.googleapis.com/fcm/send'; 
    // Here is the server_key 
    $server_key="##########################"; 
    $conn = mysqli_connect("localhost","db_username","password","database_name"); 
    $sql = "select * from fcm_info"; 
    $result = mysqli_query($conn,$sql); 
    //HERE IS THE TOKEN 
$tokens = array(); 
if(mysqli_num_rows($result) > 0){ 
    while ($row = mysqli_fetch_assoc($result)) { 
     $tokens[] = $row["fcm_token"]; 
    } 
} 
/// HERE IS THE KEY SINGLE RECIPIENT IT WORKS FINE WHEN I INTRODUCE TO THE  RECIPIENT FIELD("to" field) 
$key="############"; 
$headers= array(
    'Authorization:key='.$server_key, 
    'Content-Type:application/json' 
      ); 
       // here use $tokens as the replace $key 
$fields= array('to'=>$token, 
'notification'=>array('title'=>$title,'body'=>$message, 
    'click_action'=>'com.jrcomjk.firebasemysql_TARGET_NOTIFICATION' 
)); 
    $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($conn); 
?> 
+0

http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/选中此项 –

+0

Firebase控制台的单个设备通知正在工作?首先从Firebase控制台检查单个设备通知,然后再行进 –

+0

是否有错误响应?您的目标是发送给*所有用户*,但是在您的代码中,您使用的是'to'参数,该参数用于单个令牌。看我的[在这里回答](http://stackoverflow.com/a/39547590/4625829),看看你可以使用什么发送到多个设备。 –

回答

0

您的代码应该工作的代码,只要有你在这火力控制台上配置正确的火力点项目,并相应地把服务器密钥。

+0

我已经这样做,它工作正常如果我在代码中定义了收件人令牌,问题是使用来自数据库的注册令牌@ aznelite89 – f2k

+0

是,也用于使用来自第三方数据库的注册令牌,我之前已经完成了这些类型的项目 – aznelite89

相关问题