[Aerogear-users] categories have been hijacked

Kelvin Lunsford kelvin at qantel.com
Mon Sep 12 15:13:59 EDT 2016


This is not caused by the GSON bug. It is not a problem in Aerogear Android Store.

Topics is more restrictive than JSON.

When Topics was implemented this validation check was added to Aerogear Android Push:

    private static final String FCM_TOPIC_PATTERN = "[a-zA-Z0-9-_.~%]{1,900}";

    private static void validateCategories(String... categories) {
        for (String category : categories) {
            if (!category.matches(FCM_TOPIC_PATTERN)) {
                throw new IllegalArgumentException(String.format("%s does not match %s", category, FCM_TOPIC_PATTERN));
            }
        }
    }

This validation check should not be required.  Topics was supposed to be implemented into categories transparently.  Instead of a validation check the Topic names should have been encoded (i.e. percent encoding) before being given to the Topics interface to avoid this Topics restriction.  Category names should not be stored as Topic encoded because they might be used for non-Topic notifications (e.g. a push with a category and an alias).

- Kelvin


From: aerogear-users-bounces at lists.jboss.org [mailto:aerogear-users-bounces at lists.jboss.org] On Behalf Of Daniel Passos
Sent: Monday, September 12, 2016 9:10 AM
To: aerogear-users at lists.jboss.org
Subject: Re: [Aerogear-users] categories have been hijacked

Hey Kelvin,
It's a knowledge[1] bug fixed[2] in AeroGear Android Store cause by a GSON bug[3]. I'm going to create a new version of AeroGear Android Push library using the new Store version to fix this bug.

[1] https://issues.jboss.org/browse/AGDROID-564
[2] https://github.com/aerogear/aerogear-android-store/pull/41
[3] https://github.com/google/gson/issues/210

On Mon, Sep 12, 2016 at 4:33 AM, Matthias Wessendorf <matzew at apache.org<mailto:matzew at apache.org>> wrote:
Hello,

sorry for the problems you are encountering with our UPS and its client side libraries. I've created a JIRA ticket to capture the problem:
https://issues.jboss.org/browse/AGDROID-565

greetings,
Matthias

On Fri, Sep 9, 2016 at 10:40 PM, Kelvin Lunsford <kelvin at qantel.com<mailto:kelvin at qantel.com>> wrote:
My categories no longer work on android because I use ":" characters in my category names.

Last May aerogear-android-push:3.0.0 was released with Topics and now the android plugin refuses to accept my category names with non-Topic compatible characters.

IOS still works with non-Topic compatible characters, but there is a regression in android.

I warned you.  Category names should have been percent encoded before applying them to the Topic interfaces in the plugin and UPS.  It would have prevented the regression, but nobody did it.

Now notifications are broken on the android version of my app.

If I want to make it work with the current plugin I will have to change my category names to avoid using non-topic compatible characters.  If I make the change it will affect my android and IOS mobile apps, and I will have to change the system that posts the notification requests to UPS so it also changes the names.

If no one responds with a "No, wait, we'll fix it!" that is what I will do.

- Kelvin


From: Kelvin Lunsford
Sent: Tuesday, August 18, 2015 3:25 PM
To: 'aerogear-users at lists.jboss.org<mailto:aerogear-users at lists.jboss.org>'
Subject: RE: [Aerogear-users] categories have been hijacked

You need topic compliant percent encoding/decoding functions to use on category names when setting them to/from topic names.

You can encode by using the android.net.Uri.encode() function and replacing the characters missed by the encode() function.  Uri.decode() will work as is.

Equivalent encoding would have to be done in java for UPS when it accesses a topic.

- Kelvin

From: aerogear-users-bounces at lists.jboss.org<mailto:aerogear-users-bounces at lists.jboss.org> [mailto:aerogear-users-bounces at lists.jboss.org] On Behalf Of Summers Pittman
Sent: Tuesday, August 18, 2015 6:26 AM
To: aerogear-users at lists.jboss.org<mailto:aerogear-users at lists.jboss.org>
Subject: Re: [Aerogear-users] categories have been hijacked



On Mon, Aug 17, 2015 at 6:01 PM, Kelvin Lunsford <kelvin at qantel.com<mailto:kelvin at qantel.com>> wrote:
Summers,

What happens if a category name is not GCM topic compatible?
That is a good question.  Currently you will get a error because it fails validation.  We've created a JIRA to track this issue here : https://issues.jboss.org/browse/AGPUSH-1501

Keep the hits coming.

- Kelvin



From: aerogear-users-bounces at lists.jboss.org<mailto:aerogear-users-bounces at lists.jboss.org> [mailto:aerogear-users-bounces at lists.jboss.org<mailto:aerogear-users-bounces at lists.jboss.org>] On Behalf Of Summers Pittman
Sent: Tuesday, August 11, 2015 10:03 AM

To: aerogear-users at lists.jboss.org<mailto:aerogear-users at lists.jboss.org>
Subject: Re: [Aerogear-users] categories have been hijacked

Kelvin,

For your tracking purposes : https://issues.jboss.org/browse/AGPUSH-1493

On Tue, Aug 11, 2015 at 8:31 AM, Summers Pittman <supittma at redhat.com<mailto:supittma at redhat.com>> wrote:


On Tue, Aug 11, 2015 at 12:43 AM, Kelvin Lunsford <kelvin at qantel.com<mailto:kelvin at qantel.com>> wrote:
Hi Summers,

GCM topic messages go to all devices registered for the topic. Topic notifications cannot be restricted to an alias or list of aliases.

The way it worked before, and still works on ios, you can send a command to UPS with an "alias" name AND a "categories" name and it will only go to devices that have registered using that "alias" name AND that "categories" name.  UPS finds which devices meet the selection criteria and push notification requests are sent for those devices.

Requests with aliases and categories can target specific users in a group.

With real "categories" you can segment users into groups, so every device can be assigned a category, and sub-groups can be defined by using more than one category per device.  This is useful for geographic or organizational targeting.

I have no problem with GCM topics. Just make it a new feature.  Give me back my categories.

So the goal isn't to replace or hijack categories with topics. The goal is to leverage Google's API fully and transparently to the UPS user so that we make fewer calls and provide a better experience.  You have some great use cases that haven't been brought up.  Keep in mind that the PRs open right now are a "first draft" of the technology.  Feel free to join in on the discussion about topics on aerogear-dev.  It is really important we do this right and I think you can help with that.

Summers


- Kelvin


---------------------------------------------------------------------------------------
From: aerogear-users-bounces at lists.jboss.org<mailto:aerogear-users-bounces at lists.jboss.org> [mailto:aerogear-users-bounces at lists.jboss.org<mailto:aerogear-users-bounces at lists.jboss.org>] On Behalf Of Summers Pittman
Sent: Monday, August 10, 2015 6:12 PM
To: aerogear-users at lists.jboss.org<mailto:aerogear-users at lists.jboss.org>
Subject: Re: [Aerogear-users] categories have been hijacked


>
>On Mon, Aug 10, 2015 at 8:36 PM, Kelvin Lunsford <kelvin at qantel.com<mailto:kelvin at qantel.com>> wrote:
>Setting "categories" in the push payload was working for android and ios in cordova push plugin 1.1.1.
>
>For version 2.0.2 "categories" only works for ios.
>
>It looks like "categories" is being hijacked in android for a GCM feature called "topics".
>
>I liked "categories".  I was using it.  Now it's gone.  GCM topics is not a drop-in replacement.  It's not the same thing.

What do categories do that topics do not do?

>New features should get new names and new commands.
>
>- Kelvin


_______________________________________________
Aerogear-users mailing list
Aerogear-users at lists.jboss.org<mailto:Aerogear-users at lists.jboss.org>
https://lists.jboss.org/mailman/listinfo/aerogear-users



_______________________________________________
Aerogear-users mailing list
Aerogear-users at lists.jboss.org<mailto:Aerogear-users at lists.jboss.org>
https://lists.jboss.org/mailman/listinfo/aerogear-users


_______________________________________________
Aerogear-users mailing list
Aerogear-users at lists.jboss.org<mailto:Aerogear-users at lists.jboss.org>
https://lists.jboss.org/mailman/listinfo/aerogear-users



--
Matthias Wessendorf

blog: http://matthiaswessendorf.wordpress.com/
twitter: http://twitter.com/mwessendorf

_______________________________________________
Aerogear-users mailing list
Aerogear-users at lists.jboss.org<mailto:Aerogear-users at lists.jboss.org>
https://lists.jboss.org/mailman/listinfo/aerogear-users



--
-- Passos
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/aerogear-users/attachments/20160912/8157749f/attachment-0001.html 


More information about the Aerogear-users mailing list