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, AGGRESSIVEiOS - 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/databaseGet 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)