Maison >interface Web >uni-app >Comment uniapp implémente-t-il la fonction de messagerie hors ligne ?

Comment uniapp implémente-t-il la fonction de messagerie hors ligne ?

PHPz
PHPzoriginal
2023-04-18 14:10:062332parcourir

Avec la popularité et le développement de l'Internet mobile, le message push est devenu l'une des fonctions standards des applications mobiles. Dans des scénarios d'application réels, les utilisateurs sont souvent confrontés à une situation dans laquelle, lorsque l'appareil ne peut pas se connecter à Internet, ils peuvent manquer certains messages importants. Afin de résoudre ce problème, Jiguang Push fournit une fonction de messagerie hors ligne, qui peut stocker temporairement les messages push sur le serveur Jiguang et les transmettre à nouveau aux utilisateurs une fois l'appareil connecté à Internet. Dans l'application uniapp, la mise en œuvre des messages hors ligne est également très simple.

1. Configuration Aurora Push

Tout d'abord, vous devez créer un compte développeur sur le site officiel d'Aurora et créer une application. Suivez ensuite les instructions de la documentation officielle pour terminer la configuration de base de l'application (comme remplir le nom de l'application, le nom du package, la signature, etc.) et intégrer le SDK Aurora Push dans l'application uniapp.

2. Paramètres de messagerie hors ligne

Pour utiliser la fonction de messagerie hors ligne de Jiguang, nous devons activer l'option de messagerie hors ligne sur la console du site officiel de Jiguang

Ensuite, ajoutez le code suivant au fichier main.js dans l'application uniapp. :

import Vue from 'vue'
import App from './App'

// 引入uni推送插件
import { getRegistrationId } from '@/common/jpush.js'

Vue.config.productionTip = false

App.mpType = 'app'

const app = new Vue({
  ...App
})

// 获取极光注册id
getRegistrationId()

// 将app实例挂载在uni上
uni.$app = app

app.$mount()

Dans ce code, nous introduisons d'abord un fichier nommé "jpush.js", que nous devons créer manuellement. Ensuite, nous obtenons l'ID d'enregistrement Aurora de l'appareil via la méthode "getRegistrationId" et le mettons en cache. La mise en œuvre de cette méthode est décrite dans la section suivante.

3. Acquisition de messages hors ligne

Dans la section précédente, nous avons mentionné un fichier nommé "jpush.js", qui obtiendra l'ID d'enregistrement Aurora de l'appareil et le mettra en cache. Le code de ce fichier est le suivant :

// 引入uni-app插件包
import { jpush } from '@uni/plugins'

/**
 * 获取极光注册id
 */
export function getRegistrationId() {
  // 先尝试从缓存中获取
  let registrationId = uni.getStorageSync('jpushRegistrationId')
  if (registrationId) {
    return registrationId
  }
  // 调用极光推送插件获取注册id
  jpush.getRegistrationID({
    success(res) {
      console.log('获取jpush注册id成功', res)
      // 缓存注册id
      uni.setStorageSync('jpushRegistrationId', res.registrationId)
      // 将注册id发送到后台服务器
      sendRegistrationIdToServer(res.registrationId)
    },
    fail(err) {
      console.error('获取jpush注册id失败', err)
    }
  })
}

Dans le code ci-dessus, nous essayons d'abord d'obtenir l'ID d'enregistrement Aurora de l'appareil à partir du cache, et s'il existe déjà dans le cache, il revient directement. S'il n'existe pas dans le cache, appelez la méthode "getRegistrationID" du plug-in jpush dans uni-app pour obtenir l'ID d'enregistrement de l'appareil. À ce stade, l'objet « res » renvoyé dans la fonction de rappel réussie contient les informations d'identification d'enregistrement de l'appareil. Nous mettons en cache cet ID d'enregistrement dans le stockage local et l'envoyons au serveur backend afin que lorsque l'appareil ne peut pas se connecter à Internet, le serveur puisse utiliser cet ID d'enregistrement pour stocker temporairement les messages hors ligne sur le serveur Aurora.

4. Vérifier les messages hors ligne au démarrage de l'application

Lorsque l'appareil est reconnecté à Internet, nous souhaitons obtenir les messages hors ligne temporairement stockés par le serveur Jiguang afin de les transmettre à l'utilisateur. Ce processus nécessite de vérifier si l'appareil contient des messages hors ligne au démarrage de l'application et de les transmettre un par un à l'utilisateur. Cette logique est implémentée dans le code suivant :

// 引入uni-app插件包
import { jpush } from '@uni/plugins'

// 在应用启动时检查离线消息
checkOfflineMessage()

/**
 * 应用启动时检查离线消息
 */
function checkOfflineMessage() {
  // 调用极光推送插件获取离线消息
  jpush.getOfflineMessage({
    success(res) {
      console.log('获取离线消息成功', res)
      // 将离线消息依次推送给用户
      res.forEach(message => pushMessageToUser(message))
    },
    fail(err) {
      console.error('获取离线消息失败', err)
    }
  })
}

/**
 * 推送离线消息给用户
 * @param {Object} message 
 */
function pushMessageToUser(message) {
  // 在这里将离线消息推送给用户
  // ...
}

Dans le code ci-dessus, nous appelons d'abord la méthode "checkOfflineMessage" lorsque l'application commence à vérifier si l'appareil a des messages hors ligne. Dans cette méthode, nous appelons la méthode "getOfflineMessage" dans le plug-in jpush d'uni-app pour obtenir des messages hors ligne. L'objet "res" dans la fonction de rappel de réussite contient toutes les informations sur les messages hors ligne. Ici, nous pouvons envoyer des messages hors ligne aux utilisateurs dans l'ordre.

Résumé

Grâce à l'introduction de cet article, les lecteurs peuvent apprendre comment intégrer la fonction de messagerie hors ligne Aurora dans l'application uniapp. Plus précisément, il comprend les étapes suivantes :

  1. Intégration du SDK Aurora Push
  2. Activez l'option de messagerie hors ligne dans la console du site officiel d'Aurora
  3. Obtenez l'ID d'enregistrement Aurora de l'appareil au démarrage de l'application et mettez-le en cache en local stockage et backend Sur le serveur
  4. vérifiez si l'appareil a des messages hors ligne au démarrage de l'application et envoyez-les à l'utilisateur

Grâce aux étapes ci-dessus, nous pouvons implémenter la fonction de messagerie hors ligne dans l'application uniapp pour offrir aux utilisateurs une meilleure expérience de service.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn