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/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/storage.dart'; import '../app_settings/app_settings.dart'; class XSJPushProvider { final JPush jpush = JPush(); Future initJPushService() async { final data = await Storage.getString(saveUserLoginData); if (data != null && data.isNotEmpty) { jpush.setup( appKey: "7ff37d174c1a568a89e98dad", channel: "flutter_channel", production: false, debug: false, ); jpush.addEventHandler( // 接收通知回调方法。 onReceiveNotification: (Map message) async { AppLog.log("flutter onReceiveNotification: $message"); }, // 点击通知回调方法。 onOpenNotification: (Map message) async { AppLog.log("flutter onOpenNotification: $message"); }, // 接收自定义消息回调方法。 onReceiveMessage: (Map message) async { AppLog.log("flutter onReceiveMessage: $message"); }, ); jpush.applyPushAuthority( const NotificationSettingsIOS(sound: true, alert: true, badge: true)); // jpush.setChannelAndSound( // channel: "flutter_channel", channelID: "115700", sound: "default"); // Platform messages may fail, so we use a try/catch PlatformException. jpush.getRegistrationID().then((rid) { AppLog.log("flutter get registration id : $rid"); Storage.setString( pushDeviceID, rid, ); pushBindDeviceID(rid, Platform.isAndroid ? 10 : 20); }); } } void pushBindDeviceID(String deviceID, int deviceType) async { var entity = await ApiRepository.to.pushBindAppId(deviceID, deviceType); if (entity.errorCode!.codeIsSuccessful) { AppLog.log("绑定成功"); } } //本地通知初始化 isCancelLocalPush 是否取消所有本地通知 initLocalNotification(bool isCancelLocalPush) async { WidgetsFlutterBinding.ensureInitialized(); final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('app_icon'); if (Platform.isAndroid) { const InitializationSettings initializationSettings = InitializationSettings(android: initializationSettingsAndroid); await flutterLocalNotificationsPlugin.initialize(initializationSettings); } if (isCancelLocalPush) { await flutterLocalNotificationsPlugin.cancelAll(); } } }