L'applet WeChat implémente la messagerie un-à-plusieurs

高洛峰
Libérer: 2017-02-25 09:41:41
original
2226 Les gens l'ont consulté

Explication détaillée et exemple de code pour implémenter la messagerie un-à-plusieurs dans l'applet WeChat

Le transfert de valeur et la notification entre les différentes interfaces de l'applet WeChat sont pénibles dans le cul. J'ai donc imité le centre de notification dans iOS et écrit un centre de notification similaire dans l'applet WeChat.

Le centre de notification peut : envoyer des messages un à plusieurs et transférer des objets. Très simple à utiliser.

Lors de son utilisation, enregistrez un nom de notification sur l'interface qui doit recevoir des messages. Ensuite, publiez simplement le nom de la notification sur l'interface où vous devez envoyer le message. Vous pouvez enregistrer le même nom de notification dans plusieurs interfaces. De cette façon, vous pouvez envoyer un à plusieurs messages.

Utilisation :

1 : Référence notification.js dans app.js

var notificationCenter = require('/utils/notification.js'); //这里请改为你的绝对路径
Copier après la connexion

2 : Ajoutez app.js :

App({
  onLaunch: function (){
     this.notificationCenter = notificationCenter.center();
  },
  notificationCenter:null,
})
Copier après la connexion

3 : Enregistrez

PageA dans page.js pour recevoir des notifications .js :

var app = getApp();
Page({
 onLoad:function(options){
 app.notificationCenter.register("一个通知名称",this,"didReceviceAnyNotification");
 },
 didReceviceAnyNotification:function(name,content){
  console.log("接收到了通知:",name, content);
 },
})
Copier après la connexion

4 :

Fonction arbitraire de PageB.js

dans page.js qui envoie une notification

var app = getApp();
Page({
 anyFunction:function(){
  app.notificationCenter.post("通知名称",{
    //任意通知object
  })  ;
 },
})
Copier après la connexion

Implémentation :

Téléchargement du fichier : http://xiazai.jb51.net/201702/yuanma/wxappNotificationCenter-master( jb51.net ).rar

var notificationCenter = {

notificationCenter:{},

// 向通知中心注册一个监听者。
// name: 监听的通知名称
// observer: 监听者
// action: 监听者收通知时调用的方法名,
// func: 监听者收到通知时调用的函数,
// action func 2选1
register:function(name,observer,action,func){
  if (!name || !observer) return;
  if (!action && !func) return;

  console.log("注册通知:",name,observer);

  var center = this.notificationCenter;
  var objects = center[name];
  if (!objects){
    objects = [];
  }
  this.remove(name,observer);
  objects.push({
    observer:observer,
    action:action,
    func:func
  });
  center[name] = objects;
},
// 从通知中心移除一个监听者
remove:function(name,observer){
  if (!name || !observer) return;

  var center = this.notificationCenter;
  var objects = center[name];
  if (!objects){
    return;
  }

  var idx;
  var object;
  for(idx = 0;idx<objects.length;idx++){
    var obj = objects[idx];
    if (obj.observer == observer){
    object = obj;
    break;
    }
  }
  if (object){
    objects.splice(idx,1);
  }
  center[name] = objects;
},
// 通过通知中心发出通知
// name: 通知名称
// notification: 通知内容
post:function(name,notification){
  if (!name) return;

  console.log("准备发出通知:",name,notification);

  var center = this.notificationCenter;
  var objects = center[name];
  if (!objects){
    objects = [];
  }
  objects.forEach(function(object){
    var observer = object.observer;
    var action = object.action;
    var func = object.func;

    if (observer && action){
      func = observer[action];
    }
    func(notification);
  });

  console.log("完成向 ",objects.length," 个监听者发出通知:",name);
}
}

function center(){
  return notificationCenter;
}

module.exports.center = center;
Copier après la connexion

Merci d'avoir lu, j'espère que cela pourra aider tout le monde, merci pour votre soutien à ce site !

Pour plus d'articles liés à l'applet WeChat implémentant la messagerie un-à-plusieurs, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!