One Signal
Función
/** * * Función de enviado de notificaciones de One signal. * * @param (Array) $content -> dentro de un diccionario con los idiomas el mensaje de la notificación * @param (Array) $filters -> filtros de busqueda en one signal (user, group,...) hay que añadirlos como tags dentro de OneSignal * @param (CakeObj) $data_from_moncake -> datos que recibe la aplicación final * @return (Array) $return['succes'] (Boolean) -> true/false * @return (Array) $return['error'] (String)* -> Devuelve el error que dió one signal. * * @example * $content = array( * "en" => 'The user ' . $client->username . ' has been warned', * "es" => 'El usuario ' . $client->username . ' ha sido avisado' * ); * * if($oneSignalMessage->group_id > 0){ * $filters = ["field" => "tag", "key" => "group", "relation" => "=", "value" => $id]; * $included_segments = null; * } else { * $filters = null; * $included_segments = 'All'; * } * * $oneSignalResponse = $this->sendOnesignalNotifications($content, $filters, null, $included_segments); * * @since 18/1/2019 - Cakephp 3.6 * @link https://documentation.onesignal.com/reference */public function sendOnesignalNotifications ($content = null, $filters = null, $data_from_moncake = null, $included_segments = null) { //$this->autoRender = false; $this->loadModel('WebTexts'); $one_signal_api_key = $this->WebTexts->find('all', ['conditions' => ['name' => 'one_signal_api_key'] ] )->first()->webtext; $one_signal_app_id = $this->WebTexts->find('all', ['conditions' => ['name' => 'one_signal_app_id'] ] )->first()->webtext; $fields = array( 'app_id' => $one_signal_app_id, 'data' => array( 'data_from_moncake' => $data_from_moncake ), 'contents' => $content ); if ($filters != null) { $fields['filters'] = array($filters); } else { $fields['included_segments'] = [$included_segments]; }
$fields = json_encode($fields);
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications"); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json; charset=utf-8', 'Authorization: Basic ' . $one_signal_api_key )); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$response = curl_exec($ch); if (strpos($response, 'error') !== false) { $return['success'] = false; $return['error'] = json_decode($response)->errors[0]; } else { $return['success'] = true; } curl_close($ch);
return $return;}
Llamada
if($oneSignalMessage->group_id > 0){ $filters = ["field" => "tag", "key" => "group", "relation" => "=", "value" => $oneSignalMessage->group_id]; $included_segments = null;} else { $filters = null; $included_segments = 'All';}$oneSignalResponse = $this->sendOnesignalNotifications($content, $filters, null, $included_segments);