Skip to content
This repository was archived by the owner on Jan 23, 2021. It is now read-only.

Commit 8bf5738

Browse files
new configuration option in config.yml : apns_server, apns_topic, gcm_server, all with default values
1 parent 4b4fec3 commit 8bf5738

File tree

5 files changed

+34
-5
lines changed

5 files changed

+34
-5
lines changed

DependencyInjection/Configuration.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,15 @@ public function getConfigTreeBuilder()
3030
->arrayNode('android')
3131
->children()
3232
->scalarNode('server_key')->end()
33+
->scalarNode('gcm_server')->defaultValue('android.googleapis.com')->end()
3334
->end()
3435
->end()
3536
->arrayNode('ios')
3637
->children()
3738
->scalarNode('push_certificate')->end()
3839
->scalarNode('push_passphrase')->end()
40+
->scalarNode('apns_server')->defaultValue('api.push.apple.com')->end()
41+
->scalarNode('apns_topic')->defaultValue('reliefapps_notification')->end()
3942
->enumNode('protocol')->values(array('legacy', 'http2'))->defaultValue('http2')->end()
4043
->end()
4144
->end()

DependencyInjection/ReliefappsNotificationExtension.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,12 @@ public function load(array $configs, ContainerBuilder $container)
2626
$loader->load('services.yml');
2727

2828
$container->setParameter('reliefapps_notification.android.server_key', $config['android']['server_key']);
29+
$container->setParameter('reliefapps_notification.android.gcm_server', $config['android']['gcm_server']);
2930
$container->setParameter('reliefapps_notification.ios.push_certificate', $config['ios']['push_certificate']);
3031
$container->setParameter('reliefapps_notification.ios.push_passphrase', $config['ios']['push_passphrase']);
3132
$container->setParameter('reliefapps_notification.ios.protocol', $config['ios']['protocol']);
33+
$container->setParameter('reliefapps_notification.ios.apns_server', $config['ios']['apns_server']);
34+
$container->setParameter('reliefapps_notification.ios.apns_topic', $config['ios']['apns_topic']);
3235
$container->setParameter('reliefapps_notification.device.class', $config['device']['class']);
3336
$container->setParameter('reliefapps_notification.model_manager_name', $config['model_manager_name']);
3437
}

Resources/Model/NotificationBody.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,18 @@ public function getActions()
246246
return $this->actions;
247247
}
248248

249+
/**
250+
* Add an action
251+
*
252+
* @return Array
253+
*/
254+
public function addAction($action)
255+
{
256+
$this->actions[] = $action;
257+
258+
return $this;
259+
}
260+
249261
/**
250262
* Set the value of Actions
251263
*

Resources/config/services.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
services:
22
reliefapps_notification.push_manager:
33
class: Reliefapps\NotificationBundle\Utils\PushManager
4-
arguments: ["%reliefapps_notification.ios.push_certificate%", "%reliefapps_notification.ios.push_passphrase%", "%reliefapps_notification.ios.protocol%", "%reliefapps_notification.android.server_key%", "@service_container"]
4+
arguments:
5+
- "%reliefapps_notification.ios.push_certificate%"
6+
- "%reliefapps_notification.ios.push_passphrase%"
7+
- "%reliefapps_notification.ios.protocol%"
8+
- "%reliefapps_notification.ios.apns_server%"
9+
- "%reliefapps_notification.ios.apns_topic%"
10+
- "%reliefapps_notification.android.server_key%"
11+
- "%reliefapps_notification.android.gcm_server%"
12+
- "@service_container"
513

614
reliefapps_notification.device.manager.doctrine:
715
class: Reliefapps\NotificationBundle\Doctrine\DeviceManager

Utils/PushManager.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,15 @@ class PushManager
1515

1616

1717

18-
public function __construct($ios_push_certificate, $ios_push_passphrase, $ios_protocol, $android_server_key, $container)
18+
public function __construct($ios_push_certificate, $ios_push_passphrase, $ios_protocol, $apns_server, $apns_topic, $android_server_key, $gcm_server, $container)
1919
{
2020
$this->iosCertificate = $ios_push_certificate;
2121
$this->iosPassphrase = $ios_push_passphrase;
2222
$this->iosProtocol = $ios_protocol;
23+
$this->apns_server = $apns_server;
24+
$this->apns_topic = $apns_topic;
2325
$this->android_server_key = $android_server_key;
26+
$this->gcm_server = $gcm_server;
2427
$this->container = $container;
2528
$this->device_manager = $container->get('reliefapps_notification.device.manager.doctrine');
2629
}
@@ -74,7 +77,7 @@ public function sendPushAndroid($devices, $body)
7477

7578
$logger = $this->container->get('logger');
7679
// ANDROID
77-
$url = 'https://android.googleapis.com/gcm/send';
80+
$url = "https://$this->gcm_server/gcm/send";
7881
$apiKey = $this->android_server_key;
7982

8083
$getToken = function($obj){ return $obj->getToken(); };
@@ -138,7 +141,7 @@ public function sendPushIOSHttp2($devices, $body)
138141
return false;
139142
}
140143
//$headers = array("authorization: ", "apns-id: ", "apns-expiration: ", "apns-priority: ", "apns-topic: ", "apns-collapse-id: ")
141-
$headers = array("apns-topic: org.reliefapps.emalsys");
144+
$headers = array("apns-topic: $this->apns_topic");
142145

143146
$fields_json = $body->getPayload(NotificationBody::PAYLOAD_JSON_IOS);
144147
$logger->debug("iOS Payload : " . $fields_json);
@@ -157,7 +160,7 @@ public function sendPushIOSHttp2($devices, $body)
157160

158161
foreach($devices as $device){
159162
$token = $device->getToken();
160-
$url = "https://api.push.apple.com/3/device/$token";
163+
$url = "https://$this->apns_server/3/device/$token";
161164
curl_setopt( $ch, CURLOPT_URL, $url );
162165

163166
$response = curl_exec($ch);

0 commit comments

Comments
 (0)