【问题标题】:iOS - Can I open my VoIP app on answering call using Callkit?iOS - 我可以在使用 Callkit 接听电话时打开我的 VoIP 应用程序吗?
【发布时间】:2017-01-19 10:59:55
【问题描述】:

我打算创建一个 iOS VoIP 应用程序(之前没有做过任何 iOS 应用程序)。我正在阅读 IOS 中的 Callkit,通过它可以让他的应用程序通过 iPhone 原生通话屏幕接听电话。

我阅读了 Callkit api here,其中提到可以知道是否接听了电话。

通过this 教程,这里是检测呼叫被应答的代码:

-(void)reportIncomingCallWithHandle:(NSString *)handle
                            success:(void (^)())success
                            failure:(void (^)(NSError * error))failure {
    CXCallUpdate *update = [self newCallUpdateWithHandle:handle];
    self.callId = [NSUUID UUID];

    [self.provider reportNewIncomingCallWithUUID:self.callId update:update completion:^(NSError * _Nullable error) {
        if (error) {
            if (failure) failure(error);
        } else {
            if (success) {
                success();
            }
        }
    }];
}

查看成功块。那么有没有办法在这个成功块执行时打开我的应用程序?或者我可以覆盖来电屏幕上的默认按钮来打开我的应用程序吗?

我知道在收到任​​何类型的通知或事件触发器时无法打开应用程序。因此,如果我可以使用 Callkit

做同样的事情,可能会有一些方法

我在 Google 上搜索了所有内容,但没有发现有关上述查询的任何线索。如果可能,请帮助我。

【问题讨论】:

    标签: ios objective-c iphone


    【解决方案1】:

    您无法从 CallKit 打开自己的 VoIP 应用或应用的自定义 UI。使用可以像 Whatsapp 一样使用它。

    意味着您可以在不使用本地通知的情况下从后台唤醒您的应用。操作系统将显示默认的传入屏幕。您无需在通话期间处理任何事情。 CallKit 专门用于通过在后台接听电话、拨出电话、管理呼叫目录和阻止用户来增强 VoIP 应用程序。

    【讨论】:

    • 查看 Stuart 对此stackoverflow.com/a/39678893/4512651 的评论。他说如果屏幕未锁定,应用程序将打开。
    • 只有在你的应用中实现了CallKit后才会打开应用。
    • @KrishnaDattShukla 我还有另一个问题,在我的情况下,如果屏幕被锁定,音频没有通过,如果我在通话时打开应用程序,它就会开始工作。你对此有什么想法吗?
    • @Sonu,你在使用呼叫套件吗?
    • @KrishnaDattShukla 是的,我正在使用它。有时第一个电话在锁定屏幕上工作,但有时并非总是如此。当我解锁屏幕时,它会正常启动音频流。对于通话,我正在使用 AppRTC
    【解决方案2】:

    我遇到了同样的问题。行为取决于设备是否被锁定。

    1. 锁定:出现系统调用屏幕。您可以在后台运行应用程序,包括视图转换。但是,尽管您的应用程序显示在视图下方,但用户只会看到系统调用屏幕。由于设备被锁定,深层链接也无法正常工作。
    2. 解锁:通话屏幕是一样的,但一旦用户接听电话,应用程序就会出现。

    您可能知道,我们可以更改打开应用程序的呼叫屏幕上按钮的图标,这是目前我们能做的最好的事情。

    【讨论】:

    • 我们如何更改打开应用程序的呼叫屏幕上的按钮图标?
    • @VarinderSingh 在 CXProviderConfiguration 中有这个图标的属性。查看文档了解详细信息developer.apple.com/documentation/callkit/…
    • @Leetmorry。谢谢,解决了。
    • @Yusuke Kawanabe 我也面临同样的问题,如果我从锁定屏幕回答,音频流无法正常工作,您找到解决方案了吗?
    • @Sonu 您无需做任何特别的事情,只需授予音频权限并打开 VoIP 会话。如果我没记错的话,当设备被锁定并且应用程序在后台运行时,您无法获得麦克风权限。
    猜你喜欢
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    相关资源
    最近更新 更多