0

Google Cloud Messaging で構成されたアプリにメッセージを送信しようとしています。正しく設定されていると思われるphp関数があります。

    function send($message){
            $devices = array ('deviceid');
            $serverApiKey = 'apiKey';

    $fields = array(
        'registration_ids'  => $this->devices,
        'data'              => array( "message" => $message ),
    );

    $headers = array( 
        'Authorization: key=' . $this->serverApiKey,
        'Content-Type: application/json'
    );

    error_reporting(-1);
    // Open connection
    $ch = curl_init();

    // Set the url, number of POST vars, POST data
    curl_setopt( $ch, CURLOPT_URL, 'https://android.googleapis.com/gcm/send');
    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 ) );

    // Execute post
    $result = curl_exec($ch);

    print_r(curl_getinfo($ch));

    // Close connection
    curl_close($ch);

    return $result;
}

しかし、Curl はリクエストを処理しません。何も通じないようです。print_r コードは以下を出力します。

Array ( [url] => https://android.googleapis.com/gcm/send [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.031 [namelookup_time] => 0 [connect_time] => 0.047 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [certinfo] => Array ( ) [redirect_url] => )

誰かが私が間違っていることを知っていますか? また、WAMP サーバーがインストールされている Windows マシンでこのスクリプトを実行していることにも言及します。カールが有効です。なぜそれが機能しないのか、私は完全に迷っています。

4

2 に答える 2

0

どうでも。誰かが疑問に思っている場合に備えて、追加することで機能させることができました

curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
于 2013-05-24T20:31:09.217 に答える
0

この PHP ライブラリを使用することもできます。

https://github.com/CoreProc/gcm-php

インストールしたら、次のことができます。

$gcmClient = new GcmClient('your-gcm-api-key-here');

$message = new Message($gcmClient);

$message->addRegistrationId('xxxxxxxxxx');
$message->setData([
    'title' => 'Sample Push Notification',
    'message' => 'This is a test push notification using Google Cloud Messaging'
]);

try {

    $response = $message->send();

    // The send() method returns a Response object
    print_r($response);

} catch (Exception $exception) {

    echo 'uh-oh: ' . $exception->getMessage();

}

送信後、レスポンスを取得できます。

于 2015-03-13T03:06:51.557 に答える