Visualizzazione risultati 1 fino 4 di 4

Discussione: Richiesta HTTP2

  1. #1
    Guest

    Predefinito Richiesta HTTP2

    Salve, per inviare una notifica push tramite Apple Push Notification Service è necessario effettuare una richiesta HTTP2. Attualmente non riesco ad effettuarla tramite curl, questo tipo di protocollo è abilitato in altervista?

  2. #2
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    https://it.wikipedia.org/wiki/Notifica_push
    Per inviare una notifica push ti serve solo https (per compatibilità verso il browser chrome)..
    Vedo CloudFlare con https attivo (http2 si usa con https ma ricorda che questo non è il server di origine e cioè altervista)..
    Si le funzioni curl sono abilitate..
    1)Definisci per quale applicazione (jooomla,wordpress ecc) vuoi utilizzarlo
    2)Posta il codice privo di dati personali
    Nota* requisiti MySQL 5.6 e sblocco delle connessioni server to server per le richieste esterne al domino
    Ultima modifica di darbula : 06-01-2018 alle ore 05.01.51

  3. #3
    Guest

    Predefinito

    Salve darbula, grazie per la risposta, questa è la funzione che sto cercando di utilizzare:
    Codice PHP:
    /**
    * @param $http2ch la connessione curl
    * @param $http2_server l'url per la richiesta
    * @param $apple_cert il percorso del certificato
    * @param $app_bundle_id l'id dell'applicazione
    * @param $message payload (JSON)
    * @param $token token dispositivo
    * @return mixed codice di stato
    */
    function sendHTTP2Push($http2ch, $http2_server, $apple_cert, $app_bundle_id, $message, $token) {

    // url (endpoint)
    $url = "{$http2_server}/3/device/{$token}";

    // certificate
    $cert = realpath($apple_cert);

    // headers
    $headers = array(
    "apns-topic: {$app_bundle_id}",
    "User-Agent: My Sender"
    );

    // other curl options
    curl_setopt_array($http2ch, array(
    CURLOPT_URL => $url,
    CURLOPT_PORT => 443,
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_POST => TRUE,
    CURLOPT_POSTFIELDS => $message,
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_SSLCERT => $cert,
    CURLOPT_HEADER => 1
    ));

    // go...
    $result = curl_exec($http2ch);
    if (
    $result === FALSE) {
    throw new
    Exception("Curl failed: " . curl_error($http2ch));
    }

    // get response
    $status = curl_getinfo($http2ch, CURLINFO_HTTP_CODE);

    return
    $status;
    }
    Questo è il modo in cui la utilizzo:
    Codice PHP:
    if (!defined('CURL_HTTP_VERSION_2_0')) {
    define('CURL_HTTP_VERSION_2_0', 3);
    }
    // open connection
    $http2ch = curl_init();
    curl_setopt($http2ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);

    // send push
    $apple_cert = '/certificates/samplepush/development.pem';
    $message = '{"aps":{"alert":"Hi!","sound":"default"}}';
    $token = 'dbdaeae86abcde56rtyww1859fb41b2cby053ec48987847';
    $http2_server = 'https://api.development.push.apple.com'; // or 'api.push.apple.com' if production
    $app_bundle_id = 'it.dot.TestApp';

    $status = sendHTTP2Push($http2ch, $http2_server, $apple_cert, $app_bundle_id, $message, $token);
    echo
    "Response from apple -> {$status}\n";

    // close connection
    curl_close($http2ch);
    L'errore che ottengo è il seguente:
    Unexpected HTTP/1.x request: POST /3/device/

    Qualche suggerimento a riguardo?
    Ultima modifica di alemoppo : 10-01-2018 alle ore 10.57.25 Motivo: + [php]

  4. #4
    Guest

    Predefinito

    Aggiungo inoltre che non utilizzo applicazioni come Joomla o Wordpress, questo script viene richiamato dall'app iOS per inviare una notifica push ad un altro dispositivo.

    Inoltre ho già sbloccato le connessioni server to server per richieste esterne al dominio.

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •