Giter Site home page Giter Site logo

android-gcm's Introduction

Laravel - Android GCM

Paquete laravel para enviar notificaciones usando Google Could Message (GCM)

http://developer.android.com/google/gcm/gcm.html

Instalando

composer require jgab-net/android-gcm dev-master

Publicando configuración

php artisan config:publish jgab-net/android-gcm

El archivo de configuración se publica en app/config/packages/jgab-net/android-gcm/config.php

Coloquen el api_key generado en https://cloud.google.com/console para el servidor

return array(
    'api_key' => 'aquí el api_key'
);

Configurando base de datos

Es necesario correr la migración del paquete para que se genere la tabla donde se guardaran los tokens (registrations_id) que representan los dispositivos android que recibirán notificaciones

php artisan migrate --package=jgab-net/android-gcm

Es importante que esta migración se ejecute después de que corras las migraciones de tu proyecto o exista la tabla users en tu sistema, porque se creara una clave foránea con users.id, si no existe la tabla la migración mostrará un error, sin embargo puedes continuar ignorando el error, simplemente perderás la clave foranea

Programando

Para almacenar el token(registration_id) solo necesitas agregar la siguiente línea, en el lugar que lo desees (el registration_id se supone estar llegando desde el dispositivo android, y el user_id pertenece al usuario que accedió a la aplicación)

AndroidGcm::addRegistrationId($registration_id, $user_id);

Si estas usando algún paquete aparte para el manejo de accesos de tu usuario puedes trabajar con un filtro after, ej:

  • filters.php
Route::filter('android.gcm',function($route, $request, $response){

    /*verificamos que venga de una respuesta json (Response::json())
     y que exista un registration_id en el input */
     
    if($response instanceof \Illuminate\Http\JsonResponse
        && Input::has('registration_id')){
     
        // Obtenemos el contenido de la respuesta
        $content = json_decode($response->getContent());

        AndroidGcm::addRegistrationId(Input::get('registration_id'), $content->user->id);
    }
});

La explicación ya se encuentra en el código de ejemplo

  • routes.php
Route::post('auth',  array('after' => 'android.gcm', 'uses' => 'Vendor\Paquete\Controller@method'));
 

Notificando

Para notificar simplemente ejecutamos el método send, el primer valor es un array con los tokens(registration_ids) de los dispositivos a notificar, y el segundo es un callback que recibe los tokens(registration_ids) que realmente fueron notificados

La librería internamente reemplazará los tokens(registration_ids) desactualizados, para que en la próxima ejecución del envio se transmitan las notificaciones a los dispositivos faltantes

AndroidGcm::send($registrationIds,function($successRegistrationIds){  

    /*
      Aquí puedes actualizar la bandera que indique que ya no debes 
      enviar la notificación a los dispositivos
      Puedes usar $successRegistrationIds para valerte de esto.
    */
});

Si necesitas algún otro valor dentro del callback puedes pasarlo con (use)

AndroidGcm::send($registrationIds,function($successRegistrationIds) use($otherValue1,$otherValue2){  

    /*
      
    */
});

Para obtener la respuesta real del GCM

AndroidGcm::getApiResponse()

android-gcm's People

Contributors

jgab-net avatar

Stargazers

 avatar Fernando De Freitas avatar

Watchers

 avatar  avatar

Forkers

evervasquez

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.