分发消息

前端可以通过此接口给客户端发送通知,H5 会统一给传入的 name 标记加一个前缀 NEBULANOTIFY_,然后作为通知名称进行发送。

在 Android 10.1.0 之前的版本中, postNotificationdata 字段不得为空,addNotifyListener 才可以接受。而在 10.1.60 版本中,此限制已被取消,addNotifyListener 可以接受一个空数据。

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

postNotification 接口的使用方法

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)

入参

名称

类型

描述

必选

默认值

name

string

通知名称。

Y

“”

data

object

通知给客户端带的信息,Android 下会把 JSON 数据遍历,然后把里面每一项的 Value 都转成 String 类型发送,请注意兼容数据格式。

N

-

fn

function

回调函数。

N

-

出参

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

名称

类型

描述

success

bool

是否消息发送成功。

错误码

错误码

描述

4

无权限调用。