发送通知,前端可以通过接口给客户端发送通知,传入的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>
AlipayJSBridge.call('postNotification', {
name, data
}, fn)
名称 | 类型 | 描述 | 必选 | 默认值 | 版本 |
---|---|---|---|---|---|
name | string | 通知名称 | Y | ||
data | object | 通知给客户端带的信息,Android下会把json数据遍历,然后把里面每一项的value都转成string类型发送,请注意兼容数据格式 | N | ||
fn | function | 回调函数 | N |
回调函数带入的参数result: {success}
名称 | 类型 | 描述 |
---|---|---|
success | bool | 是否消息发送成功 |
error | 描述 |
---|---|
4 | 无权限调用; |