Skip to content

MrAPPs-RSM/MrappsOnesignalBundle

Repository files navigation

Mrapps OneSignal

Gestione notifiche OneSignal - bundle per Symfony2

Requisiti

  • PHP 5.4+
  • Symfony2 2.6+

Installazione

composer.json:

{
	"require": {
		"mrapps/onesignalbundle": "dev-master"
	}
}

AppKernel.php:

$bundles = array(
    [...]
    new Mrapps\OnesignalBundle\MrappsOnesignalBundle(),
);

routing.yml:

mrapps_onesignal:
    resource: "@MrappsOnesignalBundle/Controller/"
    prefix:   /

config.yml (configurazione completa):

doctrine:
    [...]
    orm:
        [...]
        resolve_target_entities:
            [...]
            Mrapps\OnesignalBundle\Model\UserInterface: [[ CLASSE USER ALL'INTERNO DEL PROGETTO (es. AppBundle\Entity\User) ]]


mrapps_onesignal:
    parameters:
        app_id: [[ APP ID ONE SIGNAL ]]
        app_name: [[ NOME APP ]]
    web_push:
        rest_api_key: [[ API KEY CHIAMATE REST ]]
        gcm_sender_id: [[ ID PER NOTIFICHE PUSH CHROME ]]
        safari_web_id: [[ ID PER NOTIFICHE PUSH SAFARI ]]

Utilizzo

Generazione files necessari in cartella ROOT WEB:

app/console mrapps:onesignal:generatefiles

Attivazione notifiche lato client:

{#

- Aggiungere questa riga nel punto in cui si vuole renderizzare il blocco javascript per attivare le
  notifiche OneSignal.

- INCLUDERE JQUERY PRIMA DI QUESTA RIGA!!!

- Se si vogliono passare i parametri device_name, device_version e platform (opzionali), creare una rotta
  in un proprio controller, leggere i dati in qualche modo (ad esempio parsando lo user agent) e forwardare
  il controller nel bundle MrappsOnesignal.
  
#}
{{ render(controller('MrappsOnesignalBundle:Onesignal:__js', {'device_name':'[[ NOME BROWSER ]]', 'device_version':'[[ VERSIONE BROWSER ]]', 'platform':'[[ NOME SO ]]'})) }}

Servizio:

$os = $container->get('mrapps.onesignal');

Invio notifica:

$data = array(
    'message' => 'Corpo della notifica',
    'title' => 'Titolo della notifica',     //Opzionale; se non viene passato, verrà impostato di default il nome dell'app
    'url' => 'URL da visitare al click sulla notifica', //Opzionale
    'template' => 'ID del template da utilizzare',	//Opzionale
    'filter_by_os' => OneSignalConsts::PLATFORM_TYPE_{IOS/ANDROID/WEB},	//Eventuale filtro per OS sui PlayerID
    'parameters' => array(),	//Opzionale; eventuali altri parametri da settare
);

/*
    Valori possibili:

    segments: valorizzare $sendTo (3° parametro) con l'array dei gruppi (segments) a cui inviare la notifica. Se non
              viene specificato niente, la notifica verrà inviata al segmento All (tutti gli utenti).
              
    players: valorizzare $sendTo (3° parametro) con l'array dei playerID a cui inviare la notifica. Se non viene specificato
             niente, non verrà inviata nessuna notifica.
*/
$type = 'segments';

$sendTo = array('All');

$os->sendNotification($data, $type, $sendTo);

Invio notifica a tutti i dispositivi di uno specifico utente:

$data = array();    //Vedi esempio "Invio notifica"

$os->sendNotificationToUser($data, $user);

Invio notifica a più utenti:

$data = array();    //Vedi esempio "Invio notifica"

$users = array();   //Array di utenti (classe che implementa Mrapps/OnesignalBundle/Model/UserInterface)

$os->sendNotificationToMultipleUsers($data, $users);

Invio notifica a più Players:

$data = array();    //Vedi esempio "Invio notifica"

$players = array();   //Array di PlayerID

$os->sendNotificationToMultiplePlayers($data, $players);

Aggiunge un nuovo dispositivo (player):

$user = null;			//Utente a cui associare il nuovo Player
$playerID = '';			//ID del dispositivo su OneSignal
$extraData = array();		//Array di parametri aggiuntivi

$os->addPlayer($user, $playerID, $extraData);

Disattiva un dispositivo (player):

$playerID = 'ID del dispositivo su OneSignal';
$os->deactivatePlayer($playerID);

Disattiva tutti i dispositivi associati ad un utente:

$os->deactivateAllPlayersForUser($user);

About

Gestione notifiche OneSignal - Symfony2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •