JSAPI

Since 9.5.1

postNotification

发送通知,前端可以通过接口给客户端发送通知,传入的name标记统一H5统一会加一个前缀“NEBULANOTIFY_ ”,然后作为通知名称进行发送,如果对这个通知感兴趣,监听的时候需要加前缀NEBULANOTIFY_ ;

Android 10.1.0版本之前postNotification的data字段必须不为空,addNotifyListener才能收到。 10.1.0版本去掉这个限制,addNotifyListener可以接受一个空数据。

Android是通过:LocalBroadcastManager发送的广播,可以通过监听NEBULANOTIFY_+name来进行监听

使用方法

AlipayJSBridge.call('postNotification', {
  name:'fortest',
  data:{}
}, function (result) {
  console.log(result);
});

代码演示

基本功能

<h1>请点击下面的按钮来进行测试</h1>
<p>这里只测试在同一个页面内的情况,这个api可以在不同应用间通信</p>

<a href="#" class="btn start">开始监听</a>
<a href="#" class="btn stop">停止监听</a>
<a href="#" class="btn send">发通知</a>
<script>
function callback(e){
  alert(JSON.stringify(e));
};

function ready(callback) {
  // 如果jsbridge已经注入则直接调用
  if (window.AlipayJSBridge) {
    callback && callback();
  } else {
    // 如果没有注入则监听注入的事件
    document.addEventListener('AlipayJSBridgeReady', callback, false);
  }
}
ready(function(){
  document.querySelector('.start').addEventListener('click', function(){
    AlipayJSBridge.call('addNotifyListener', {
      name:'NEBULANOTIFY_TEST_EVENT' // H5发出的事件必须以NEBULANOTIFY_开通进行监听
    }, callback);
  });

  document.querySelector('.stop').addEventListener('click', function(){
    AlipayJSBridge.call('removeNotifyListener', {
      name:'NEBULANOTIFY_TEST_EVENT' // H5发出的事件必须以NEBULANOTIFY_开通进行监听
    }, function(e){
      alert(JSON.stringify(e));
    });
  });

  document.querySelector('.send').addEventListener('click', function(){
    AlipayJSBridge.call('postNotification', {
      name:'TEST_EVENT', // H5发出的事件必须以NEBULANOTIFY_开通进行监听
      data: {
        hello: 'world'
      }
    }, function(e){
      alert(JSON.stringify(e));
    });
  });
});
</script>

API

AlipayJSBridge.call('postNotification', {
  name, data
}, fn)

入参

名称类型描述必选默认值版本
namestring通知名称Y
dataobject通知给客户端带的信息,Android下会把json数据遍历,然后把里面每一项的value都转成string类型发送,请注意兼容数据格式N
fnfunction回调函数N

出参

回调函数带入的参数result: {success}

名称类型描述
successbool是否消息发送成功

错误

error描述
4无权限调用;