Push-уведомления (Android и iOS) — Appcelerator

как мне заставить мое приложение (Android и iOS) получать push-уведомления автоматически с панели управления или веб-службы ... единственный способ, который я нашел, - это панель Appcelerator, а не автоматически ...

Хотелось бы, например, когда было обновление в базе, пуш появлялся в рассматриваемом мобильном телефоне пользователя... как это сделать?

Другое дело, как я могу сделать это универсально для Android и iOS? Есть ли какой-нибудь модуль или видео-урок, чтобы научить это делать?


person Silvio Luis    schedule 14.01.2016    source источник


Ответы (1)


Для модуля Multi Push

Это часть моего php для многоплатформенного push-уведомления.

    // iOS
    $apnsHost = 'gateway.push.apple.com';
    $apnsPort = 2195;
    $apnsCert = 'apns-prod.pem';

    //
    $abrirPush = 1;
    $mensagem = array(
        "id_push" => $id_push,
        "id_empresa" => $id_empresa,
        "abrir" => $abrirPush
    );
    $mensagem = json_encode($mensagem);
    $arr['aps'] = array(
        'alert' => $nome_empresa . ' tem uma mensagem para você' , 
        'badge' => 1, 
        'sound' => 'default', 
        'body' => $mensagem
    );
    $payload = json_encode($arr);

    // Abre Conexão iOS
    $streamContext = stream_context_create();
    stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
    $apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);

    // Android
    $arrayAndroid = Array();


    // Search for iOS or Android Device
    for ($i = 0; $i < count($montaArray); $i++){

        $pegaToken = $montaArray[$i];

        $contaToken = strlen($pegaToken);


        if ($contaToken < 70){

            $apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $montaArray[$i])) . chr(0) . chr(strlen($payload)) . $payload;
            fwrite($apns, $apnsMessage);

        }else{

            /// PUSH ANDROI ////
            array_push( $arrayAndroid, $montaArray[$i]);
        }
    }

    fclose($apns);

    // API access key from Google API's Console ( Server KEY )
    define( 'API_ACCESS_KEY', 'KEY_HERE' );

    // prep the bundle
    $msg = array
    (
        'message'   => 'Tem uma mensagem para você',
        'title'     => $nome_empresa,
        'payload'   => $mensagem,
        'vibrate'   => 1,
        'sound'     => 1,
        'largeIcon' => 'large_icon',
        'smallIcon' => 'small_icon'
    );
    $fields = array
    (
        'registration_ids'  => $arrayAndroid,
        'data'          => $msg
    );

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

    $ch = curl_init();
    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_SSL_VERIFYPEER, false );
    curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
    $result = curl_exec($ch );
    print $result;
    curl_close( $ch );

обратите внимание, что Apple не объединяет массив токенов, как это делает Google. Поскольку токен Android больше, чем токены iOS, я считаю его длину, чтобы узнать, какой это токен. $montaArray исходит из моей базы данных, где хранятся все токены

person Douglas Hennrich    schedule 14.01.2016