如何在我的应用程序中使用呼叫目录分机来识别来电?

如何在我的应用程序中使用呼叫目录分机来识别来电?

问题描述:

我正在致力于callKit框架,我发现通过使用呼叫目录扩展名,我们可以识别传入的电话号码。我的问题是如何在iOS应用中实现呼叫目录扩展以识别来电详细信息。我的目的C.如何在我的应用程序中使用呼叫目录分机来识别来电?

工作让许多“+ 919876xxxxx”呼叫目录扩展使用此方法添加:

- (BOOL)addIdentificationPhoneNumbersToContext:(CXCallDirectoryExtensionContext *)context { 
    // Numbers must be provided in numerically ascending order. 
    CXCallDirectoryPhoneNumber phoneNumbers[] = {+919876xxxxx}; 

    NSArray<NSString *> *labels = @[ @"Telemarketer"]; 
    NSUInteger count = (sizeof(phoneNumbers)/sizeof(CXCallDirectoryPhoneNumber)); 

    for (NSUInteger i = 0; i < count; i += 1) { 
     CXCallDirectoryPhoneNumber phoneNumber = phoneNumbers[i]; 
     NSString *label = labels[i]; 
     [context addIdentificationEntryWithNextSequentialPhoneNumber:phoneNumber label:label]; 
    } 
    return YES; 
} 

我的呼叫阻塞和识别功能在手机设置。 当我从这个号码呼叫时,它显示[应用名称]来电显示:电话推销员。

我的问题是如何知道我的应用程序中的这个数字,以便我在表格中显示此数字。

在此先感谢。

+0

很好,你要创建的扩展 –

+0

@ Anbu.Karthik ,是的,我想创建在iOS10中新增的电话目录扩展 –

+0

@Saurabh Jain你有解决方案吗?我有同样的问题,在我的应用程序呼叫阻止功能工作正常,但无法识别呼叫。如果你已经解决了,请帮助。 – Ved

如果这个问题不是如何写一个呼叫目录扩展,但是如何获得一个来电号码,我认为这是问题所在,那么它是不可能的。

当有来电时,不涉及通话目录分机。它所做的只是注册号码,该号码存储在电话应用专用的内部SQL数据库中。当有来电时,呼叫目录扩展程序不会运行,因此它和您的应用程序无法识别来电号码,这与以往一样,它在iOS 10中没有更改。

在iOS 10中添加了Voip应用程序的呼叫检测功能,但如果您不是voip应用程序,仍然无法获得传入(或传出)呼叫的号码。

+0

我可以在后台检测通话状态吗? –

首先,你需要让CallBlocker应用程序在应用程序设置为 遵循此 -

进入设置 - >电话 - >呼叫阻止&识别 - >启用您的 应用。

在使用addIdentificationEntry后添加的条目

private func addIdentificationPhoneNumbers(to context: CXCallDirectoryExtensionContext) throws { 

     let phoneNumbers: [CXCallDirectoryPhoneNumber] = [ 18775555555, +919899999999 ] 
     let labels = [ "Telemarketer", "Local business" ] 

     for (phoneNumber, label) in zip(phoneNumbers, labels) { 
      context.addIdentificationEntry(withNextSequentialPhoneNumber: phoneNumber, label: label) 
     } 
    } 

这是使用延长工作在Xcode 8.x中迅速3.X