82 lines
2.8 KiB
Dart
82 lines
2.8 KiB
Dart
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<void> 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<String, dynamic> message) async {
|
|
AppLog.log("flutter onReceiveNotification: $message");
|
|
},
|
|
// 点击通知回调方法。
|
|
onOpenNotification: (Map<String, dynamic> message) async {
|
|
AppLog.log("flutter onOpenNotification: $message");
|
|
},
|
|
// 接收自定义消息回调方法。
|
|
onReceiveMessage: (Map<String, dynamic> 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();
|
|
}
|
|
}
|
|
}
|