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

高洛峰
Freigeben: 2017-02-25 09:41:41
Original
2178 Leute haben es durchsucht

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'); //这里请改为你的绝对路径
Nach dem Login kopieren

2: Fügen Sie app.js hinzu:

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

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);
 },
})
Nach dem Login kopieren

4:

PageB.js beliebige Funktion

in page.js, die eine Benachrichtigung sendet

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

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;
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!