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 :
Pour la récupération du numéro :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()) ; } } }
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
Partager