2016-01-07 54 views
0

我想發送推送通知一些使用存儲在數據庫表中的註冊ID的Android設備。發送推送通知到android使用PHP:curl失敗

這裏是我的代碼

//message and title for push notification 
    $msg=$_POST['message']; 
    $title=$_POST['title']; 
    $result=$connect->prepare("SELECT `push_id` FROM `user_devices`"); 
    $result->execute(); 
    //get registration id's 
    $ids=$result->fetchAll(PDO::FETCH_COLUMN); 
    $key="XXXXX"; 
    $url = 'https://android.googleapis.com/gcm/send'; 
    $fields = array(
       'registration_ids' =>$ids, 
       'data'    => array("message" =>$msg,"title"=>$title,"soundname"=>"beep.wav"), 
       ); 
    $headers = array(
        'Authorization: key=' . $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_POSTFIELDS, json_encode($fields)); 
    $res = curl_exec($ch); 
    if($res === false) 
    echo 'Curl failed ' .curl_error(); 
    } 

我得到curl Failed錯誤消息,但並沒有看到任何curl_error()。

UPDATE

我運行從Windows Server此腳本,在Azure雲服務託管。 現在我從基於Linux的服務器運行它的工作正常,但它沒有在Windows服務器中工作。

+0

必須啓用捲曲嗎? –

+0

打印$ res並告訴我你會得到什麼。 – jilesh

+0

是啓用捲曲。 –

回答

1

由於SSL(在您的url https中)問題,您可能會遇到錯誤。你必須配置你的curl來處理安全請求。你可以從這裏找到一個提示:Configuring cURL for SSL

你沒有得到錯誤味精,因爲你需要打印象下面這樣:

echo 'Curl failed ' .curl_error($ch); // you are missing $ch here 

或者你可以運行你的捲曲與冗長能夠看到事情發生與您的捲髮請求!

curl_setopt($ch, CURLOPT_VERBOSE, true); 
0

這是我的SSL證書的問題。

使用一行代碼求解 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);被置於curl_init之後。

注意

這是一個臨時solution.Actual方式是產生SSL證書。