From 6a41353a96e3d11fa59a9e5ccde8662d560e17f6 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 10 Jan 2017 14:35:30 +1100 Subject: [PATCH] Firebase notifications for Android (#1269) * revert error reporting * fix for non boolean output * Firebase notifications for Android --- app/Ninja/Notifications/PushFactory.php | 27 ++++++++++++++++--------- app/Services/PushService.php | 14 ++++++------- config/push-notification.php | 4 ++-- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/app/Ninja/Notifications/PushFactory.php b/app/Ninja/Notifications/PushFactory.php index e2f34c46be2d..6e69ac80bb7a 100644 --- a/app/Ninja/Notifications/PushFactory.php +++ b/app/Ninja/Notifications/PushFactory.php @@ -3,6 +3,7 @@ namespace App\Ninja\Notifications; use Davibennun\LaravelPushNotification\Facades\PushNotification; +use Illuminate\Support\Facades\Log; /** * Class PushFactory @@ -15,7 +16,6 @@ class PushFactory */ public function __construct() { - $this->certificate = IOS_PUSH_CERTIFICATE; } /** @@ -28,14 +28,15 @@ class PushFactory * @param $token * @param $message * @param $messageArray + * @param string $device - Type of device the message is being pushed to. * * @return void */ - public function customMessage($token, $message, $messageArray) + public function customMessage($token, $message, $messageArray, $device) { $customMessage = PushNotification::Message($message, $messageArray); - $this->message($token, $customMessage); + $this->message($token, $customMessage, $device); } /** @@ -51,11 +52,17 @@ class PushFactory * @return void */ - public function message($token, $message) + public function message($token, $message, $device) { - PushNotification::app($this->certificate) - ->to($token) - ->send($message); + try { + PushNotification::app($device) + ->to($token) + ->send($message); + } + catch(\Exception $e) { + Log::error($e->getMessage()); + } + } /** @@ -69,13 +76,13 @@ class PushFactory * * @param string $token - A valid token (can be any valid token) * @param string $message - Nil value for message - * + * @param string $device - Type of device the message is being pushed to. * @return array */ - public function getFeedback($token, $message = '') + public function getFeedback($token, $message = '', $device) { - $feedback = PushNotification::app($this->certificate) + $feedback = PushNotification::app($device) ->to($token) ->send($message); diff --git a/app/Services/PushService.php b/app/Services/PushService.php index 017426814bd8..759e0271cbff 100644 --- a/app/Services/PushService.php +++ b/app/Services/PushService.php @@ -30,10 +30,6 @@ class PushService */ public function sendNotification(Invoice $invoice, $type) { - if (! IOS_PUSH_CERTIFICATE) { - return; - } - //check user has registered for push notifications if(!$this->checkDeviceExists($invoice->account)) return; @@ -43,8 +39,10 @@ class PushService foreach($devices as $device) { - if(($device["notify_{$type}"] == TRUE) && ($device['device'] == 'ios')) - $this->pushMessage($invoice, $device['token'], $type); + if(($device["notify_{$type}"] == TRUE) && ($device['device'] == 'ios') && IOS_DEVICE) + $this->pushMessage($invoice, $device['token'], $type, IOS_DEVICE); + elseif(($device["notify_{$type}"] == TRUE) && ($device['device'] == 'fcm') && ANDROID_DEVICE) + $this->pushMessage($invoice, $device['token'], $type, ANDROID_DEVICE); } } @@ -57,9 +55,9 @@ class PushService * @param $token * @param $type */ - private function pushMessage(Invoice $invoice, $token, $type) + private function pushMessage(Invoice $invoice, $token, $type, $device) { - $this->pushFactory->message($token, $this->messageType($invoice, $type)); + $this->pushFactory->message($token, $this->messageType($invoice, $type), $device); } /** diff --git a/config/push-notification.php b/config/push-notification.php index bf7ba5c40ab9..02fe2af03100 100644 --- a/config/push-notification.php +++ b/config/push-notification.php @@ -16,8 +16,8 @@ return [ ], 'ninjaAndroid' => [ 'environment' =>'production', - 'apiKey' =>'yourAPIKey', - 'service' =>'gcm' + 'apiKey' =>env(FCM_API_TOKEN), + 'service' =>'fcm' ] ];