ios 有可能把一个电话和扑翼合并吗?

mnemlml8  于 2023-08-08  发布在  iOS
关注(0)|答案(1)|浏览(106)

我想知道是否有可能,在电话通话中,将当前通话与另一个由Flutter开发的应用程序进行的通话合并?
在通话过程中,我希望能够从我的应用程序添加另一个呼叫,并自动合并两个呼叫。
我找不到一个带有电话控制的Flat包。
谨致问候

u1ehiz5o

u1ehiz5o1#

我认为对于iOS,最好使用CallKit framework来处理呼叫管理,而在Android中,最好使用Android TelephonyManagerCall APIs来以编程方式控制电话呼叫,所以让我用一个例子来展示,但要注意,这只是一个基本的例子来演示呼叫合并的概念!!!
iOSObjective-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

字符串
Androidjava中,类似这样:

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');
  }
}


Flutter调用mergeCalls触发呼叫合并:

mergeCalls();


祝你好运!

相关问题