[FAQ] Comment le service push HMS Core et les messages de notification créés localement se chevauchent-ils ?

Nous savons que le message de notification peut être couvert en utilisant le service push HMS Core seul ou en créant le message de notification localement.Les méthodes sont les suivantes :

1. Créer des messages de notification localement (appelés messages de notification locaux)

Ceci peut être réalisé en définissant le même notifyId via notificationManager.notify(notifyId, notification).

2. Le service push HMS Core envoie des messages de notification (appelés messages de notification push Huawei)

Pour les messages envoyés à l'aide de l'API du service push HMS Core, notify_id est défini, c'est-à-dire l'identifiant unique de chaque message lorsque la notification est affichée. Lorsque notify_id n'est pas porté ou défini sur -1, Push NC génère automatiquement un identifiant unique pour chaque message, et le message ne sera pas écrasé ; si le même notifyId est défini, la fonction d'écrasement du message précédent par un nouveau message peut être réalisé.

** Bien que les deux méthodes de mise en œuvre ci-dessus puissent être utilisées indépendamment, il existe parfois des scénarios qui nécessitent que les messages de notification locaux et les messages de notification push Huawei se chevauchent. **Par exemple, via le message de notification push Huawei pour rappeler à l'utilisateur que le prix du produit qui l'intéresse a changé. Si l'utilisateur a déjà acheté, le message de notification local peut définir la même valeur notify_id que la notification push Huawei message pour mettre à jour le message recommandé au produit. Les informations logistiques de la commande répondent aux scénarios d'utilisation particuliers de l'application.

Résumé des étapes

1. Message de notification push Huawei, titre : message de test du service push Huawei, contenu : changement de prix du produit auquel vous êtes abonné, notify_id : 10 ;

2. Message de notification locale, titre : Tester le canal d'entrée de notification locale localNotification, contenu : \uD83D\uDCE6 Vous avez un coursier à venir\uD83D\uDE80, cliquez pour afficher les informations du coursier et vous pouvez également définir le mode de livraison >>> , Identifiant de notification :10 ;

3. Message de notification push Huawei, titre : message de test du service push Huawei, contenu : le produit que vous avez acheté a été signé, notify_id : 10.

Processus détaillé

Tout d'abord, les développeurs doivent accéder au service push, veuillez vous référer au lien officiel pour plus de détails

Une fois que le client a accédé au service push, le client obtient le jeton push, puis envoie les messages à l'application en fonction du jeton push renvoyé par le serveur push.

Exemple de code de serveur push HMS Core :



{
    "validate_only": false,
    "message": {
        "android": {
            "notification": {
                "click_action": {
                    "type": 3
                },
                "notify_id": 10
            }
        },
        "notification": {
            "body": "您订阅的商品价格变化",
            "title": "华为推送服务测试消息"
        },
        "token": ["your push token"]
    }
}

Exemple de code client d'application locale (Kotlin) :

val manager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager

//Créer un canal pour envoyer des messages, "localNotification"


        var channelId = "localNotification"
        if(Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O){
            var importance =   NotificationManager.IMPORTANCE_HIGH;
            var notificationChannel = NotificationChannel(channelId,channelId,importance)
            notificationChannel.enableVibration(true)
            notificationChannel.setShowBadge(true)
           if(manager != null){
               manager.createNotificationChannel(notificationChannel)
           }
        }

// Envoie le message au canal channelId

			```
			
    val mBuilder = NotificationCompat.Builder(this@MainActivity,channelId)
    mBuilder.setContentTitle("测试本地通知进入渠道$channelId") //设置通知栏标题
        .setContentText("\uD83D\uDCE6您有快递正在飞速奔来\uD83D\uDE80,点击查看快递信息,还能设置收件方式哦>>>") 
        .setWhen(System.currentTimeMillis())
        .setPriority(Notification.PRIORITY_DEFAULT) 
        .setAutoCancel(true)
        .setDefaults(Notification.DEFAULT_VIBRATE) 
        .setSmallIcon(R.mipmap.ic_launcher_round) 

    val notification = mBuilder.build()
    manager.notify(10, notification) //这里的notifyId与华为推送通知消息的notify_id值相同,即可实现对已经展示的相同notifyId/notify_id的通知消息进行覆盖
			
			```

L'effet est le suivant :

À partir de l'exemple d'effet ci-dessus, on peut voir qu'en gardant les mêmes valeurs notifyId et notify_id, le message de notification local peut écraser le message de notification push HUAWEI précédent, et en même temps, le message de notification push HUAWEI peut également écraser le message de notification local précédent, de sorte que la notification locale puisse être réalisée Fonction de superposition mutuelle des messages et des notifications push Huawei.

Précautions

Lors de la création d'un message de notification localement, tel que notificationManager.notify(notifyId, notification), définissez la valeur de notifyId et le champ notify_id du message de notification push Huawei pour qu'ils soient identiques, de sorte que le message de notification local et le message de notification push Huawei peuvent se chevaucher.

Il convient de noter que les messages de notification avec le même notifyId/notify_id défini dans la même application sont écrasés dans l'ordre d'affichage, c'est-à-dire que les messages affichés plus tard écrasent les messages affichés avant. Dans le même temps, le champ notify_id de Huawei push ne peut prendre effet que si la version EMUI est 9.1.0 et supérieure, et la version de l'application de service push est 9.1.1 et supérieure.

En savoir plus>>

Visitez le site Web officiel de HUAWEI Developer Alliance
pour obtenir des documents d'orientation sur le développement
HUAWEI Mobile Services Open Source Warehouse Adresse : GitHub , Gitee

Suivez-nous pour connaître les dernières informations techniques de HMS Core pour la première fois ~

{{o.name}}
{{m.name}}

Je suppose que tu aimes

Origine my.oschina.net/HMSCore/blog/5517504
conseillé
Classement