import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:jpush_flutter/jpush_flutter.dart'; import 'package:star_lock/flavors.dart'; import 'package:star_lock/mine/minePersonInfo/minePersonInfoEditAccount/minePersonInfoEditAccount/mineUnbindPhoneOrEmail_entity.dart'; import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/push/message_management.dart'; import 'package:star_lock/tools/storage.dart'; import '../../app_settings/app_settings.dart'; class XSJPushProvider { final JPush jpush = JPush(); // appKey: 251fc8074820d122b6de58d2--鑫泓佳AppKey // appKey: 7ff37d174c1a568a89e98dad--sky Future initJPushService() async { final String? data = await Storage.getString(saveUserLoginData); if (data == null || data.isEmpty) { AppLog.log('No user data found.'); return; } String appKey; if (F.isSKY) { appKey = '7ff37d174c1a568a89e98dad'; } else { appKey = '251fc8074820d122b6de58d2'; } jpush.setup( appKey: appKey, channel: 'flutter_channel', production: false, debug: false, ); jpush.applyPushAuthority( const NotificationSettingsIOS(sound: true, alert: true, badge: false), ); addJPushEventHandler(); AppLog.log('JPush initialized.'); } //极光推送事件处理方法 void addJPushEventHandler() { jpush.addEventHandler( onReceiveNotification: (Map message) async { AppLog.log('onReceiveNotification: $message'); }, onOpenNotification: (Map message) async { AppLog.log('onOpenNotification: $message'); }, onReceiveMessage: (Map message) async { AppLog.log('onReceiveMessage: $message'); //这里接收自定义消息 MessageManagement.shunting(message); }, onReceiveNotificationAuthorization: (Map message) async { AppLog.log('onReceiveNotificationAuthorization: $message'); }, onInAppMessageShow: (Map message) async { AppLog.log('onInAppMessageShow: $message'); }, onConnected: (Map message) async { //绑定设备id final String rid = await jpush.getRegistrationID(); AppLog.log('onConnected registration id : $rid'); await Storage.setString(pushDeviceID, rid); await pushBindDeviceID(rid, Platform.isAndroid ? 10 : 20); return Future.value(); }, ); } Future pushBindDeviceID(String deviceID, int deviceType) async { try { final MineUnbindPhoneOrEmailEntity entity = await ApiRepository.to.pushBindAppId(deviceID, deviceType); if (entity.errorCode!.codeIsSuccessful) { AppLog.log('绑定成功'); } else { AppLog.log('绑定失败'); } } catch (e) { AppLog.log('Error binding device ID: $e'); } } //本地通知初始化 isCancelLocalPush 是否取消所有本地通知 Future initLocalNotification({required bool isCancelLocalPush}) async { WidgetsFlutterBinding.ensureInitialized(); final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); if (Platform.isAndroid) { const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('app_icon'); const InitializationSettings initializationSettings = InitializationSettings(android: initializationSettingsAndroid); await flutterLocalNotificationsPlugin.initialize(initializationSettings); } if (isCancelLocalPush) { await flutterLocalNotificationsPlugin.cancelAll(); } } }