JSAPI

Since 9.1

addNotifyListener

添加native通知的监听

使用方法

AlipayJSBridge.call('addNotifyListener', {
  name:'fortest'
}, 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'
      }
    });
  });
});
</script>

API

AlipayJSBridge.call('addNotifyListener', {
  name, keep
}, fn)

入参

名称类型描述必选默认值版本
namestring通知名称Y
keepstring是否在ViewController的生命周期内一直监听该通知Ntrue
fnfunction回调函数N

出参

回调函数带入的参数result: {}, 对应为事件的消息

错误

error描述
4无权限调用;
12在一个页面中多次监听同名通知

使用注意

  • 在监听事件的时候,假如这个是H5发出来的,那么需要加上NEBULANOTIFY_前缀。
  • addNotifyListener的时候,为了保险,先做一次remove操作,避免多次add报错。
  • 如果keep设置为false,那么事件触发一次后自动反注册监听。
  • Android在回调中返回的data,只有一层key/value键值对,其中value如果在postNotification时是Object,会被Android进行JSON.stringify操作,使用时建议自行try{ JSON.parse }