Matthias,
Thanks for the prompt and helpful reply.
We had a quick look at the stacking, as expected it seems to be for
Android (which is no surprise at all). I am not an expert on iOS (or
anything else) but as far as I know, stacking is impossible on iOS.
We’re spending more and more time on getting the notifications right,
its turned out to be significantly more complicated than we thought and
one of the areas where we have two distinct lines of code in our Cordova
app.
I’ll raise JIRA for our ideas and let people ponder on that. In the
last three weeks, we’ve tried four biggish vendors for Push
notifications and we’ve had issues with all of them. Amazon, Parse,
Urban Airship, OneSignal. Some are money issues (thats always the way),
some are incredibly inflexible (Amazon), some don’t handle
content-available, some don’t really support Cordova. Its been
hardwork and we really, really want UPS to work for us. We’re tired of
testing notifications on yet another system :)
I’ll put in on github but the code is pretty simple so I’ll put it
here as well as we’re not big users off github and it might takes us a
while to work it out. We’re rather old-school and like Emacs, Perl and
dead simple stuff like that. We’ll try and work it out though
Best wisher,
Rob
This is untested code as-is, we just pulled it straight out the testing
file. We know it works in our system but I haven’t tested this
simplified version. The github one will be tested though.
```
#!/usr/bin/perl -w
use strict;
use warnings;
use Net::Curl::Easy qw(/^CURLOPT_.*/);
use JSON;
sub SendAeroGearNotification
{
my ($url , $username , $password , $config) = @_;
my $curl = Net::Curl::Easy->new;
my $json = JSON->new();
my $response_body;
my $json_string = $json->encode($config);
print "json string $json_string\n";
$curl->setopt( CURLOPT_URL, $url);
$curl->setopt( CURLOPT_SSL_VERIFYHOST , 0);
$curl->setopt( CURLOPT_SSL_VERIFYPEER , 0);
$curl->setopt( CURLOPT_USERPWD , "$username:$password");
$curl->setopt( CURLOPT_HTTPHEADER, ['Content-Type:
application/json' ,
'Accept: application/json']);
$curl->setopt( CURLOPT_POST , 1);
$curl->setopt( CURLOPT_POSTFIELDS , $json_string);
$curl->setopt( CURLOPT_WRITEDATA , \$response_body);
$curl->perform;
print "AeroGear Reponse=".Dumper($response_body);
}
my $notification_config = {
variants => [ “<<VARIANT ID>>“ ] ,
alias => [ “alias1” , “alias2” , “alias3”
] ,
ttl => 600 ,
message => {
alert => $contents ,
'content-available' => JSON::true ,
data => {
key1 => value1 ,
key2 => value2
}
}
};
SendAeroGearNotification("https://<<OPENSHIFT GEAR
NAME>>.rhcloud.com/ag-push/rest/sender" ,
“<<USERNAME>>“ ,
“<<PASSWORD>>” ,
$notification_config);
````
On 25 Nov 2015, at 10:07, Matthias Wessendorf wrote:
On Wed, Nov 25, 2015 at 10:14 AM, Rob Willett <
rob.aerogear(a)robertwillett.com> wrote:
> Hi,
>
> We’ve got the Unified Push Server working on the OpenShift
> platform.
> No real issues once we’d understood the point of aliases.
>
> We can send notifications quite happily and see whats going on. We
> use
> Perl for our backend servers and so we wrote a small Perl interface.
> If
> anybody wants the code for the Perl interface let me know and we’ll
> pass it on. We can’t claim a lot of credit for a simple piece of
> code
> :)
>
sure, I think that would be awesome, if you could publish it on
github.
We will promote if for other perl users!
>
> Anyway, one of edge use-cases would be to delete notification or set
> of
> notifications when the app is running but in the background on iOS.
>
> We want to do this as the user can receive a high number of
> notifications (> 10) when the app is in the background. Notifications
> come in groups and provide traffic updates, so a user may get a new
> group of 3-4 traffic updates, this new group completely supersedes
> ANY
> previous update. Our data is valuable when fresh and useless when
> over
> 10 minutes old.
>
> Whilst we can simply ignore old notifications, UX testing has shown
> the
> users don’t like having old notifications sitting round. We know
> that
> the users can delete them individually or delete the lot from the
> notification drawer OR can simply bring the app out of the background
> BUT they don’t like doing that.
>
> So what we want to do is delete old notifications, we were hoping for
> the ability to call a JavaScript function with say a parameter to
> identify notifications by a group or something, but we could accept
> deleting the lot and inserting local notifications instead.
>
> We know that we can send content-available and have stuff pulled from
> a
> server in the background. This option is quite difficult for us and
> has
> some complexity identifying when the app is not started up. The
> simplest
> option is delete some or all of the notifications.
>
> Does anybody know if this is possible or any other suggestions?
>
I think that's an interesting idea. Erik Jan recently did an update
for
message, on Cordova, to actually stack em:
https://github.com/aerogear/aerogear-cordova-push/pull/81
Perhaps we could have a 'delete' feature too. Mind filing a JIRA
against:
https://issues.jboss.org/projects/AGCORDOVA
(you need to have an account in order create tickets)
Cheers!
Matthias