FAQ sur le SDK Android de Pushwoosh
- À quoi ressemblent un push token Android et un HWID ?
- Comment puis-je obtenir le push token de mon appareil Android ?
- Quelles sont les autorisations nécessaires et lesquelles sont facultatives ?
- Comment définir un UserID ?
- Quelle est la précision du nombre total d’abonnés Android ?
- Puis-je utiliser des balises HTML dans les notifications push envoyées à Android ?
- Comment définir une icône de notification dans Android Lollipop (et versions ultérieures) ?
- Utilisation du SDK Pushwoosh avec d’autres services FCM
- Utilisation de Pushwoosh avec les bibliothèques LeakCanary ou AppMetrica
- Supprimer une notification reçue d’un appareil
À quoi ressemblent un push token Android et un HWID ?
Anchor link toLes push tokens des appareils Android ont des longueurs variables (moins de 255 caractères) et commencent par APA91b, par exemple : APA91bFoi3lMMre9G3XzR1LrF4ZT82_15MsMdEICogXSLB8-MrdkRuRQFwNI5u8Dh0cI90ABD3BOKnxkEla8cGdisbDHl5cVIkZah5QUhSAxzx4Roa7b4xy9tvx9iNSYw-eXBYYd8k1XKf8Q_Qq1X9-x-U-Y79vdPq
Veuillez également noter que les tokens contiennent souvent un préfixe séparé par un deux-points avant APA91b, par exemple eQnyCE6ULAQ:APA91bGrh4ya3b_owo9tshZNVAGhZdGMGb3sA5HbM...
Pushwoosh utilise des UUID comme HWID, c’est-à-dire des chaînes de 32 caractères alphanumériques générées aléatoirement : 123e4567-e89b-12d3-a456-426655440000
Comment puis-je obtenir le push token de mon appareil Android ?
Anchor link toVous pouvez obtenir le push token de votre appareil Android dans le journal de la console. Utilisez l’outil logcat dans Android Studio.
Ouvrez monitor.bat dans %USERPROFILE%\AppData\Local\Android\sdk\tools\monitor.bat
, connectez votre appareil à votre PC et autorisez le débogage USB dans les paramètres Android. Exécutez votre application sur l’appareil. Localisez /registerDevice
, trouvez le push token de votre appareil pour l’utiliser plus tard dans les Appareils de Test.

Quelles sont les autorisations nécessaires et lesquelles sont facultatives ?
Anchor link toLors de son installation sur un appareil Android, l’application demandera les autorisations suivantes en lien avec le SDK Pushwoosh :
<!-- FCM se connecte aux services Firebase. --> <uses-permission android:name="android.permission.INTERNET"/>
<!-- Empêche le processeur de se mettre en veille lorsqu'un message est reçu. --> <uses-permission android:name="android.permission.WAKE_LOCK"/>
<!-- Cette autorisation est utilisée pour déterminer si l'appareil peut accéder au réseau. --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- Cette application a l'autorisation de s'enregistrer et de recevoir des messages de données. --> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
Notre SDK ne demande pas d’autorisation pour accéder aux images, aux contacts de l’appareil, etc.
Comment définir un UserID ?
Anchor link toVous avez la possibilité de définir un identifiant d’utilisateur (UserID), qui peut être un ID Facebook, un nom d’utilisateur, un e-mail ou tout autre identifiant d’utilisateur unique. Cela vous permet de faire correspondre les données et les événements sur plusieurs appareils associés au même utilisateur. Pour définir l’UserID, appelez la méthode setUserId.
Exemple
Pushwoosh.getInstance().setUserId("testUser");
Quelle est la précision du nombre total d’abonnés Android ?
Anchor link toPushwoosh supprime les appareils Android désabonnés de la base de données après avoir reçu la réponse « NotRegistered » de FCM, qui peut être renvoyée après la deuxième tentative de joindre un appareil spécifique. Cela signifie que vous devez envoyer 2 notifications push à un appareil désabonné pour qu’il soit supprimé de notre base de données. Voici le scénario le plus courant décrit dans la documentation FCM :
- Votre abonné désinstalle l’application.
- Pushwoosh envoie un message au serveur FCM.
- Le serveur FCM envoie le message à l’appareil de votre utilisateur.
- Le client FCM sur l’appareil reçoit le message et détecte que votre application a été désinstallée ; les détails de la détection dépendent de la plateforme sur laquelle l’application s’exécute.
- Le client FCM sur l’appareil informe le serveur FCM que l’application a été désinstallée.
- Le serveur FCM marque l’ID d’enregistrement pour suppression.
- Pushwoosh envoie un autre message à FCM.
- FCM renvoie un message NotRegistered.
- Pushwoosh supprime le push token de votre base d’utilisateurs.
La suppression complète de l’ID d’enregistrement de FCM peut prendre un certain temps. Il est donc possible qu’un message envoyé à l’étape 7 ci-dessus reçoive un ID de message valide en réponse, même si le message ne sera pas livré à l’application cliente.
Puis-je utiliser des balises HTML dans les notifications push envoyées à Android ?
Anchor link toOui, sous Android, vous pouvez utiliser les balises HTML suivantes pour modifier l’apparence d’une notification push :
<span style="color: green;"><b><i><span style="text-decoration: underline;">Hello world!Hello hi hey</span></i></b></span>
Placez ces balises HTML dans le champ de saisie Message, et utilisez-les également dans la requête API. Notez que certains appareils Android peuvent ne pas traiter correctement ces balises HTML, mais la plupart des appareils que nous avons utilisés pour les tests ont affiché la mise en forme correctement.
Comment définir une icône de notification dans Android Lollipop (et versions ultérieures) ?
Anchor link toDans Android Lollipop, les icônes ont été modifiées pour être uniquement blanches. Par conséquent, si vous sélectionnez targetSdkVersion >= 21 dans votre fichier AndroidManifest.xml, Android n’utilisera que le canal alpha de l’icône. Pour en savoir plus sur ce comportement, consultez la documentation Android.
Le système ignore tous les canaux non-alpha dans les icônes d’action et dans l’icône de notification principale. Considérez que ces icônes seront uniquement alpha. Le système dessine les icônes de notification en blanc et les icônes d’action en gris foncé. Cela est hors du contrôle du SDK Pushwoosh.
1. Créez l’icône de notification conformément aux directives Android. Selon la documentation, le système ignorera toutes les couleurs. 1.1. Nommez l’icône pw_notification.png et placez-la dans le dossier res/drawable. Le SDK Pushwoosh utilisera cette icône par défaut pour les notifications. 1.2. Alternativement, vous pouvez utiliser l’API Remote et définir la valeur du paramètre "android_icon"
sur l’image de l’icône (sans l’extension de fichier).
Utilisation du SDK Pushwoosh avec d’autres services FCM
Anchor link toVous pouvez utiliser Pushwoosh avec d’autres SDK qui utilisent FCM pour la messagerie push. Pour ce faire, vous devez créer un service routeur pour distribuer les événements entre les services. Tout d’abord, ajoutez la dépendance pushwoosh-firebase à côté du module Pushwoosh principal :
implementation 'com.pushwoosh:pushwoosh-firebase:6.0.3'
Créez la classe de routage :
import com.pushwoosh.firebase.PushwooshFcmHelper;
class FirebaseMessagingRouterService : FirebaseMessagingService() {
override fun onNewToken(token: String?) { super.onNewToken(token) PushwooshFcmHelper.onTokenRefresh(token) sendTokenToAnotherService(token) }
override fun onMessageReceived(remoteMessage: RemoteMessage) { if (PushwooshFcmHelper.isPushwooshMessage(remoteMessage)) { //il s'agit d'un push Pushwoosh, le SDK le gérera automatiquement PushwooshFcmHelper.onMessageReceived(this, remoteMessage) } else { //il ne s'agit pas d'un push Pushwoosh, vous devez le gérer vous-même dispatchNonPushwooshMessage(remoteMessage); } }
private fun dispatchNonPushwooshMessage(remoteMessage: RemoteMessage) { // Implémentez vos logiques de gestion des pushs ici }}
import com.pushwoosh.firebase.PushwooshFcmHelper;
public class FirebaseMessagingRouterService extends FirebaseMessagingService {
@Override public void onNewToken(String token) { super.onNewToken(token); PushwooshFcmHelper.onTokenRefresh(token); sendTokenToAnotherService(token); }
@Override public void onMessageReceived(RemoteMessage remoteMessage) { if (PushwooshFcmHelper.isPushwooshMessage(remoteMessage)) { //il s'agit d'un push Pushwoosh, le SDK le gérera automatiquement PushwooshFcmHelper.onMessageReceived(this, remoteMessage); } else { //il ne s'agit pas d'un push Pushwoosh, vous devez le gérer vous-même dispatchNonPushwooshMessage(remoteMessage); } }
private void dispatchNonPushwooshMessage(RemoteMessage remoteMessage) { // Implémentez vos logiques de gestion des pushs ici }}
Enregistrez les routeurs dans votre AndroidManifest.xml :
<service android:name=".FirebaseMessagingRouterService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter></service>
Utilisation de Pushwoosh avec les bibliothèques LeakCanary ou AppMetrica
Anchor link toLorsque vous intégrez des outils d’analyse tels que LeakCanary, AppMetrica ou autres, ces bibliothèques démarrent un nouveau processus, créant une nouvelle instance de l’application. Comme vous ne pouvez pas écouter les notifications push dans un autre processus, cela entraîne le lancement d’une exception java.lang.NullPointerException
.
Si vous appelez registerForPushNotifications
à l’intérieur de Application.onCreate()
, vous devez vérifier si vous êtes dans le processus principal de l’application. Utilisez le code suivant pour effectuer cette vérification :
List<ActivityManager.RunningAppProcessInfo> runningAppProcesses = ((ActivityManager) getSystemService(Context.ACTIVITY_SERVICE)).getRunningAppProcesses();if (runningAppProcesses != null && runningAppProcesses.size() != 0) { for (ActivityManager.RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses) { boolean isCurrentProcess = runningAppProcessInfo.pid == android.os.Process.myPid(); boolean isMainProcessName = getPackageName().equals(runningAppProcessInfo.processName); if (isCurrentProcess && isMainProcessName) {
Pushwoosh.getInstance().registerForPushNotifications(...); break; } }}
Supprimer des notifications spécifiques reçues d’un appareil localement
Anchor link toSi vous souhaitez supprimer une notification push non pertinente lors de l’exécution d’une action spécifique dans votre application, vous pouvez utiliser l’approche suivante :
public class MainActivity extends AppCompatActivity {
List<NotificationCreatedEvent> savedPushes = new ArrayList<>();
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Pushwoosh.getInstance().registerForPushNotifications();
PushwooshNotificationSettings.setMultiNotificationMode(true);
findViewById(R.id.clear_button).setOnClickListener( v -> { cancelPushes(); });
EventBus.subscribe(NotificationCreatedEvent.class, event -> { try { if (event.getMessage().getCustomData() == null) return;
//annuler les pushs uniquement avec un drapeau spécifique if (new JSONObject(event.getMessage().getCustomData()).getBoolean("cancel")) { savedPushes.add(event); } } catch (JSONException e) { } }); } private void cancelPushes() { NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
if (manager == null) { return; }
for (NotificationCreatedEvent event : savedPushes) { manager.cancel(event.getMessageTag(), event.getMessageId()); } }}
Partagez vos commentaires avec nous
Anchor link toVos commentaires nous aident à créer une meilleure expérience, nous serions donc ravis de connaître votre avis si vous rencontrez des problèmes lors du processus d’intégration du SDK. Si vous rencontrez des difficultés, n’hésitez pas à nous faire part de vos réflexions via ce formulaire.