FAQ sur MobPush Android

L'interface click-to-jump par défaut est-elle configurée, est-elle valable pour tous les canaux ?

Uniquement valable pour les chaînes MobPush, Meizu, Xiaomi, Huawei, OPPO, VIVO, non valable pour les chaînes FCM.

Comment obtenir les paramètres de rappel

  • Lorsque le processus est actif, vous pouvez voir les détails de la notification dans notre écouteur de rappel, qui peuvent être traités en fonction des paramètres de rappel. Pour plus de détails, veuillez vous référer à API Interface->Push Listening Interface.
  • Lorsque le processus est tué, la surveillance des rappels n'est pas disponible, mais cliquer sur la notification et ouvrir la page de démarrage de l'application déclenchera onCreate ou onNewIntent de démarrage de l'activité, et obtiendra l'intention renvoyée via getIntent pour obtenir les détails de la notification.
  • Remarque : PushSDK fournit une méthode d'analyse pour obtenir des paramètres de rappel, mais la notification du fournisseur vise principalement à obtenir des champs supplémentaires et n'analyse pas toutes les informations. Aller à la page d'accueil pour obtenir les paramètres
JSONArray jsonArray =  MobPushUtils.parseMainPluginPushIntent(getIntent());
System.out.println("-------------JsonPushData打印查看:"+jsonArray);

instructions de retour

retour champ illustrer
"identifiant":"4bu9702gmq4mvl3myo" identifiant ID de tâche de notification, seules les notifications de fournisseur ont ce champ
{"valeur clé"} champ supplémentaire Le champ de la pièce jointe doit être précisé, s'il n'est pas précisé, il n'apparaîtra pas, seul le fabricant notifie ce champ
{"from_tcp":true} from_tcp Si le message provient du canal MobPushTCP, vrai : oui
{"msg":"MobPushNotifyMessage{}"} msg Corps du message, l'objet est MobPushNotifyMessage, seuls les messages du canal MobPushTCP ont ce champ
{"canal":"mobpush"} canaliser nom du canal

2.2 Saut de schéma pour obtenir des paramètres, veuillez vous référer à l'interface API-> saut de schéma pour plus de détails

JSONArray jsonArray = MobPushUtils.parseSchemePluginPushIntent(getIntent());
System.out.println("-------------JsonScheme打印查看:"+jsonArray);

instructions de retour

retour champ illustrer
{"from_tcp":true} from_tcp Si le message provient du canal MobPushTCP, vrai : oui
{"msg":"MobPushNotifyMessage{}"} msg Corps du message, l'objet est MobPushNotifyMessage, seuls les messages du canal MobPushTCP ont ce champ
{"valeur clé"} champ supplémentaire Le champ de la pièce jointe doit être spécifié, il est recommandé de ne pas utiliser l'url comme clé
{"mobpush_link_k":"mlink://com.mob.mobpush.link"} schème adresse du schéma
{"mobpush_link_v":"schemeKey=schemeValue"} paramètre de schéma Les paramètres de schéma transportés sous l'adresse de schéma
{"id":"4brfm8nti9aj1arf28"} identifiant ID de tâche push
{"canal":"xiaomi"} canaliser nom du canal
{"schemeLink":"mlink://com.mobpush.demo2"} schème adresse du schéma
{"schemeKey":"schemeValue"} paramètre de schéma Les paramètres du schéma transportés sous l'adresse du schéma (Huawei, VIVO, OPPO)
{"schemeKey":"schemeValue","schemeUrl":"mlink://com.mob.mobpush.link"} schemaUrl Le paramètre de schéma (flyme) porté sous l'adresse de schéma

3. Si vous n'utilisez pas la méthode d'analyse fournie par PushSDK, vous pouvez vous référer aux méthodes suivantes pour obtenir les paramètres de rappel

private void dealPushResponse(Intent intent) {
        Bundle bundle = null;
        if (intent != null) {
            bundle = intent.getExtras();
            if (bundle == null) {
                Log.e("PushResponse","bundle的值为空"+bundle);
                return;
            }
            else {
                Set<String> keySet = bundle.keySet();
                if (keySet == null || keySet.isEmpty()) {
                    return;
                }
                for (String key  : keySet) {
                    //通过key获取bundle中的key对应的值。就是附加数据了
                    Log.e("PushResponse","bundlekey===========================点击信息"+key);
                }
                Log.e("PushResponse","bundle===========================点击信息"+bundle.toString());
            }
        }
    }

Quand OPPO pousse, il pousse selon tous les groupes de personnes, pourquoi certains appareils OPPO ne peuvent pas le recevoir

Étant donné que le push OPPO correspond à tous les groupes de personnes, ce type de push complet a une règle de limite de temps.Lorsque le montant total est poussé, les appareils OPPO nouvellement enregistrés le jour ne prendront pas effet et prendront effet le lendemain. La poussée complète sera comptée dans le groupe d'appareils cibles, règle T+ 1. Lorsque vous poussez vers un seul appareil OPPO, il n'y a pas de restriction de règle T + 1, et cela prendra effet immédiatement après l'enregistrement réussi.

Y aura-t-il un rappel lorsque le fabricant poussera et ouvrira la notification ?

Tous les rappels ne sont pas disponibles. OPPO Push n'a pas de rappels pour recevoir des notifications et ouvrir des notifications ; FCM Push n'a pas de rappels pour recevoir des notifications et ouvrir des notifications lorsque l'application est en arrière-plan ou que le processus d'application est arrêté.

Lorsque l'application est au premier plan, la poussée du canal MobPush ne peut pas être reçue

Lorsque l'application est au premier plan, la poussée du canal MobPush ne peut pas être reçue. Veuillez suivre les étapes ci-dessous pour vérifier :
1. Vérifiez si le réseau téléphonique est normal. 2. Vérifiez
l'autorisation de notification du téléphone est
si

Appelez MobPush.setClickNotificationToLaunchMainActivity(), définissez-le sur false et cliquez sur la notification pour ne pas démarrer la page d'accueil. Pourquoi cela ne fonctionne-t-il pas après l'avoir défini ?

Cette méthode ne fonctionne pas pour tous les canaux. Actuellement, elle ne fonctionne que pour les canaux MobPush, les canaux Meizu et les canaux Xiaomi. Pour les canaux Huawei, les canaux OPPO et les canaux FCM, peu importe que cette méthode soit appelée ou non en raison de différents implémentations de chaque fabricant. Affecter ces trois canaux, la valeur par défaut est de démarrer la page d'accueil.

Problème de commutateur d'autorisation de notification des appareils OPPO et VIVO

OPPO :
avant de se connecter à OPPO PUSH, l'autorisation de la barre de notification de l'application est désactivée par défaut ; après la connexion à OPPO PUSH, le téléphone OPPO avec la version ColorOS3.1 à 5.0, après que l'utilisateur a activé l'application correspondante, l'autorisation de la barre de notification sera activé par défaut. En particulier, si l'utilisateur utilise une ancienne version de l'application (non intégrée à OPPO PUSH) et désactive manuellement l'autorisation de la barre de notification de l'application, seul l'utilisateur peut désinstaller manuellement l'ancienne version de l'application, puis installez la nouvelle version (intégrée à OPPO PUSH) et activez-la. La barre est activée par défaut. Avec la méthode d'installation de superposition, l'autorisation de la barre de notification ne sera pas activée par défaut ; pour les téléphones mobiles de ColorOS5.1 et versions ultérieures, l'autorisation de la barre de notification est désactivée par le système de manière uniforme, et l'utilisateur doit manuellement ouvrez-le.

VIVO :
Intégré à VPUSH, le commutateur d'autorisation de notification générale est activé par défaut, mais le commutateur de catégorie ci-dessous est désactivé par défaut et doit être activé manuellement par l'utilisateur.

Le téléphone mobile Mi ne peut pas recevoir de push

Si l'application mobile (APP) n'est pas publiée sur le Xiaomi Store, l'équipe de push de Xiaomi aura le droit de ne plus fournir de services de push. À la suite de l'examen de sécurité régulier de l'application du développeur, le Mi App Store ajuste l'autorisation de poussée de l'application. Si l'application du développeur ne réussit pas l'examen de sécurité régulier du Mi App Store, Xiaomi a le droit de résilier unilatéralement l'accord, ou fermez immédiatement l'autorisation push de l'application jusqu'à ce que l'application passe l'examen de sécurité du Mi App Store et soit publiée sur le Mi App Store. Pour plus de détails, veuillez vous référer à: lien

Si le téléphone mobile Xiaomi ne peut pas recevoir le push, veuillez vérifier si l'autorisation de notification est activée. En même temps, l'appareil Xiaomi commence à utiliser le filtrage des notifications sans importance dans la barre de notification de MIUI9, et vérifiez s'il y a une notification du application correspondante dans la notification sans importance dans la barre de notification.

L'autorisation de notification d'application n'est pas activée et la notification push ne peut pas être reçue après son activation

Au début, l'autorisation de notification de l'application n'était pas activée. Lorsque l'autorisation de notification est activée, veuillez arrêter le processus, redémarrer l'APP et pousser à nouveau.

Le rappel de réception et le rappel de notification de clic seront-ils appelés ?

incertain. Divisés en canaux push, différents fabricants ont des méthodes de mise en œuvre différentes, ce qui entraîne certains rappels, certains rappelant uniquement la notification de clic et d'autres ne rappelant pas.

Le canal MobPush, le rappel de réception et le rappel de notification de clic seront appelés ;

Canal du fabricant Huawei, le push du fabricant fournit uniquement un rappel de notification de clic ;

Le canal du fabricant Xiaomi, le rappel de réception et le rappel de notification de clic seront appelés ;

Le canal du fabricant Meizu, les deux reçoivent un rappel et un rappel de notification de clic seront appelés ;

Canal du fabricant OPPO, ni rappel ;

Le canal FCM, lorsque l'application est au premier plan, le rappel de réception et le rappel de notification de clic seront appelés. Lorsque l'application est en arrière-plan ou que le processus d'application est tué et non démarré, aucun des deux rappels n'est disponible ;

Canal du fabricant VIVO, le push du fabricant fournit uniquement un rappel de notification de clic.

Une fois l'étiquette définie avec succès, appuyez sur l'étiquette, mais la poussée ne peut pas être reçue

Une fois la balise définie avec succès, il faut du temps à certains fabricants pour extraire les données de manière synchrone, ce qui conduit au succès de la définition de la balise sur l'interface, mais l'appareil n'est pas synchronisé lors de la poussée, et il n'y a pas d'appareil cible, donc le la poussée ne peut pas être reçue. Il est recommandé d'attendre quelques minutes après le marquage réussi de l'appareil avant de pousser.

Combien d'alias un appareil peut-il définir ? Différents appareils peuvent-ils définir le même alias ?

La même APP et un appareil ne peuvent correspondre qu'à un seul alias, et le nouvel alias défini écrasera l'alias précédemment défini. Différents appareils ne peuvent pas définir le même alias en même temps, le dernier appareil défini prend effet et les alias des autres appareils deviennent invalides.

Si l'application ne peut pas obtenir l'ID d'enregistrement (regId) sur l'appareil Android 9

Si l'ID d'enregistrement peut être obtenu sur d'autres versions de téléphones Android, mais pas sur les appareils Android 9, veuillez confirmer que la targetSdkVersion est supérieure à 27 ; si elle est supérieure à 27, vous devez ajouter android dans la balise d'application du AndroidManifest Fichier .xml : utiliseCleartextTraffic="true"

Que dois-je faire si le push est configuré avec un fournisseur FCM et que d'autres produits Firebase (annonces et autres produits) doivent être utilisés en même temps, et qu'une erreur est signalée lors de la compilation ?

1. Lors de la configuration séparée des publicités et du FCM, si les versions des mêmes bibliothèques dont elles dépendent sont cohérentes, sinon, vous devez unifier les versions ;
2. Unifier les versions : ajouter dans le build.gradle de APPmodule

configurations.all { 
    exclude group: 'com.google.firebase', module: 'firebase-messaging' 
} 
//在app module 的build.gradle文件的dependencies里添加
compile 'com.google. firebase:firebase-messaging:17.1.0'

Dois-je supprimer le "-" lors de la configuration de l'appId et de l'AppKey poussés par le fabricant vivo ?

inutile

Accès au push du fabricant vivo, le push est envoyé avec succès, mais l'appareil vivo ne reçoit pas le push

1. Vérifiez si la configuration est correcte, si le nom du package est cohérent avec le nom du package lors de la demande de service vivo push ; 2.
Si l'autorisation de notification du téléphone mobile est activée ;
3. Vérifiez si le message a été livré mais plié dans la boîte de message ? La stratégie actuelle consiste à afficher l'application lorsqu'elle est active et à la replier lorsqu'elle n'est pas active ;
4. Vérifiez s'il y a un problème avec la connexion réseau de l'appareil. Si le wifi connecté est configuré en tant que proxy, il est généralement nécessaire de redémarrer le téléphone, et vous pouvez changer de réseau téléphonique pour réessayer ;

Que dois-je faire si les informations fournies par le fabricant sont configurées, mais que l'AppKey est incomplète et que le premier numéro s'avère incomplet après l'exécution du package ?

Cela est dû au fait que la version gradle est trop élevée. Veuillez ajouter un espace là où il y a un problème avec la configuration.

Pourquoi certains appareils Huawei ne peuvent-ils pas recevoir de messages hors ligne après la configuration du push du fournisseur Huawei ?

Tout d'abord, vérifiez si les paramètres configurés du fabricant Huawei sont corrects ; deuxièmement, vérifiez la version EMUI de l'appareil Huawei. Si elle est inférieure à 5.0, elle peut ne pas être prise en charge. Si elle est inférieure à 5.0, vous pouvez essayer de mettre à niveau l'application "Huawei Mobile Services" dans l'appareil et la mise à niveau des fabricants Huawei "Huawei Mobile Services" peuvent être pris en charge.

Le push fournisseur de MobPush est en conflit avec le push fournisseur d'autres produits tiers utilisés par l'application. Comment résoudre ce problème ?

Sur la page d'accueil, configurez les informations du fournisseur dans la configuration MobPush{} de build.gradle comme d'habitude ; puis ajoutez à la fin du fichier build.gradle :

configurations.all {
    exclude group: 'com.mob.push.plugins', module: 'meizu'   //屏蔽MobPush提供的魅族厂商包
    exclude group: 'com.mob.push.plugins', module: 'xiaomi'  //屏蔽MobPush提供的小米厂商包
    exclude group: 'com.mob.push.plugins', module: 'vivo'    //屏蔽MobPush提供的vivo厂商包
    exclude group: 'com.mob.push.plugins', module: 'oppo'    //屏蔽MobPush提供的oppo厂商包
}

Quel fabricant est en conflit, quel fabricant peut être exclu.

Si le fabricant Meizu pousse dans d'autres produits tiers utilisés par l'application entre en conflit avec le fabricant Meizu push de MobPush, l'un d'eux ne fonctionnera pas lors de la poussée

Étant donné que le push du fournisseur Meizu ne prend que le premier récepteur configuré dans AndroidManifest.xml pour le rappel de surveillance de réception, le composant configuré à l'avant prendra effet et la configuration dans ce dernier sera invalide.
Solution : personnalisez un récepteur, héritez de MzPushMessageReceiver, réécrivez toutes les méthodes qu'il contient, appelez le rappel Meizu de MobPush et le rappel Meizu de produits tiers dans ce récepteur, et configurez-le dans le fichier AndroidManifest.xml :

<receiver
                android:name="自定义Receiver">
                <intent-filter>
                        <action
                                android:name="com.meizu.flyme.push.intent.MESSAGE" />
                        <action
                              android:name="com.meizu.flyme.push.intent.REGISTER.FEEDBACK" />
                        <action
                                android:name="com.meizu.flyme.push.intent.UNREGISTER.FEEDBACK" />
                        <action
                                android:name="com.meizu.c2dm.intent.REGISTRATION" />
                        <action
                                android:name="com.meizu.c2dm.intent.RECEIVE" />
                        <category
                                android:name="包名" />
                </intent-filter>
        </receiver>

Implémentez un exemple dans un récepteur personnalisé :

public class MyReceiver extends MzPushMessageReceiver {
         private OtherReceiver otherReceiver;
         private PushMeiZuRevicer mobpushMeiZuReceiver;
         public MyReceiver() {
                otherReceiver = new OtherReceiver();
                mobpushMeiZuReceiver = new PushMeiZuRevicer();
         }
         @Override
         public void onPushStatus(Context context, PushSwitchStatus pushSwitchStatus) {
                otherReceiver.onPushStatus(context, pushSwitchStatus);
                mobpushMeiZuReceiver.onPushStatus(context, pushSwitchStatus);
         }
         @Override
         public void onRegisterStatus(Context context, RegisterStatus registerStatus) {
                otherReceiver.onRegisterStatus(context, registerStatus);
                mobpushMeiZuReceiver.onRegisterStatus(context, registerStatus);
         }
         @Override
         public void onRegister(Context context, String s) {
                otherReceiver.onRegister(context, s);
                mobpushMeiZuReceiver.onRegister(context, s);
         }
         @Override
         public void onUnRegister(Context context, boolean b) {
                otherReceiver.onUnRegister(context, b);
                mobpushMeiZuReceiver.onUnRegister(context, b);
         }
         @Override
         public void onUnRegisterStatus(Context context, UnRegisterStatus unRegisterStatus) {
                otherReceiver.onUnRegisterStatus(context, unRegisterStatus);
                mobpushMeiZuReceiver.onUnRegisterStatus(context, unRegisterStatus);
         }
         @Override
         public void onSubTagsStatus(Context context, SubTagsStatus subTagsStatus) {
                otherReceiver.onSubTagsStatus(context, subTagsStatus);
                mobpushMeiZuReceiver.onSubTagsStatus(context, subTagsStatus);
         }
         @Override
         public void onSubAliasStatus(Context context, SubAliasStatus subAliasStatus) {
                otherReceiver.onSubAliasStatus(context, subAliasStatus);
                mobpushMeiZuReceiver.onSubAliasStatus(context, subAliasStatus);
         }
         @Override
         public void onNotificationClicked(Context context, MzPushMessage mzPushMessage) {
                otherReceiver.onNotificationClicked(context, mzPushMessage);
                mobpushMeiZuReceiver.onNotificationClicked(context, mzPushMessage);
         }
         @Override
         public void onNotificationArrived(Context context, MzPushMessage mzPushMessage) {
                otherReceiver.onNotificationArrived(context, mzPushMessage);
                mobpushMeiZuReceiver.onNotificationArrived(context, mzPushMessage);
         }

         @Override
         public void onNotifyMessageArrived(Context context, String s) {
                otherReceiver.onNotifyMessageArrived(context, s);
                mobpushMeiZuReceiver.onNotifyMessageArrived(context, s);
         }
    }

Le push du fabricant Meizu est configuré, la sortie du journal de débogage du client est enregistrée avec succès, mais le push n'est pas reçu pendant le push ou le push hors ligne n'est pas reçu, comment le résoudre

1. Confirmez que l'accès push du fabricant Meizu est flyme push, pas ups push.
2. Vérifiez si l'application créée sur la plate-forme de développement Meizu est configurée avec un accusé de réception. Si ce n'est pas le cas, veuillez le configurer. Cela affectera le résultat du push et entraînera l'échec du push.
3. S'il est confirmé que tout ce qui précède est normal, mais qu'il y a toujours des problèmes, veuillez contacter le support technique de MobTech pour le dépannage.

Le même rappel d'écouteur push est appelé plusieurs fois, pourquoi ?

Si l'application comporte plusieurs sous-processus et que le rappel de surveillance push est ajouté dans la méthode onCreate d'Application, il existe plusieurs sous-processus. L'application onCreate sera appelée plusieurs fois et le rappel de surveillance sera ajouté plusieurs fois, donc le même rappel de surveillance push apparaîtra, dans le cas où il est appelé plusieurs fois. Si vous souhaitez uniquement surveiller et rappeler le processus principal, vous devez évaluer le processus actuel lors de son ajout, puis ajouter le rappel de surveillance push lorsque le processus principal est dans le processus principal.

Prend-il en charge la fonction de marque d'angle ?

MobPush prend en charge la fonction de marque de coin. Besoin d'appeler MobPush.setShowBadge(true); activer la fonction de badge, false par défaut, fonction de badge désactivée.
Pour le canal du fabricant, le système Xiaomi lui-même prend en charge la fonction de marque d'angle sans aucun traitement ; les
fabricants Meizu ne prennent pas en charge la fonction de marque d'angle ;
les fabricants OPPO et VIVO n'ouvrent actuellement la fonction de marque d'angle qu'à leurs propres applications et WeChat QQ ; les
fabricants Huawei prennent en charge EMUI 8.0 et versions ultérieures prennent en charge la fonction de badge. Si vous devez activer la fonction de badge pour les fabricants Huawei, ajoutez le paramètre androidBadgeClass dans le paramètre extrasMapList lorsque le serveur pousse. La valeur du paramètre est le chemin complet de l'activité d'entrée d'application, donc EMUI8. 0 et supérieur Les appareils poussés par les fabricants Huawei peuvent afficher des marques de coin.

MobPush prend-il en charge plusieurs noms de packages ?

soutien.

Une application d'appareil peut-elle définir plusieurs balises ? Différents appareils de la même application peuvent-ils définir la même étiquette ?

La même application et un appareil peuvent s'abonner à plusieurs balises. Veuillez essayer d'utiliser des balises anglaises pour éviter d'utiliser des caractères chinois ou spéciaux, ce qui empêcherait les fabricants de s'abonner aux balises et de pousser sans succès ; différents appareils peuvent définir la même balise en même temps. .

Le RegistrationId de MobPush va-t-il changer ? Si le changement est envoyé à quelle heure? Est-ce que RegistrationId a une longueur fixe ?

En règle générale, l'identifiant d'enregistrement ne sera pas envoyé pour modification, mais des modifications seront également trouvées.Parfois, l'identifiant d'enregistrement changera lorsque l'appareil est désinstallé et réinstallé ou que l'appareil est restauré à l'usine, et la longueur de l'identifiant d'enregistrement sera changement dû à l'optimisation interne du serveur. , n'est pas de longueur fixe.

L'utilisation de StopPush fermera-t-elle toutes les poussées de canaux de fournisseurs ?

Sauf que le fabricant FCM ne peut pas être fermé (l'interface associée n'est pas fournie), TCP et les autres fabricants sont normalement fermés.

Après avoir activé l'autorisation de notification, je ne peux toujours pas la recevoir

MobPush mettra uniquement à jour le statut d'autorisation de notification de l'enregistrement lors de l'initialisation.

Si l'autorisation de notification est désactivée lors de l'initialisation, vous devez redémarrer l'APP pour mettre à jour l'état d'autorisation de notification enregistré. Si vous avez besoin de mises à jour en temps réel, vous pouvez appeler cette méthode :

//打开轮询开关
MobPush.startNotificationMonitor();
//关闭轮询开关
MobPush.stopNotificationMonitor();

Impossible de compter les fabricants

Veuillez ajouter cette méthode dans le onCreate de l'activité ouverte en cliquant sur la notification

MobPush.notificationClickAck(getIntent());

Le style de texte long du fabricant Huawei n'est pas valide

Utilisez le style de texte long Huawei, et le titre (title) est obligatoire.

L'intention d'analyse des fabricants Huawei est vide

Le transfert de données de Huawei vers l'application n'est effectif que lorsque la version NC est 9.11 ou supérieure.La version NC peut être consultée (Paramètres-Application-Gestion des applications-Service Push).Les anciens appareils ont des problèmes sans service push ou avec une version inférieure. Vous pouvez essayer de mettre à niveau la version Solution, si elle ne peut pas être mise à niveau, Huawei n'a pas fourni de solution compatible pour les anciens équipements. Des instructions détaillées peuvent être trouvées sur: lien

Que dois-je faire si le canal intégré du fournisseur Huawei est rejeté sur la boutique Google ?

Par exemple, dans la copie rejetée de la boutique Google, il y a les mots "Nous avons trouvé que votre application utilise une version non conforme du SDK Huawei Mobile Services qui contient du code pour télécharger ou installer des applications à partir de sources inconnues en dehors de Google Play", la raison en est que vous utilisez actuellement la version du SDK Huawei est trop faible. Huawei a résolu ce problème dans la version 6.3.0.304 (2022-03-31) et versions ultérieures. Vous pouvez déclarer activement cette version dans le script Gradle, comme indiqué dans l'exemple suivant.
image

L'utilisation de la fonction setTimestamp pour les notifications locales n'est pas valide sur Android 12 et supérieur

Parce que dans la version Android12, lors de l'appel de la méthode de réveil précis, l'autorisation SCHEDULE_EXACT_ALARM doit être ajoutée, ce qui peut être résolu en ajoutant cette autorisation dans le fichier manifeste.

Je suppose que tu aimes

Origine blog.csdn.net/apkkkk/article/details/131653704
conseillé
Classement