Heim  >  Artikel  >  WeChat-Applet  >  Das WeChat-Applet implementiert One-to-Many-Messaging

Das WeChat-Applet implementiert One-to-Many-Messaging

高洛峰
高洛峰Original
2017-02-25 09:41:412174Durchsuche

Ausführliche Erklärung und Beispielcode für die Implementierung von One-to-Many-Messaging im WeChat-Applet

Die Werteübertragung und Benachrichtigungen zwischen verschiedenen Schnittstellen im WeChat-Applet sind mühsam im Arsch. Deshalb habe ich das Benachrichtigungscenter in iOS nachgeahmt und ein ähnliches Benachrichtigungscenter im WeChat-Applet geschrieben.

Das Benachrichtigungscenter kann: Nachrichten eins zu viele senden und Objekte übertragen. Sehr einfach zu bedienen.

Registrieren Sie bei der Verwendung einen Benachrichtigungsnamen auf der Schnittstelle, die Nachrichten empfangen muss. Geben Sie dann einfach den Namen der Benachrichtigung auf der Schnittstelle ein, an die Sie die Nachricht senden möchten. Sie können denselben Benachrichtigungsnamen in mehreren Schnittstellen registrieren. Auf diese Weise können Sie Nachrichten einzeln an mehrere senden.

Verwendung:

1: Referenz notification.js in app.js

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

2: Fügen Sie app.js hinzu:

App({
  onLaunch: function (){
     this.notificationCenter = notificationCenter.center();
  },
  notificationCenter:null,
})

3: Registrieren Sie

PageA in page.js, um Benachrichtigungen zu erhalten.js:

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

4:

PageB.js beliebige Funktion

in page.js, die eine Benachrichtigung sendet

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

Implementierung:

Dateidownload: 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;

Vielen Dank fürs Lesen, ich hoffe, es kann allen helfen, vielen Dank für Ihre Unterstützung dieser Website!

Weitere Artikel zum WeChat-Applet zur Implementierung von One-to-Many-Messaging finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn