Looking at the JavaDoc for the getToken():
https://developers.google.com/android/reference/com/google/firebase/iid/FirebaseInstanceId.html#public-methods

"the master token or null if the token is not yet available"

looks like on the android lib we should not have it return null ?

On Sat, Jun 18, 2016 at 3:17 PM, Matthias Wessendorf <matzew@apache.org> wrote:
Hi,

when I launch a fresh and clean Cordova app (I am unable to reproduce this on our native Android HelloWorld), and open it the first time for registration, I am receiving a 400 status code from the server.

Uninstalling the app, and launching it again, show the the problem again, ONLY on Cordova...

This means either the deviceToken from Android is null or invalid (according to the pattern):
https://github.com/aerogear/aerogear-unifiedpush-server/blob/1.1.x-dev/jaxrs/src/main/java/org/jboss/aerogear/unifiedpush/rest/registry/installations/InstallationRegistrationEndpoint.java#L166-L170

Doing some debugging, on the server, I see the provided token is actually null.

Is there a race condition or so on the client, for the initial launch of the app ? 

I added some logging on the client (see [1]), and indeed, it looks like, on Cordova, it is actually null:
https://gist.github.com/matzew/e66fa3e2bda6c4dd4655fbe5d63ed755#file-gistfile1-txt-L12

Now... a few lines above... I see 'outdated' c2dm packages/permissions, and a GCM: "Missmatched messenger", it looks like something is still not correct.

Any thoughts ? 

-Matthias 

[1] https://github.com/matzew/aerogear-android-push/commit/1fa6aad53da4e1b9c44c59edd3086025b32a12d5



--
Matthias Wessendorf

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