| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 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<PushMessage>.broadcast();
- final _openController = StreamController<PushMessage>.broadcast();
- final _messageController = StreamController<PushMessage>.broadcast();
- @override
- Future<void> init() async {
- // 初始化 JPush
- _jpush.setup(
- appKey: '', // 从配置中获取
- channel: '', // 从配置中获取
- production: false, // 根据环境设置
- );
- // 添加事件处理器
- _jpush.addEventHandler(
- onReceiveNotification: (Map<String, dynamic> message) async {
- _receiveController.add(PushMessage.fromJson(message));
- },
- onOpenNotification: (Map<String, dynamic> message) async {
- _openController.add(PushMessage.fromJson(message));
- },
- onReceiveMessage: (Map<String, dynamic> message) async {
- _messageController.add(PushMessage.fromJson(message));
- },
- );
- }
- @override
- Stream<PushMessage> 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<void> setAlias(String alias) async {
- await _jpush.setAlias(alias);
- }
- @override
- Future<void> deleteAlias() async {
- await _jpush.deleteAlias();
- }
- @override
- Future<void> addTags(List<String> tags) async {
- await _jpush.addTags(tags);
- }
- @override
- Future<void> cleanTags() async {
- await _jpush.cleanTags();
- }
- void dispose() {
- _receiveController.close();
- _openController.close();
- _messageController.close();
- }
- }
|