0

私はオンラインで調査し、この問題を解決するさまざまな方法を試しましたが、問題は解決しませんでした。これは私のPHPスクリプトで取得するエラーです無効な登録を返すFirebaseクラウドメッセージングPHPスクリプト

{"multicast_id":6412971464416964071,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]} 

私はサーバーキーである認証キーを使用しています。

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 = ********', 
     '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 Token From users"; 
$result = mysqli_query($conn,$sql); 
$tokens = array(); 
if(mysqli_num_rows($result) > 0){ 
    while ($row = mysqli_fetch_assoc($result)) { 
     $tokens[] = $row["Token"]; 
    } 
} 
mysqli_close($conn); 
$message = array("message" => " FCM PUSH NOTIFICATION TEST MESSAGE"); 
$message_status = send_notification($tokens, $message); 
echo $message_status; 
?> 

私のデータベース内に有効なトークンがあります。ただし、無効な登録が表示されます。どのように私はこれを修正するのですか?

+0

あなたがアンドロイドで送信者IDを確認し、認証:PHPスクリプトのキー – bindal

+0

@bindal yup私の送信者IDと認証:キー(サーバーキー)を確認したが正しい。 – amus

答えて

0

それは無効登録なら、

は、サーバーに渡す登録トークンの形式を確認してください。クライアントアプリケーションがFirebase通知の登録から受け取る登録トークンと一致することを確認してください。文字を切り捨てたり、追加したりしないでください。

出典:Downstream message error response codesそれはあなたのために動作しないアクションを推奨する場合は、ここにあなたが行うことができ、追加のものがある

  • Verify ID Tokens。 IDトークンの完全性と信頼性を検証し、uidを取得する必要性について述べました。
  • それはあなたがDBからトークンを取得する場合、あなたは列のデータ型がテキストまたは200
のような非常に長いvarchar型のいずれかであることを確認してくださいと述べここにも、この SO postで、この提案された解決策をチェックすることもできます
+0

私はfirebaseコンソールからAndroidのエミュレータに通知を送信するために同じトークンIDを使用しましたが、正常に動作します。私のデータベースでは、トークンはvarchar 500です。私はまだ私のPHPスクリプトで(InvalidRegistration)同じ問題を抱えています。 – amus

+0

問題を解決するための他の解決方法はありますか? – amus

関連する問題