import 'dart:async'; import 'package:jpush_flutter/jpush_flutter.dart'; import 'package:sino_med_cloud/push/push_message.dart'; import 'package:sino_med_cloud/push/push_service.dart'; import '../core/constants/app_enum.dart'; class JPushService implements PushService { final _jpush = JPush.newJPush(); final _receiveController = StreamController.broadcast(); final _openController = StreamController.broadcast(); final _messageController = StreamController.broadcast(); @override Future init() async { // 初始化 JPush _jpush.setup( appKey: '', // 从配置中获取 channel: '', // 从配置中获取 production: false, // 根据环境设置 ); // 添加事件处理器 _jpush.addEventHandler( onReceiveNotification: (Map message) async { _receiveController.add(PushMessage.fromJson(message)); }, onOpenNotification: (Map message) async { _openController.add(PushMessage.fromJson(message)); }, onReceiveMessage: (Map message) async { _messageController.add(PushMessage.fromJson(message)); }, ); } @override Stream onMessage(PushEventType type) { switch (type) { case PushEventType.receiveNotification: return _receiveController.stream; case PushEventType.openNotification: return _openController.stream; case PushEventType.receiveMessage: return _messageController.stream; } } @override Future setAlias(String alias) async { await _jpush.setAlias(alias); } @override Future deleteAlias() async { await _jpush.deleteAlias(); } @override Future addTags(List tags) async { await _jpush.addTags(tags); } @override Future cleanTags() async { await _jpush.cleanTags(); } void dispose() { _receiveController.close(); _openController.close(); _messageController.close(); } }