我有一个使用以下代码调用电话的代码:
// 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-推荐答案 strong>
CoreTelephony 框架有一个带有 callEventHandler 属性的 CTCallCenter 类。
@property (nonatomic, copy) void (^callEventHandler)(CTCall*);
您必须在应用程序中定义一个处理程序 block 并将其分配给此属性。
如果您的应用程序在调用事件发生时处于事件状态,则系统会在调用状态更改时立即将该事件分派(dispatch)给您的处理程序。引用发现的苹果文档here.
关于ios - 委托(delegate)知道由应用程序发起的电话何时结束,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/23491047/
|