Great Ideas Erik !
Comments inline
On Wed, Feb 26, 2014 at 10:40 AM, Erik Jan de Wit <edewit(a)redhat.com> wrote:
Hi,
As you may have experienced or seen the cordova push plugin is not always
simple to get started with, there are still some things that are platform
specific even though compared to the 'original' it has improved there is
room for improvement. Here are some suggestions to make it even simpler:
Right now the API looks like this:
var pushConfig = {
// senderID is only used in the Android/GCM case
senderID: "<senderID e.g Google Project ID only for android>",
pushServerURL: "<pushServerURL e.g http(s)//host:port/context >",
variantID: "<variantID e.g. 1234456-234320>",
variantSecret: "<variantSecret e.g. 1234456-234320>",
alias: "<alias e.g. a username or an email address optional>"}
//badge and sound are iOS specific, and ignored on Androidpush.register(successHandler,
errorHandler, {"badge": "true", "sound": "true",
"ecb": "onNotification", pushConfig: pushConfig});
Suggestion number one, is to remove the successHandler and use that as the
callback for notifications:
push.register(onNotification, errorHandler, {"badge": "true",
"sound": "true", pushConfig: pushConfig});
Now the Javascript can verify that the callback is a function because it's
no longer a string and the need for a separate successHandler is overrated
as you will either get messages or your errorHandler gets invoked.
True but it would be nice if we can still pass optionally a function for
the registration successHandler, depending on the developer needs maybe I
still wants to do something with his backend once the registration is
suceesful. But I agree to have a default "hidden" function for that ... but
should be able to override it.
For iOS we have these badge and sound flags we could we get rid of those
as well? When you don't want a badge then just don't send it in the
message!? Then the pushConfig can be inlined making it look like this:
Not really understand here what you mean, could you elaborate a bit ?
push.register(onNotification, errorHandler, {
// senderID is only used in the Android/GCM case
senderID: "<senderID e.g Google Project ID only for android>",
pushServerURL: "<pushServerURL e.g http(s)//host:port/context >",
variantID: "<variantID e.g. 1234456-234320>",
variantSecret: "<variantSecret e.g. 1234456-234320>",
alias: "<alias e.g. a username or an email address optional>"
});
Till now all these changes can be made on the plugin, but we could take it
even further. Two things that are still platform dependent the senderId and
the variantID/secret. Now senderId is 'known' by UPS so why do we need to
specify it here? We could make senderId part of the response when
registering a device on UPS then the client doesn't need to specify it and
all configuration is in one place.
That will be a convention to skip the senderId when the variant is an
Android "type", yeah why not, I like that.
That leaves variantID/secret and that is the boldest proposal. How about
we make it possible to register for an application instead for a specific
variant? Then based on the meta information (deviceType, operatingSystem
and osVersion) we choose the right variant.
I like the idea but that can be tricky since multiple variants can have the
same meta information (like "Android Free"/"Android Premium"), we
should
think about a convention. But again I like the idea and it is worth
thinking about it.
If we do all of the above there will be no platform specific code at all
and the final script could look as simple as this:
push.register(function(event) {
alert(event.alert);
},
function(error) {
throw error;
}, {
pushServerURL: "<pushServerURL e.g http(s)//host:port/context >",
applicationID: "<applicationID e.g. 1234456-234320>",
secret: "<secret e.g. 1234456-234320>",
alias: "<alias e.g. a username or an email address optional>"
});
Push notifications in one statement for all devices :)
WDYT
Erik Jan
_______________________________________________
aerogear-dev mailing list
aerogear-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/aerogear-dev