From df76fa45c5ee8a57e75c75a2534e969014c0f52a Mon Sep 17 00:00:00 2001 From: choyeon Date: Fri, 19 Jun 2020 17:01:25 +0900 Subject: [PATCH] =?UTF-8?q?FCM=20push=20=ED=85=8C=EC=8A=A4=ED=8A=B8OK=20(A?= =?UTF-8?q?PNs=EB=8A=94=20=EC=98=B5=EC=85=98=20=EC=B6=94=EA=B0=80=ED=95=B4?= =?UTF-8?q?=EC=95=BC=ED=95=A8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/framework/push.php | 46 +++++++++---------- .../getMemberDeviceTokensByMemberSrl.xml | 12 +++++ 2 files changed, 35 insertions(+), 23 deletions(-) create mode 100644 modules/member/queries/getMemberDeviceTokensByMemberSrl.xml diff --git a/common/framework/push.php b/common/framework/push.php index c66b06caa..9fe83a68d 100644 --- a/common/framework/push.php +++ b/common/framework/push.php @@ -286,14 +286,20 @@ class Push try { - $tokens = $this->getDeviceToken(); + $tokens = $this->getDeviceTokens(); // Android FCM - $fcm_driver = $this->getDriver('fcm'); - $this->sent = $fcm_driver->send($this, $tokens['android']); + if(count($tokens['android'])) + { + $fcm_driver = $this->getDriver('fcm'); + $this->sent = $fcm_driver->send($this, $tokens['android']); + } // iOS APNs - $apns_driver =$this->getDriver('apns'); - $this->sent = $apns_driver->send($this, $tokens['ios']); + if(count($tokens['ios'])) + { + $apns_driver =$this->getDriver('apns'); + $this->sent = $apns_driver->send($this, $tokens['ios']); + } } catch(\Exception $e) { @@ -316,33 +322,27 @@ class Push * @return array * */ - protected function getDeviceToken(): array + protected function getDeviceTokens(): array { $member_srl_list = $this->getRecipients(); + $result = []; + $result['android'] = []; + $result['ios'] = []; $args = new stdClass; $args->member_srl = $member_srl_list; - $output = executeQueryArray('member.getMemberDeviceByMemberSrl', $args); - if(!$output->toBool()) + $output = executeQueryArray('member.getMemberDeviceTokensByMemberSrl', $args); + if(!$output->toBool() || !$output->data) { - return []; + return $result; } - $device_tokens = []; - $device_tokens['android'] = array_map(function($device){ - if('android' === $device->device_type) - { - return $device->device_token; - } - }, $output->data); - $device_tokens['ios'] = array_map(function($device){ - if('ios' === $device->device_type) - { - return $device->device_token; - } - }, $output->data); + foreach($output->data as $row) + { + $result[$row->device_type] = $row->device_token; + } - return $device_tokens; + return $result; } /** diff --git a/modules/member/queries/getMemberDeviceTokensByMemberSrl.xml b/modules/member/queries/getMemberDeviceTokensByMemberSrl.xml new file mode 100644 index 000000000..96e5c7656 --- /dev/null +++ b/modules/member/queries/getMemberDeviceTokensByMemberSrl.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +