我开发了一个带有flutter的应用程序,该应用程序具有与OneSignal聊天和通知系统,在该应用程序中,playerId在该应用程序首次打开时被注册,并在用户登录系统时链接到该用户。
用户还可以选择保持登录状态!
用例:
当用户选择保持登录状态时,这很好,因为他通常会收到您的聊天通知。 但是当他选择不登录时,我面临一个问题。
虽然他正在使用该应用程序,但应该将其链接至playerId,但是当他关闭该应用程序时(无论他如何操作,因为在手机上这可以通过多种方式完成),您应该调用该函数取消用户与playerId的链接,使其不再接收聊天通知!
我的问题是,关闭应用程序后如何执行此功能?
我想这样做是因为用户可以在不同的智能手机上访问系统。
我想到了WillPopScope,但这只能在返回指挥棒被触发时进行检测。
有人可以帮助我吗?谢谢!
答案 0 :(得分:0)
您可以尝试监听应用程序的生命周期事件
https://medium.com/pharos-production/flutter-app-lifecycle-4b0ab4a4211a
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
class LifecycleEventHandler extends WidgetsBindingObserver {
LifecycleEventHandler({this.resumeCallBack, this.suspendingCallBack});
final AsyncCallback resumeCallBack;
final AsyncCallback suspendingCallBack;
@override
Future<Null> didChangeAppLifecycleState(AppLifecycleState state) async {
switch (state) {
case AppLifecycleState.inactive:
case AppLifecycleState.paused:
case AppLifecycleState.suspending:
await suspendingCallBack();
break;
case AppLifecycleState.resumed:
await resumeCallBack();
break;
}
}
}
class AppWidgetState extends State<AppWidget> {
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(
new LifecycleEventHandler(resumeCallback(() => setState((){}))
);
}
...
}