Notifications Firebase ne s'inscrivent pas
Bonjour,
J'ai une application qui utilise les notifications Firebase. Elle doit pouvoir transmettre le numéro d'enregistrement à un serveur distant, et bien sûr recevoir les notifications en question.
J'ai fait le lien et l'import des fichiers de conf via l'assistant Firebase.
Au Manifest :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <service
android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service
android:name=".CustomFirebaseInstanceIDService"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service> |
Pour la récupération du numéro :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| public class CustomFirebaseInstanceIDService extends FirebaseInstanceIdService {
protected URI uri;
//Définition du serveur distant
protected HttpClient clientWeb;
protected HttpGet recupWeb;
protected HttpResponse reponseWeb;
//Identification
protected String imei;
@Override
public void onTokenRefresh() {
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
//Récupération de l'IMEI
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
imei = telephonyManager.getDeviceId();
clientWeb = new DefaultHttpClient() ;
try {
uri = new URI( [monServer]+ imei + ";chpsep;" + refreshedToken);
} catch (URISyntaxException e) {
e.printStackTrace();
}
recupWeb = new HttpGet( uri ) ;
try
{
//Lecture des informations
reponseWeb = clientWeb.execute( recupWeb ) ;
}
// Gestion des erreurs, affichage des messages concernant la connexion
catch( Exception e )
{
Log.e("Connection distante", e.getMessage()) ;
}
}
} |
Le problème c'est que je ne passe jamais dans ce code ! J'ai désinstallé, réinstallé l'appli, rien. J'ai vidé le cache et supprimé les fichiers, rien ! Impossible de récupérer ce fichu numéro, alors que toutes les docs que j'ai trouvées semblent dire que c'est correct comme ça.
Quand je push une notification à partir de la console Firebase, le poste ne la reçoit pas, ce qui semble confirmer que le poste ne s'inscrit pas du tout à la base...
Mais le plus étrange, c'est que j'ai testé cette même appli sur des postes en Android 4, et là, ils se sont inscrits, et j'ai récupéré les numéros ! Mais depuis Android 5, rien, totalement inerte...
Quelqu'un aurait une idée ? Une piste ? Une solution (on n'est pas loin de Noël, alors bon, pourquoi pas, j'ai été super sage, si, si !) ?
--------------------------------------------------------------------
En mode debug, j'obtiens ceci :
D/FirebaseInstanceId: background sync failed: SERVICE_NOT_AVAILABLE, retry in 10s
Ben oui, mais ça peut pas être le service côté Firebase, sinon ça fait 10 TRES longues secondes....
Côté smartphone, j'ai fait la mise à jour des Services Google Play, qui sont désormais en version 10... Mais toujours même réponse : D/FirebaseInstanceId: background sync failed: SERVICE_NOT_AVAILABLE, retry in 10s