tencent cloud

Tencent Real-Time Communication

소식 및 공지 사항
제품 업데이트
Tencent Cloud 오디오/비디오 단말 SDK 재생 업그레이드 및 권한 부여 인증 추가
TRTC 월간 구독 패키지 출시 관련 안내
제품 소개
제품 개요
기본 개념
제품 기능
제품 장점
응용 시나리오
성능 데이터
구매 가이드
Billing Overview
무료 시간 안내
Monthly subscription
Pay-as-you-go
TRTC Overdue and Suspension Policy
과금 FAQ
Refund Instructions
신규 사용자 가이드
Demo 체험
Call
개요(TUICallKit)
Activate the Service
Run Demo
빠른 통합(TUICallKit)
오프라인 푸시
Conversational Chat
온클라우드 녹화(TUICallKit)
AI Noise Reduction
UI 사용자 정의
Calls integration to Chat
Additional Features
No UI Integration
Server APIs
Client APIs
Solution
ErrorCode
릴리스 노트
FAQs
라이브 스트리밍
Billing of Video Live Component
Overview
Activating the Service (TUILiveKit)
Demo 실행
No UI Integration
UI Customization
Live Broadcast Monitoring
Video Live Streaming
Voice Chat Room
Advanced Features
Client APIs
Server APIs
Error Codes
Release Notes
FAQs
RTC Engine
Activate Service
SDK 다운로드
API 코드 예시
Usage Guidelines
API 클라이언트 API
고급 기능
RTC RESTFUL API
History
Introduction
API Category
Room Management APIs
Stream mixing and relay APIs
On-cloud recording APIs
Data Monitoring APIs
Pull stream Relay Related interface
Web Record APIs
AI Service APIs
Cloud Slicing APIs
Cloud Moderation APIs
Making API Requests
Call Quality Monitoring APIs
Usage Statistics APIs
Data Types
Appendix
Error Codes
콘솔 가이드
애플리케이션 관리
사용량 통계
모니터링 대시보드
개발 보조
Solution
Real-Time Chorus
FAQs
과금 개요
기능 관련
UserSig 관련
방화벽 제한 처리
설치 패키지 용량 축소 관련 질문
Andriod 및 iOS 관련
Web 관련
Flutter 관련
Electron 관련
TRTCCalling Web 관련
멀티미디어 품질 관련
기타 질문
Protocols and Policies
컴플라이언스 인증
보안 백서
정보 보안에 관한 참고 사항
Service Level Agreement
Apple Privacy Policy: PrivacyInfo.xcprivacy
TRTC 정책
개인 정보 보호 정책
데이터 처리 및 보안 계약
용어집

VoIP(Apple LiveCommunicationKit)

PDF
포커스 모드
폰트 크기
마지막 업데이트 시간: 2025-07-30 11:06:56
TUICallKit component supports VoIP push functionality through the TUIVoIPExtension/LiveCommunicationKit push plugin. TUICallKit provides you with two integration methods: TUIVoIPExtension/LiveCommunicationKit plugin (paid) and self-integrated push (free). We recommend using the TUIVoIPExtension/LiveCommunicationKit push plugin to implement offline push. The TUIVoIPExtension/LiveCommunicationKit push plugin has the following advantages:
Short integration cycle, expected full vendor integration takes only 30 minutes.
Supports data statistics and link tracking, making it convenient for you to view various metrics such as push reach rate, click rate, and conversion rate.
Better audio/video call notification effects, improving call reach rate.
Supports cross-platform frameworks such as Flutter.
Note:
TUIVoIPExtension is a sub-module of TIMPush. Due to the special nature of VoIP push, TUIVoIPExtension is released independently. To use the TUIVoIPExtension plugin, you first need to activate TIMPush service.
Description
TUIVoIPExtension/LiveCommunicationKit plugin needs to be used on iOS 17.4 and above systems.
VoIP Push cannot reuse APNs regular push certificates and requires a separate VoIP Push certificate application on the Apple Developer website.

Integration Effect

Before Answering Effect
After Answering Effect








Prerequisites

1. Activate Service

Go to IM Console > Plugin Market, click Buy Now or Free Trial (each application can have one free trial, valid for 7 days).

Note:
After the push plugin trial or purchase expires, push services (including regular message offline push, all-user/tag push, and other services) will automatically stop. To avoid affecting your normal business operations, please purchase/renew in advance.

2. Vendor Configuration

Step 1: Apply for VoIP Push Certificate

Before applying for a VoIP Push certificate, please first log in to the Apple Developer Center website and enable remote push functionality for your App. After your AppID has Push Notification capability, follow these steps to apply for and configure the VoIP Push certificate:
1. Log in to the Apple Developer Center website, click Certificates, IDs & Profiles tab, then Certificates, to enter the Certificates, Identifiers & Profiles page.

2. Click the + next to Certificates.

3. In the Create a New Certificate tab, select VoIP Services Certificate, and click Continue.
4. In the Select an App ID for your VoIP Service Certificate tab, select your current App's BundleID, and click Continue.
5. Next, the system prompts that we need a Certificate Signing Request (CSR).
6. We will create a CSR file next. First, open Keychain Access on Mac, select Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority from the menu (Keychain Access - Certificate Assistant - Request a Certificate From a Certificate Authority).

7. Enter your email address, common name (your name or company name), select Save to disk, click continue, and the system will generate a *.certSigningRequest file.
Return to the Apple Developer website page from Step 5 above, click Choose File to upload the generated *.certSigningRequest file.

8. Click Continue to generate the certificate, then click Download to download the corresponding certificate to your local machine.
9. Double-click to open the downloaded voip_services.cer, and the system will import it into the keychain.
10. Open the Keychain application, go to Login > My Certificates, right-click to export the newly created VoIP Services P12 file.
Description:
When saving the P12 file, please make sure to set a password for it.

Step 2: Upload Certificate to IM Console

Open IM Console, select your created IM application, and follow these steps to upload the certificate:
1. Select your IM application, go to the Access Settings page of Push.

2. In Vendor Configuration, switch to iOS, click the Add Certificate button, then select the certificate type in the floating page, upload the iOS certificate (p.12), set the certificate password, and click Confirm.

Description
When adding certificates, the push type defaults to APNS, which does not affect the upload and use of VoIP certificates.
VoIP Push certificates themselves do not distinguish between production and testing environments. Production and development environments use the same VoIP Push certificate, please upload separately.
Certificate names uploaded should preferably use all English (especially avoid special characters like parentheses).
Uploaded certificates need to set a password, otherwise push notifications cannot be received.
Certificates for App Store release need to be set to production environment, otherwise push notifications cannot be received.
The uploaded p12 certificate must be a real and valid certificate you applied for yourself.
3. After upload is complete, record the certificate IDs for different environments.

Description
Certificate IDs for development and production environments must be strictly distinguished, please fill in according to the actual environment.

Feature Integration

1. Complete Project Configuration

1. As shown in the figure below, confirm whether your project's Capability has added Push Notification capability.

2. As shown in the figure below, please check whether the Voice over IP option is enabled in your project's Capability Background Modes.


2. Integrate TUIVoIPExtension Component

Use CocoaPods to import the component, follow these specific steps:
1. Add the following dependency to your Podfile file.
pod 'TUIVoIPExtension/LiveCommunicationKit'
2. Execute the following command to install the component.
pod update
3. Report the console certificate ID.
Swift
Objective-C
import TUIVoIPExtension

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Report certificate ID
TUIVoIPExtension.setCertificateID(1234)
return true
}
#import <TUIVoIPExtension/TUIVoIPExtension.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//Report certificate ID
[TUIVoIPExtension setCertificateID:1234];
return YES;
}

Make VoIP Calls

If you need to make VoIP calls, you need to set the iOSPushType field in OfflinePushInfo to TUICallIOSOfflinePushTypeVoIP when calling calls, the default is TUICallIOSOfflinePushTypeAPNs.
Swift
Java
Dart
Objective-C
import TUICallKit_Swift
import TUICallEngine

let pushInfo: TUIOfflinePushInfo = TUIOfflinePushInfo()
pushInfo.title = ""
pushInfo.desc = "You have a new call"
pushInfo.iOSPushType = .voip
pushInfo.ignoreIOSBadge = false
pushInfo.iOSSound = "phone_ringing.mp3"
pushInfo.androidSound = "phone_ringing"
// OPPO must set a ChannelID to receive push messages. This channelID needs to be the same as the console.
pushInfo.androidOPPOChannelID = "tuikit"
// FCM channel ID, you need change PrivateConstants.java and set "fcmPushChannelId"
pushInfo.androidFCMChannelID = "fcm_push_channel"
// VIVO message type: 0-push message, 1-System message(have a higher delivery rate)
pushInfo.androidVIVOClassification = 1
// HuaWei message type: https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835
pushInfo.androidHuaWeiCategory = "IM"

let params = TUICallParams()
params.userData = "User Data"
params.timeout = 30
params.offlinePushInfo = pushInfo

TUICallKit.createInstance().calls(userIdList: ["123456"], callMediaType: .audio, params: params) {

} fail: { code, message in

}
TUICallDefine.OfflinePushInfo offlinePushInfo = new TUICallDefine.OfflinePushInfo();
offlinePushInfo.setTitle("");
offlinePushInfo.setDesc("You have receive a new call");
// For OPPO, you must set the `ChannelID` to receive push messages. The `ChannelID` must be identical with that in the console.
// OPPO must set a ChannelID to receive push messages. This channelID needs to be the same as the console.
offlinePushInfo.setAndroidOPPOChannelID("tuikit");
offlinePushInfo.setIgnoreIOSBadge(false);
offlinePushInfo.setIOSSound("phone_ringing.mp3");
offlinePushInfo.setAndroidSound("phone_ringing"); //Note:don't add suffix
//VIVO message type: 0-push message, 1-System message(have a higher delivery rate)
offlinePushInfo.setAndroidVIVOClassification(1);
//FCM channel ID, you need change PrivateConstants.java and set "fcmPushChannelId"
offlinePushInfo.setAndroidFCMChannelID("fcm_push_channel");
//Huawei message type
offlinePushInfo.setAndroidHuaWeiCategory("IM");
//IOS push type: if you want user VoIP, please modify type to TUICallDefine.IOSOfflinePushType.VoIP
offlinePushInfo.setIOSPushType(TUICallDefine.IOSOfflinePushType.VoIP);

TUICallDefine.CallParams params = new TUICallDefine.CallParams();
params.offlinePushInfo = offlinePushInfo;

List<String> list = new ArrayList<>();
list.add("mike")
TUICallKit.createInstance(context).calls(list, TUICallDefine.MediaType.Video, params, null);
TUIOfflinePushInfo offlinePushInfo = TUIOfflinePushInfo();
offlinePushInfo.title = "Flutter TUICallKit";
offlinePushInfo.desc = "This is an incoming call from Flutter TUICallkit";
offlinePushInfo.ignoreIOSBadge = false;
offlinePushInfo.iOSSound = "phone_ringing.mp3";
offlinePushInfo.androidSound = "phone_ringing";
offlinePushInfo.androidOPPOChannelID = "Flutter TUICallKit";
offlinePushInfo.androidVIVOClassification = 1;
offlinePushInfo.androidFCMChannelID = "fcm_push_channel";
offlinePushInfo.androidHuaWeiCategory = "Flutter TUICallKit";
offlinePushInfo.iOSPushType = TUICallIOSOfflinePushType.VoIP;

TUICallParams params = TUICallParams(offlinePushInfo: offlinePushInfo);
TUICallKit.instance.calls(['vince'], TUICallMediaType.audio, params);
#import <TUICallKit_Swift/TUICallKit_Swift-Swift.h>
#import <RTCRoomEngine/TUICallEngine.h>

- (TUICallParams *)getCallParams {
TUIOfflinePushInfo *offlinePushInfo = [self createOfflinePushInfo];
TUICallParams *callParams = [TUICallParams new];
callParams.offlinePushInfo = offlinePushInfo;
callParams.timeout = 30;
return callParams;
}

- (TUIOfflinePushInfo *)createOfflinePushInfo {
TUIOfflinePushInfo *pushInfo = [TUIOfflinePushInfo new];
pushInfo.title = @"";
pushInfo.desc = @"You have a new call";
pushInfo.iOSPushType = TUICallIOSOfflinePushTypeVoIP;
pushInfo.ignoreIOSBadge = NO;
pushInfo.iOSSound = @"phone_ringing.mp3";
pushInfo.AndroidSound = @"phone_ringing";
// For OPPO, you must set the `ChannelID` to receive push messages. The `ChannelID` must be identical with that in the console.
// OPPO must set a ChannelID to receive push messages. This channelID needs to be the same as the console.
pushInfo.AndroidOPPOChannelID = @"tuikit";
// FCM channel ID, you need change PrivateConstants.java and set "fcmPushChannelId"
pushInfo.AndroidFCMChannelID = @"fcm_push_channel";
// VIVO message type: 0-push message, 1-System message(have a higher delivery rate)
pushInfo.AndroidVIVOClassification = 1;
// HuaWei message type: https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835
pushInfo.AndroidHuaWeiCategory = @"IM";
return pushInfo;
}

[[TUICallKit createInstance] calls:@[@"123456"]
callMediaType:TUICallMediaTypeAudio
params:[self getCallParams] succ:^{

} fail:^(int code, NSString * _Nullable errMsg) {

}];Objective-C

Common Issues

1. Cannot get VoIP Push, how to handle?

1. First check whether the App's running environment and certificate environment are consistent, and whether the certificate ID matches. If they are inconsistent, push notifications cannot be received.
2. Please confirm whether the current logged-in account is in offline status: press home key to switch to background, or actively kill the process after login. VoIP Push currently only supports push notifications in offline status.
3. Check whether Complete Project Configuration is correct.
4. Try restarting the test phone to clear system cache and memory (very important).

2. How to Self-Integrate VoIP Push Functionality

We also support you to integrate VoIP push capabilities yourself through SDK methods. The overall solution design is as follows:

Related process description:
1. Refer to Vendor Configuration to apply for VoIP push certificates, and upload certificates on IM console to get certificate ID.
2. Refer to Apple PushKit to use and get device token.
3. Use IMSDK's setVOIP interface to report device token to IM server.
4. Refer to Apple LiveCommunicationKit to use and display push popup.
5. Refer to TUICallKit interface usage to initiate VoIP calls.


도움말 및 지원

문제 해결에 도움이 되었나요?

피드백