事件
从原生代码分发事件
许多原生操作是异步的——ML 推理、传感器读取、后台任务。你的原生代码需要一种方法在结果准备好时将其发送回 PHP。这就是事件的用武之地。
事件从原生代码分发并由你的 Livewire 组件接收。
声明事件
将你的事件类添加到清单中:
json
{
"events": [
"Vendor\\MyPlugin\\Events\\ProcessingComplete",
"Vendor\\MyPlugin\\Events\\ProcessingError"
]
}创建事件类
事件是简单的 PHP 类:
php
namespace Vendor\MyPlugin\Events;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class ProcessingComplete
{
use Dispatchable, SerializesModels;
public function __construct(
public string $result,
public ?string $id = null
) {}
}提示
事件不需要 ShouldBroadcast 或频道配置。NativePHP 直接处理分发。
Swift 事件分发
使用 LaravelBridge.shared.send 分发事件:
swift
// 构建你的负载
let payload: [String: Any] = [
"result": processedData,
"id": requestId
]
// 分发到 PHP
LaravelBridge.shared.send?(
"Vendor\\MyPlugin\\Events\\ProcessingComplete",
payload
)这在主线程上同步运行,所以如果需要,请包装在 DispatchQueue.main.async 中。
Kotlin 事件分发
使用 NativeActionCoordinator.dispatchEvent 分发事件:
kotlin
import android.os.Handler
import android.os.Looper
// 构建你的负载
val payload = JSONObject().apply {
put("result", processedData)
put("id", requestId)
}
// 必须在主线程上分发
Handler(Looper.getMainLooper()).post {
NativeActionCoordinator.dispatchEvent(
activity,
"Vendor\\MyPlugin\\Events\\ProcessingComplete",
payload.toString()
)
}始终使用主线程
事件分发涉及将 JavaScript 注入到 Web 视图中。这必须在主/UI 线程上发生,否则会静默失败。
官方插件和开发工具包
跳过复杂性——浏览现成的插件或获取开发工具包来构建你自己的。 访问 NativePHP 插件市场 →