• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 委托(delegate)知道由应用程序发起的电话何时结束

[复制链接]
菜鸟教程小白 发表于 2022-12-12 09:43:20 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个使用以下代码调用电话的代码:

// Make a call to given phone number
- (void)callPhoneNumberNSString *)phoneNumber
{
    if (!self.webview)
        self.webview = [[UIWebView alloc] init];
    self.webview.delegate = self;

    // Remove non-digits from phone number
    phoneNumber = [[phoneNumber componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString""];

    // Make a call
    NSURL * url = [NSURL URLWithString:[NSString stringWithFormat"tel:%@", phoneNumber]];
    [self.webview loadRequest:[NSURLRequest requestWithURL:url]];
    [self.view addSubview:self.webview];
}

这会打电话。我想要的是,我想知道用户何时结束通话。当用户结束通话时,我必须执行操作。有什么办法吗?

我尝试的是,我将 webview 的委托(delegate)设置为当前 Controller 。但是没有调用任何委托(delegate)方法。

- (void)webViewDidStartLoadUIWebView *)webView
{
    DLog(@"Start Loading");
}

- (void)webViewDidFinishLoadUIWebView *)webView
{
    DLog(@"Finish Loading");
}

- (void)webViewUIWebView *)webView didFailLoadWithErrorNSError *)error
{
    DLog(@"Did fail with error : %@", error);
}

我不知道您是否需要此信息,但我使用 webview,以便在调用电话时,流程仍保留在应用程序内,并且在通话结束时,会显示应用程序屏幕,而不是用户从 native 联系人应用程序手动进入应用程序.



Best Answer-推荐答案


CoreTelephony 框架有一个带有 callEventHandler 属性的 CTCallCenter 类。

@property (nonatomic, copy) void (^callEventHandler)(CTCall*);

您必须在应用程序中定义一个处理程序 block 并将其分配给此属性。 如果您的应用程序在调用事件发生时处于事件状态,则系统会在调用状态更改时立即将该事件分派(dispatch)给您的处理程序。引用发现的苹果文档here.

关于ios - 委托(delegate)知道由应用程序发起的电话何时结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23491047/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap