产品动态
产品近期公告
关于 TRTC Live 正式上线的公告
关于TRTC Conference 正式版上线的公告
Conference 商业化版本即将推出
关于多人音视频 Conference 开启内测公告
关于音视频通话 Call 正式版上线的公告
关于腾讯云音视频终端 SDK 播放升级及新增授权校验的公告
关于 TRTC 应用订阅套餐服务上线的相关说明
Android(FCM) | iOS(APNs) |
![]() | ![]() |


flutter pub add tencent_cloud_chat_push
google-services.json 文件 ,来实现离线推送功能。厂商推送平台 | IM 控制台配置 |
![]() | ![]() |
timpush-configs.json 文件添加到应用模块的 assets 目录下,将 google-services.json 添加到工程 app 目录下。选择下载配置文件 timpush-configs.json | 下载文件 google-services.json | 添加到您的工程 |
![]() | ![]() | ![]() |
android/app/build.gradle 文件中添加如下依赖:implementation("com.tencent.timpush:fcm:8.8.7375")
implementation "com.tencent.timpush:fcm:latest.release"
build.gradle中添加的依赖的版本需要与tencent_cloud_chat_push版本对应。android/app/src/main 路径下 MainActivity 同级目录中,新建一个 Application 文件类,例如可命名为 MyApplication。
import com.tencent.chat.flutter.push.tencent_cloud_chat_push.application.TencentCloudChatPushApplication;public class MyApplication extends TencentCloudChatPushApplication {@Overridepublic void onCreate() {super.onCreate();}}
extends TencentCloudChatPushApplication 并保证 onCreate() 函数中,调用了 super.onCreate(); 即可。
android/app/src/main/AndroidManifest.xml 文件,为 <application> 标签,新增指定一个 android:name 参数即可,指向刚制作的自定义 Application 类。如图所示:
build.gradle 文件的 buildscript > dependencies 下添加以下配置:buildscript {dependencies {classpath 'com.google.gms:google-services:4.3.15'}}
app 目录下的build.gradle文件中添加下方配置:apply plugin: 'com.google.gms.google-services'
app 目录下,找到并打开build.gradle文件,将应用包名修改为您的实际应用包名:applicationId 'com.****.callkit'


Push Notification 的 Service。Bundle ID 不能使用通配符 *,否则将无法使用远程推送服务。

Bundle ID 等其他信息,单击 Continue 进行下一步。


SSL Certificate,分别用于开发环境(Development)和生产环境(Production)的远程推送证书,如下图所示:

Keychain Access - Certificate Assistant - Request a Certificate From a Certificate Authority)。
*.certSigningRequest 文件。*.certSigningRequest 文件。

Development SSL Certificate 到本地。
Production SSL Certificate 下载到本地。

SSL Certificate,系统会将其导入钥匙串中。Apple Development IOS Push Service)和生产环境(Apple Push Services)的 P12 文件。P12文件时,请务必要为其设置密码。

TencentCloudChatPush().registerPush(apnsCertificateID: 您配置的证书 ID);
ios/Runner/AppDelegate.swift文件,将图中圈出的代码添加到文件中。具体代码位于图片下方。
import UIKitimport Flutter// Add these two import linesimport TIMPushimport tencent_cloud_chat_push// Add `, TIMPushDelegate` to the following line@UIApplicationMain@objc class AppDelegate: FlutterAppDelegate, TIMPushDelegate {override func application(_ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {GeneratedPluginRegistrant.register(with: self)return super.application(application, didFinishLaunchingWithOptions: launchOptions)}// To be deprecated,please use the new field businessID below.@objc func offlinePushCertificateID() -> Int32 {return TencentCloudChatPushFlutterModal.shared.offlinePushCertificateID();}// Add this function@objc func businessID() -> Int32 {return TencentCloudChatPushFlutterModal.shared.businessID();}// Add this function@objc func applicationGroupID() -> String {return TencentCloudChatPushFlutterModal.shared.applicationGroupID()}// Add this function@objc func onRemoteNotificationReceived(_ notice: String?) -> Bool {TencentCloudChatPushPlugin.shared.tryNotifyDartOnNotificationClickEvent(notice)return true}}
TencentCloudChatPush().registerPush 方法, 需传入上一步定义的点击回调函数。apnsCertificateID iOS 推送证书 ID 及 androidPushOEMConfig Android 推送厂商配置。此二项配置已在前序步骤指定,若无修改必要,可不再传入。TencentCloudChatPush().registerPush(onNotificationClicked: _onNotificationClicked,sdkAppId: 您的sdkAppId,appKey: "客户端密钥",apnsCertificateID: 您配置的证书 ID);
onAppWakeUpEvent中实现登录以及拉起 App 等操作。TencentCloudChatPush().registerOnAppWakeUpEvent(onAppWakeUpEvent: () {// TODO: 登录操作});
NotificationView 来实现更加高级的通知样式。这里我们以使用 flutter_local_notifications 为主:flutter pub add flutter_local_notifications
final plugin = FlutterLocalNotificationsPlugin();const androidSettings = AndroidInitializationSettings('@mipmap/ic_launcher');await plugin.initialize(const InitializationSettings(android: androidSettings));await plugin.show(0,'来电通话','XX邀请您进行视频通话',const NotificationDetails(android: AndroidNotificationDetails('call_channel','通话通知',importance: Importance.high,priority: Priority.high,),),);
import 'package:atomic_x_core/atomicxcore.dart';import 'package:flutter_local_notifications/flutter_local_notifications.dart';bool isNotificationShowing = false;void showNotification() async {final plugin = FlutterLocalNotificationsPlugin();const androidSettings = AndroidInitializationSettings('@mipmap/ic_launcher');await plugin.initialize(settings: const InitializationSettings(android: androidSettings));await plugin.show(id: 0, // 通知唯一标识符title: '来电通话',body: '张三正在呼叫你',notificationDetails: const NotificationDetails(android: AndroidNotificationDetails('call_channel','通话通知',importance: Importance.high,priority: Priority.high,),),);isNotificationShowing = true;}void closeNotification() {final plugin = FlutterLocalNotificationsPlugin();plugin.cancel(id: 0, // 需要关闭的通知的唯一标识符);isNotificationShowing = false;}void _addNotificationListener() {_listener = CallEventListener(onCallReceived: (callId, mediaType, userData) {showNotification();},onCallEnded: (callId, mediaType, reason, userId) {closeNotification();},);CallStore.shared.addListener(_listener!);CallStore.shared.state.selfInfo.addListener(() {if (isNotificationShowing) {closeNotification();}});}

TIMPushManager.getInstance().forceUseFCMPushChannel(true);
文档反馈