Flutter:点击Connectycube CallKit通知接听按钮触发指定方法而非启动应用
问题描述
//当收到FCM通知时触发Connectycube来电

我尝试在点击connectycube_flutter_callkit通知的接听按钮时执行特定方法,但操作后会直接启动应用,请问该如何解决?
解决方法
针对connectycube_flutter_callkit接听按钮的点击逻辑,你可以通过以下步骤拦截并执行自定义操作,避免直接启动应用:
- 接管CallKit的接听回调
在初始化Connectycube CallKit时,配置onAcceptCall回调,把你的特定方法放在这里执行,替代系统默认的启动应用行为。示例代码:
ConnectycubeFlutterCallkit.instance.configure( onAcceptCall: (CallEvent event) async { // 先执行你的自定义方法 await yourCustomMethod(event.callId); // 如果确实需要跳转页面,再手动触发导航,否则可以省略这一步 // Get.to(() => CallPage(callId: event.callId)); }, // 其他必要的回调配置... );
- 调整FCM消息类型
确保后端推送的是数据消息而非通知消息,这样应用在后台时能直接处理消息内容,不用依赖系统弹出默认通知。处理FCM消息时手动触发来电,并关联自定义逻辑:
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { if (message.data['type'] == 'call') { Call call = Call.fromMap(message.data); // 触发来电界面 ConnectycubeFlutterCallkit.instance.displayIncomingCall(call); // 提前执行自定义方法 await yourCustomMethod(call.id); } });
- 修改原生端配置
- Android:在
AndroidManifest.xml里,确保处理来电的Activity不是默认启动页;或者在该Activity的onCreate方法中判断是否是来电触发,如果是则直接执行逻辑,不加载主页面。 - iOS:在
AppDelegate.swift中用CXCallObserver监听来电接听事件,在回调里执行自定义代码,阻止应用跳转到默认启动页。
- 关闭自动启动配置
检查connectycube_flutter_callkit的配置项,若有类似autoLaunchAppOnAccept的参数,将其设置为false,让自定义回调完全接管逻辑。
内容的提问来源于stack exchange,提问作者alaa
相关产品推荐
相关产品推荐

