Preguntas frecuentes sobre MobPush Android

¿Está configurada la interfaz predeterminada de clic para saltar, es válida para todos los canales?

Solo válido para canales MobPush, Meizu, Xiaomi, Huawei, OPPO, VIVO, no válido para canales FCM.

Cómo obtener parámetros de devolución de llamada

  • Cuando el proceso está activo, puede ver los detalles de la notificación en nuestro detector de devolución de llamada, que se puede procesar de acuerdo con los parámetros de devolución de llamada. Para obtener más información, consulte Interfaz API->Interfaz de escucha push.
  • Cuando se cancela el proceso, la supervisión de devolución de llamada no está disponible, pero hacer clic en la notificación y abrir la página de inicio de la aplicación activará onCreate o onNewIntent para iniciar la actividad y obtendrá la intención devuelta a través de getIntent para obtener los detalles de la notificación.
  • Nota: PushSDK proporciona un método de análisis para obtener parámetros de devolución de llamada, pero la notificación del proveedor es principalmente para obtener campos adicionales y no analizará toda la información. Ir a la página de inicio para obtener parámetros
JSONArray jsonArray =  MobPushUtils.parseMainPluginPushIntent(getIntent());
System.out.println("-------------JsonPushData打印查看:"+jsonArray);

instrucciones de devolución

devolver campo ilustrar
“id”:“4bu9702gmq4mvl3myo” identificación Id. de tarea de notificación, solo las notificaciones de proveedores tienen este campo
{"valor clave"} Campos Adicionales El campo adjunto debe especificarse, si no se especifica, no aparecerá, solo el fabricante notifica este campo
{“desde_tcp”:verdadero} de_tcp Si el mensaje proviene del canal MobPushTCP, verdadero: sí
{“mensaje”:“MobPushNotifyMessage{}”} mensaje Cuerpo del mensaje, el objeto es MobPushNotifyMessage, solo los mensajes del canal MobPushTCP tienen este campo
{“canal”:“mobpush”} canal Nombre del Canal

2.2 Salto de esquema para obtener parámetros, consulte la interfaz API->salto de esquema para obtener más detalles

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

instrucciones de devolución

devolver campo ilustrar
{“desde_tcp”:verdadero} de_tcp Si el mensaje proviene del canal MobPushTCP, verdadero: sí
{“mensaje”:“MobPushNotifyMessage{}”} mensaje Cuerpo del mensaje, el objeto es MobPushNotifyMessage, solo los mensajes del canal MobPushTCP tienen este campo
{"valor clave"} Campos Adicionales El campo adjunto debe especificarse, se recomienda no utilizar url como clave
{“mobpush_link_k”:“mlink://com.mob.mobpush.link”} esquema dirección del esquema
{“mobpush_link_v”:“schemeKey=schemeValue”} parámetro del esquema Los parámetros del esquema transportados bajo la dirección del esquema
{“id”:“4brfm8nti9aj1arf28”} identificación id de tarea push
{“canal”:“xiaomi”} canal Nombre del Canal
{“esquemaEnlace”:“mlink://com.mobpush.demo2”} esquema dirección del esquema
{“Clave de esquema”:“Valor de esquema”} parámetro del esquema Los parámetros del esquema transportados bajo la dirección del esquema (Huawei, VIVO, OPPO)
{“Clave de esquema”:“Valor de esquema”,“Url de esquema”:“mlink://com.mob.mobpush.link”} URL del esquema El parámetro del esquema (flyme) transportado bajo la dirección del esquema.

3. Si no utiliza el método de análisis proporcionado por PushSDK, puede consultar los siguientes métodos para obtener parámetros de devolución de llamada

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());
            }
        }
    }

Cuando OPPO presiona, presiona según todos los grupos de personas, por qué algunos dispositivos OPPO no pueden recibirlo

Debido a que OPPO push corresponde a todos los grupos de personas, este tipo de push completo tiene una regla de límite de tiempo. Cuando se empuja el monto total, los dispositivos OPPO recién registrados en el día no tendrán efecto y lo harán al día siguiente. La inserción completa se contará en el grupo de dispositivos de destino, regla T+ 1. Al presionar a un solo dispositivo OPPO, no hay restricción de regla T+1 y entrará en vigencia inmediatamente después del registro exitoso.

¿Habrá una devolución de llamada cuando el fabricante presione y abra la notificación?

No todas las devoluciones de llamada están disponibles. OPPO Push no tiene devoluciones de llamada para recibir notificaciones y abrir notificaciones; FCM Push no tiene devoluciones de llamada para recibir notificaciones y abrir notificaciones cuando la aplicación está en segundo plano o el proceso de la aplicación se cancela.

Cuando la aplicación está en primer plano, no se puede recibir el empuje del canal MobPush

Cuando la aplicación está en primer plano, no se puede recibir el envío del canal MobPush. Siga los pasos a continuación para verificar:
1. Verifique si la red telefónica es normal. 2. Verifique
el permiso de notificación del teléfono está
si

Llame a MobPush.setClickNotificationToLaunchMainActivity(), configúrelo como falso y haga clic en la notificación para no iniciar la página de inicio. ¿Por qué no funciona después de configurarlo?

Este método no funciona para todos los canales. Actualmente, solo funciona para los canales de MobPush, los canales de Meizu y los canales de Xiaomi. Para los canales de Huawei, los canales de OPPO y los canales de FCM, no importa si este método se llama o no debido a diferentes implementaciones de cada fabricante Afecta a estos tres canales, el valor predeterminado es iniciar la página de inicio.

Problema de cambio de permiso de notificación de dispositivo OPPO y VIVO

OPPO:
antes de conectarse a OPPO PUSH, el permiso de la barra de notificaciones de la aplicación está desactivado de forma predeterminada; después de conectarse a OPPO PUSH, el teléfono OPPO con ColorOS3.1 a la versión 5.0, después de que el usuario active la aplicación correspondiente, el permiso de la barra de notificaciones se activará de forma predeterminada. En particular, si el usuario está usando una versión anterior de la aplicación (no integrada con OPPO PUSH) y desactiva manualmente el permiso de la barra de notificaciones de la aplicación, solo el usuario puede desinstalar manualmente la versión anterior de la aplicación y luego Instala la nueva versión (integrada con OPPO PUSH) y actívala.La barra está activada por defecto. Con el método de instalación de superposición, el permiso de la barra de notificaciones no se habilitará de forma predeterminada; para teléfonos móviles de ColorOS5.1 y versiones posteriores, el sistema desactiva el permiso de la barra de notificaciones de manera uniforme y el usuario debe hacerlo manualmente. abrelo.

VIVO:
integrado con VPUSH, el interruptor de permiso de notificación general está básicamente activado de forma predeterminada, pero el interruptor de categoría a continuación está desactivado de forma predeterminada y el usuario debe activarlo manualmente.

Mi celular no puede recibir push

Si la aplicación móvil (APP) no se publica en la tienda de Xiaomi, el equipo de push de Xiaomi tendrá derecho a dejar de proporcionar servicios de push. Como resultado de la revisión de seguridad periódica de la aplicación del desarrollador, Mi App Store ajusta el permiso de inserción de la aplicación. Si la aplicación del desarrollador no pasa la revisión de seguridad periódica de Mi App Store, Xiaomi tiene derecho a rescindir unilateralmente el acuerdo. o cierre inmediatamente el permiso de inserción de la aplicación hasta que la aplicación pase la revisión de seguridad de Mi App Store y se publique en Mi App Store. Para obtener más información, consulte: enlace

Si el teléfono móvil Xiaomi no puede recibir el impulso, verifique si el permiso de notificación está activado. Al mismo tiempo, el dispositivo Xiaomi comienza a usar el filtrado de notificaciones sin importancia en la barra de notificaciones de MIUI9 y verifica si hay una notificación del aplicación correspondiente en la notificación sin importancia en la barra de notificación.

El permiso de notificación de la aplicación no está activado y la notificación push no se puede recibir después de que se activa

Al principio, el permiso de notificación de la aplicación no estaba habilitado. Cuando el permiso de notificación esté habilitado, elimine el proceso, reinicie la aplicación y presione nuevamente.

¿Se llamará a la devolución de llamada de recepción y la devolución de llamada de notificación de clic?

incierto. Divididos en canales push, diferentes fabricantes tienen diferentes métodos de implementación, lo que resulta en que algunos devuelvan la llamada, algunos solo devuelvan la notificación de clic y otros no devuelvan la llamada.

Se llamará al canal MobPush, recibirá la devolución de llamada y hará clic en la devolución de llamada de notificación;

Canal del fabricante de Huawei, el empuje del fabricante solo proporciona devolución de llamada de notificación de clic;

Se llamará al canal del fabricante Xiaomi, tanto la devolución de llamada de recepción como la devolución de llamada de notificación de clic;

El canal del fabricante de Meizu, ambos reciben devolución de llamada y se llamará la devolución de llamada de notificación de clic;

Canal del fabricante OPPO, ni devolución de llamada;

El canal FCM, cuando la aplicación está en primer plano, se llamará tanto a la devolución de llamada de recepción como a la devolución de llamada de notificación de clic. Cuando la aplicación está en segundo plano o el proceso de la aplicación se cancela y no se inicia, ninguna de las dos devoluciones de llamada está disponible;

El canal del fabricante de VIVO, el empuje del fabricante solo proporciona devolución de llamada de notificación de clic.

Después de que la etiqueta se haya configurado correctamente, empuje a través de la etiqueta, pero no se puede recibir el empuje

Una vez que la etiqueta se configura con éxito, a algunos fabricantes les lleva tiempo extraer los datos de forma sincrónica, lo que lleva al éxito de configurar la etiqueta en la interfaz, pero el dispositivo no está sincronizado cuando se presiona, y no hay un dispositivo de destino, por lo que el no se puede recibir el empujón. Se recomienda esperar unos minutos después de que el dispositivo se haya etiquetado correctamente antes de presionar.

¿Cuántos alias puede establecer un dispositivo? ¿Pueden diferentes dispositivos establecer el mismo alias?

La misma aplicación y un dispositivo solo pueden corresponder a un alias, y el alias recién establecido sobrescribirá el alias establecido anteriormente. Distintos dispositivos no pueden configurar el mismo alias al mismo tiempo, el último dispositivo configurado tiene efecto y los alias de otros dispositivos dejarán de ser válidos.

Si la aplicación no puede obtener el ID de registro (regId) en el dispositivo Android 9

Si la ID de registro se puede obtener en otras versiones de teléfonos Android, pero no en dispositivos con Android 9, confirme que targetSdkVersion sea mayor que 27; si es mayor que 27, debe agregar android en la etiqueta de aplicación de AndroidManifest Archivo .xml: usesCleartextTraffic="true"

¿Qué debo hacer si la inserción está configurada con un proveedor de FCM y se deben usar otros productos de Firebase (anuncios y otros productos) al mismo tiempo, y se informa un error al compilar?

1. Al configurar anuncios y FCM por separado, si las versiones de las mismas bibliotecas de las que dependen son consistentes, si no, debe unificar las versiones 2. Unificar las versiones: agregue 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'

¿Debo eliminar el "-" al configurar el ID de aplicación y la clave de aplicación impulsadas por el fabricante de vivo?

innecesario

Acceso al push del fabricante vivo, el push se envía con éxito, pero el dispositivo vivo no recibe el push

1. Verifique si la configuración es correcta, si el nombre del paquete es consistente con el nombre del paquete al solicitar el servicio vivo push 2.
Si el permiso de notificación del teléfono móvil está activado
3. Verifique si el mensaje se entregó pero se plegó en el cuadro de mensaje? La estrategia actual es mostrar la aplicación cuando está activa y doblarla cuando no está activa;
4. Verifique si hay un problema con la conexión de red del dispositivo. Si el wifi conectado está configurado como un proxy, generalmente es necesario reiniciar el teléfono, y puede cambiar la red telefónica para volver a intentarlo;

¿Qué debo hacer si la información enviada por el fabricante está configurada, pero la AppKey está incompleta y el primer número se encuentra incompleto después de ejecutar el paquete?

Esto se debe a que la versión de Gradle es demasiado alta. Agregue un espacio donde haya un problema con la configuración.

¿Por qué algunos dispositivos Huawei no pueden recibir mensajes fuera de línea después de configurar el envío del proveedor de Huawei?

Primero, verifique si los parámetros configurados por el fabricante Huawei son correctos; segundo, verifique la versión EMUI del dispositivo Huawei. Si es inferior a 5.0, es posible que no sea compatible. Si es inferior a 5.0, puede intentar actualizar la aplicación "Huawei Mobile Services" en el dispositivo y actualizar los "Huawei Mobile Services" de los fabricantes de Huawei pueden ser compatibles.

El impulso del proveedor de MobPush entra en conflicto con el impulso del proveedor de otros productos de terceros utilizados por la aplicación.¿Cómo solucionarlo?

En la página de inicio, configure la información del proveedor en la configuración MobPush{} de build.gradle como de costumbre, luego agregue al final del archivo 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厂商包
}

Qué fabricante entra en conflicto, qué fabricante se puede excluir.

Si la inserción del fabricante de Meizu en otros productos de terceros utilizados por la aplicación entra en conflicto con la inserción de MobPush del fabricante de Meizu, uno de ellos no funcionará al presionar

Dado que el impulso del proveedor de Meizu solo toma el primer Reciever configurado en AndroidManifest.xml para la devolución de llamada de monitoreo de recepción, cualquier componente que esté configurado en el frente surtirá efecto y la configuración en el último no será válida.
Solución: personalice un receptor, herede MzPushMessageReceiver, reescriba todos los métodos en él, llame a la devolución de llamada de Meizu de MobPush y a la devolución de llamada de Meizu de productos de terceros en este receptor y configúrelo en el archivo 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>

Implemente un ejemplo en un receptor personalizado:

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);
         }
    }

El impulso del fabricante de Meizu está configurado, la salida del registro de depuración del cliente se registra correctamente, pero no se recibe el impulso durante el impulso o no se recibe el impulso fuera de línea, cómo resolverlo

1. Confirme que el acceso push del fabricante de Meizu es flyme push, no ups push.
2. Verifique si la aplicación creada en Meizu Developer Platform está configurada con un recibo. De lo contrario, configúrelo. Esto afectará el resultado del envío y hará que el envío falle.
3. Si se confirma que todo lo anterior es normal, pero aún hay problemas, comuníquese con el soporte técnico de MobTech para solucionar el problema.

La misma devolución de llamada de push listener se llama varias veces, ¿por qué?

Si la aplicación tiene múltiples subprocesos, y la devolución de llamada de monitoreo push se agrega en el método onCreate de la aplicación, entonces hay varios subprocesos. El onCreate de la aplicación se llamará varias veces y la devolución de llamada de monitoreo se agregará varias veces, por lo que aparecerá la misma devolución de llamada de monitoreo push, en el caso de que se llame varias veces. Si solo desea monitorear y devolver la llamada al proceso principal, debe juzgar el proceso actual al agregarlo y luego agregar la devolución de llamada de monitoreo push cuando el proceso principal está en el proceso principal.

¿Es compatible con la función de marca de esquina?

MobPush admite la función de marca de esquina. Necesita llamar a MobPush.setShowBadge (verdadero); active la función de credencial, predeterminado falso, función de credencial desactivada.
Para el canal del fabricante, el propio sistema Xiaomi admite la función de marca de esquina sin ningún procesamiento;
los fabricantes de Meizu no admiten la función de marca de esquina;
los fabricantes de OPPO y VIVO actualmente solo abren la función de marca de esquina para sus propias aplicaciones y WeChat QQ; los
fabricantes de Huawei admiten EMUI 8.0 y superior admiten la función de insignia. Si necesita habilitar la función de insignia para los fabricantes de Huawei, agregue el parámetro androidBadgeClass en el parámetro extrasMapList cuando el servidor presione. El valor del parámetro es la ruta completa de la actividad de entrada de la aplicación, por lo que EMUI8. 0 y superior Los dispositivos impulsados ​​por los fabricantes de Huawei pueden mostrar marcas en las esquinas.

¿MobPush admite varios nombres de paquetes?

apoyo.

¿Puede una aplicación de dispositivo establecer varias etiquetas? ¿Pueden diferentes dispositivos de la misma aplicación establecer la misma etiqueta?

La misma aplicación y un dispositivo pueden suscribirse a varias etiquetas. Intente usar etiquetas en inglés para evitar el uso de caracteres chinos o especiales, lo que hará que los fabricantes no suscriban etiquetas y presionen sin éxito; diferentes dispositivos pueden configurar la misma etiqueta al mismo tiempo .

¿Cambiará el ID de registro de MobPush? Si el cambio se envía a que hora? ¿RegistrationId tiene una longitud fija?

Generalmente, la identificación de registro no se enviará para cambiar, pero también se encontrarán cambios. A veces, la identificación de registro cambiará cuando el dispositivo se desinstale y se vuelva a instalar o el dispositivo se restablezca a la fábrica, y la longitud de la identificación de registro cambiará. cambio debido a la optimización interna del servidor. , no es de longitud fija.

¿El uso de StopPush cerrará todas las inserciones de canales de proveedores?

Excepto que el fabricante de FCM no se puede cerrar (no se proporciona la interfaz relacionada), TCP y otros fabricantes normalmente están cerrados.

Después de activar el permiso de notificación, todavía no puedo recibirlo

MobPush solo actualizará el estado de permiso de notificación del registro durante la inicialización.

Si el permiso de notificación se desactiva durante la inicialización, debe reiniciar la aplicación nuevamente para actualizar el estado del permiso de notificación registrado. Si necesita actualizaciones en tiempo real, puede llamar a este método:

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

No se pueden contar los fabricantes.

Agregue este método en onCreate de la actividad abierta al hacer clic en la notificación

MobPush.notificationClickAck(getIntent());

El estilo de texto largo del fabricante de Huawei no es válido

Use el estilo de texto largo de Huawei y se requiere el título (título).

La intención de análisis de los fabricantes de Huawei está vacía

La transferencia de datos de Huawei a la aplicación solo es efectiva cuando la versión NC es 9.11 o superior. La versión NC se puede ver (Configuración-Aplicación-Administración de aplicaciones-Servicio Push). Los dispositivos antiguos tienen problemas sin servicio Push o con una versión inferior. Puede intentar actualizar la versión Solución, si no se puede actualizar, Huawei no ha proporcionado una solución compatible para equipos antiguos. Las instrucciones detalladas se pueden encontrar en: enlace

¿Qué debo hacer si el canal de proveedores integrado de Huawei es rechazado en la tienda de Google?

Por ejemplo, en la copia rechazada de la tienda de Google, hay las palabras "Descubrimos que su aplicación está usando una versión no compatible del SDK de servicios móviles de Huawei que contiene código para descargar o instalar aplicaciones de fuentes desconocidas fuera de Google Play". el motivo es que actualmente está utilizando La versión del SDK de Huawei es demasiado baja. Huawei solucionó este problema en la versión 6.3.0.304 (2022-03-31) y posteriores. Puede declarar activamente esta versión en el script de Gradle, como se muestra en el siguiente ejemplo.
imagen

El uso de la función setTimestamp para notificaciones locales no es válido en Android 12 y superior

Porque en la versión de Android12, al llamar al método de despertador preciso, se debe agregar el permiso SCHEDULE_EXACT_ALARM, que se puede solucionar agregando este permiso en el archivo de manifiesto.

Supongo que te gusta

Origin blog.csdn.net/apkkkk/article/details/131653704
Recomendado
Clasificación