---
title: "reportNewIncomingVoIPPushPayload(_:completion:)"
framework: callkit
role: symbol
role_heading: Type Method
path: "callkit/cxprovider/reportnewincomingvoippushpayload(_:completion:)"
---

# reportNewIncomingVoIPPushPayload(_:completion:)

Reports a new incoming call after your notification service extension decrypts a VoIP call request.

## Declaration

```swift
class func reportNewIncomingVoIPPushPayload(_ dictionaryPayload: [AnyHashable : Any], completion: (@Sendable ((any Error)?) -> Void)? = nil)
```

```swift
class func reportNewIncomingVoIPPushPayload(_ dictionaryPayload: [AnyHashable : Any]) async throws
```

## Parameters

- `dictionaryPayload`: A dictionary containing additional data about the incoming call. All keys and values in the dictionary must implement the doc://com.apple.documentation/documentation/Foundation/NSSecureCoding protocol.
- `completion`: A block that CallKit executes after allowing or disallowing the call. CallKit executes the block on a private serial queue. The completion handler takes the following parameter:

## Mentioned in

Sending End-to-End Encrypted VoIP Calls

## Discussion

Discussion important: You can call this method from synchronous code using a completion handler, as shown on this page, or you can call it as an asynchronous method that has the following declaration: class func reportNewIncomingVoIPPushPayload(_ dictionaryPayload: [AnyHashable : Any]) async throws For information about concurrency and asynchronous code in Swift, see Calling Objective-C APIs Asynchronously. Call this method when your notification service extension receives an encrypted VoIP call request. The system then launches your app and calls your pushRegistry(_:didReceiveIncomingPushWith:for:completion:) method. From this point, the app handles the call just like any incoming VoIP call. For more information, see Sending End-to-End Encrypted VoIP Calls. To call this method, your notification service extension must have the com.apple.developer.usernotifications.filtering entitlement. important: Only call this method when your server can’t determine whether an outgoing notification is a request for a VoIP call or some other data (such as a text message) due to metadata encryption. If your server knows that the outgoing content is a VoIP call, send a voIP push notification instead. For more information, see PushKit.

## See Also

### Reporting Calls

- [reportNewIncomingCall(with:update:completion:)](callkit/cxprovider/reportnewincomingcall(with:update:completion:).md)
- [com.apple.developer.usernotifications.filtering](bundleresources/entitlements/com.apple.developer.usernotifications.filtering.md)
- [reportOutgoingCall(with:startedConnectingAt:)](callkit/cxprovider/reportoutgoingcall(with:startedconnectingat:).md)
- [reportOutgoingCall(with:connectedAt:)](callkit/cxprovider/reportoutgoingcall(with:connectedat:).md)
- [reportCall(with:updated:)](callkit/cxprovider/reportcall(with:updated:).md)
- [reportCall(with:endedAt:reason:)](callkit/cxprovider/reportcall(with:endedat:reason:).md)
