D
DGuardAPI Documentation

Spam Call Protection

SDK for spam call identification and blocking. Integrates with native call systems on iOS and Android.

Features

  • Updatable spam number database
  • Real-time call identification
  • Configurable automatic blocking
  • Spam number reporting
  • Integration with Call Directory (iOS) and Call Screening (Android)

Installation

iOS (Swift Package Manager)

dependencies: [
    .package(url: "https://github.com/dguard/dguard-call-ios.git", from: "1.0.0")
]

Android (Gradle)

implementation 'io.dguard:call-filter-sdk:1.0.0'

Basic Usage

iOS

import DGuardCallFilter

// Initialize
let callFilter = DGuardCallFilter(apiKey: "your_api_key")

// Check Number
let result = callFilter.checkNumber("+34900123456")

if result.isSpam {
    print("Spam detected: \(result.spamType)")
    print("Reports: \(result.reportCount)")
}

// Update Database & Call Directory
callFilter.updateDatabase { success in
    if success {
        callFilter.reloadCallDirectoryExtension()
    }
}

// Report Number
callFilter.reportNumber(
    phoneNumber: "+34900123456",
    spamType: .telemarketing,
    comment: "Repeated advertising calls"
)

Android

import io.dguard.call.DGuardCallFilter

// Initialize
val callFilter = DGuardCallFilter.Builder(context)
    .apiKey("your_api_key")
    .autoBlock(true) // Automatic blocking
    .build()

// Register as Call Screening Service
callFilter.registerAsCallScreeningService()

// Check Number
val result = callFilter.checkNumber("+34900123456")

if (result.isSpam) {
    Log.w("Call", "Spam: ${result.spamType}")
}

// Blocking Levels
callFilter.setBlockingLevel(BlockingLevel.AGGRESSIVE) // NONE, MODERATE, AGGRESSIVE

iOS - Call Directory Extension

Configure Call Directory Extension in your iOS project:

// CallDirectoryHandler.swift
import CallKit
import DGuardCallFilter

class CallDirectoryHandler: CXCallDirectoryProvider {
    
    let callFilter = DGuardCallFilter(apiKey: "your_api_key")
    
    override func beginRequest(with context: CXCallDirectoryExtensionContext) {
        // Add blocked numbers
        let blockedNumbers = callFilter.getBlockedNumbers()
        for number in blockedNumbers {
            context.addBlockingEntry(withNextSequentialPhoneNumber: number)
        }
        
        // Add call identification
        let identifiedNumbers = callFilter.getIdentifiedNumbers()
        for (number, label) in identifiedNumbers {
            context.addIdentificationEntry(
                withNextSequentialPhoneNumber: number,
                label: label
            )
        }
        
        context.completeRequest()
    }
}

API Endpoint

The SDK syncs with the DGuard API:

GET/calls/database

Get spam call database

Required Permissions

Android

<!-- Call Filter -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />

iOS Capabilities

  • Call Directory Extension
  • App Groups (for data sharing)