You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter:点击Connectycube CallKit通知接听按钮触发指定方法而非启动应用

问题描述

//当收到FCM通知时触发Connectycube来电

来电通知界面

我尝试在点击connectycube_flutter_callkit通知的接听按钮时执行特定方法,但操作后会直接启动应用,请问该如何解决?

解决方法

针对connectycube_flutter_callkit接听按钮的点击逻辑,你可以通过以下步骤拦截并执行自定义操作,避免直接启动应用:

  1. 接管CallKit的接听回调
    在初始化Connectycube CallKit时,配置onAcceptCall回调,把你的特定方法放在这里执行,替代系统默认的启动应用行为。示例代码:
ConnectycubeFlutterCallkit.instance.configure(
  onAcceptCall: (CallEvent event) async {
    // 先执行你的自定义方法
    await yourCustomMethod(event.callId);
    
    // 如果确实需要跳转页面,再手动触发导航,否则可以省略这一步
    // Get.to(() => CallPage(callId: event.callId));
  },
  // 其他必要的回调配置...
);
  1. 调整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);
  }
});
  1. 修改原生端配置
  • Android:在AndroidManifest.xml里,确保处理来电的Activity不是默认启动页;或者在该Activity的onCreate方法中判断是否是来电触发,如果是则直接执行逻辑,不加载主页面。
  • iOS:在AppDelegate.swift中用CXCallObserver监听来电接听事件,在回调里执行自定义代码,阻止应用跳转到默认启动页。
  1. 关闭自动启动配置
    检查connectycube_flutter_callkit的配置项,若有类似autoLaunchAppOnAccept的参数,将其设置为false,让自定义回调完全接管逻辑。

内容的提问来源于stack exchange,提问作者alaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:35:20