可以将电话与flutter合并吗?

问题描述 投票:0回答:1

我想知道在通话过程中是否可以将当前通话与使用 Flutter 开发的应用程序进行的另一个通话合并?

在通话期间,我希望能够从我的应用程序添加另一个通话,并自动合并两个通话。

我一直找不到带电话控制的flutter包。

问候

android ios flutter telephony
1个回答
1
投票

我认为对于

iOS
,最好使用
CallKit framework
来处理呼叫管理,而在
Android
中,最好使用
Android TelephonyManager
Call APIs
以编程方式控制电话呼叫,所以让我向您展示一个示例,但请注意,这只是一个演示呼叫合并概念的基本示例!!!

iOS
和在
Objective-C

#import <CallKit/CallKit.h>

@interface CallMergeManager : NSObject
@property (nonatomic, strong) CXCallController *callController;
@end

@implementation CallMergeManager

- (instancetype)init {
    self = [super init];
    if (self) {
        _callController = [[CXCallController alloc] init];
    }
    return self;
}

- (void)mergeCalls {
    CXSetMutedCallAction *mergeAction = [[CXSetMutedCallAction alloc] initWithCallUUID:[NSUUID UUID] muted:NO];
    CXTransaction *transaction = [[CXTransaction alloc] initWithAction:mergeAction];
    [self.callController requestTransaction:transaction completion:^(NSError * _Nullable error) {
        if (error) {
            NSLog(@"merging calls error: %@", error);
        }
    }];
}

@end

Android
java
中,类似这样 :

public class CallMergeManager {
    private TelephonyManager telephonyManager;

    public CallMergeManager(Context context) {
        telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    }

    public void mergeCalls() {
        telephonyManager.mergeCalls();
    }
}

现在,在

Flutter
中,您可以定义一个平台通道来与原生代码进行通信,如下所示(iOS 和 Android)

import 'package:flutter/services.dart';

final MethodChannel _channel = MethodChannel('call_merge_channel');

Future<void> mergeCalls() async {
  try {
    await _channel.invokeMethod('mergeCalls');
  } catch (e) {
    print('merging calls error: $e');
  }
}

以及从

mergeCalls
调用
Flutter
来触发呼叫合并:

mergeCalls();

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.