2016-08-04 19 views
0

Firebaseを使用して、アンドロイドアプリケーションに通知を送信しようとしています。私は私のローカルシステムでそれを試して、それは正常に動作しています。これは私のコードです。FCMメッセージの送信に失敗しました

function sendPushNotiication($tokens,$message){ 
    $url='https://fcm.googleapis.com/fcm/send'; 
    $fields= array(
     'registration_ids'=>$tokens, 
     'data'=>$message 
    ); 
    $headers=array(
     'Authorization: key='.GOOGLE_API_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); 
    var_dump($result); 
    if($result==FALSE){ 
     die('curl failed: '. curl_error($ch)); 
    } 

    curl_close($ch); 
    return $result; 
} 

私はこのsendPushNotification()メソッドを呼び出してfirebaseにデータを送信しました。 問題は私がサーバーにオンラインで置くときです。 var_dumpで$ resultにNULLを与えています。それと死んだ後

カールに失敗しました。

カールの問題は、ローカルシステムで動作している場合にはうまくいくはずです。

私もするphpinfo()を実行し、

cURL support enabled 
cURL Information libcurl/7.21.0 OpenSSL/0.9.8q zlib/1.2.3 
+0

代わりに '==='を使用してください。 '== false'のテストは危険です、空の文字列、整数' 0'など...すべてのテストは偽と等しくなります。 '0'は完全に有効なjson応答です。 –

+0

@MarcB迅速な対応をお願いします。はい、私は置き換え==と==しかし、スクリプトが正常にサーバー上でnullを与えるローカルで動作している場合。 –

+0

多分googleのあなたのホスティング会社または何かをブラックリストに載せました。いい考えはありません。 –

答えて

0
function sendPushNotification($registration_ids, $message) { 
      // Set POST variables 
     $url = 'Url'; 

     $fields = array(); 
     $fields['data'] = $message; 
     if(is_array($registration_ids)){ 
     $fields['registration_ids'] = $registration_ids; 
     }else{ 
     $fields['to'] = $registration_ids; 
     } 

     $headers = array(
      'Authorization: key=' . GOOGLE_API_KEY, 
      'Content-Type: application/json' 
     ); 
     // Open connection 
     $ch = curl_init(); 

     // Set the url, number of POST vars, POST data 
     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); 
     // Disabling SSL Certificate support temporarly 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

     curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 

     // Execute post 
     $result = curl_exec($ch); 
     if ($result === FALSE) { 
      die('Curl failed: ' . curl_error($ch)); 
     } 
     // Close connection 
     curl_close($ch); 
     return $result; 
} 

ちょうどこれにウルコードを検証することを見出しました。

+0

私はそれを試してみました。同じ結果を返します。私はSSL証明書のサポートを無効にしてみました。 firebaseコンソールにドメインを追加する必要がありますか?私はOAuthのリダイレクトドメインであるAuthの下にドメインを追加しようとしました。まだ動作していません。 –

関連する問題