Flutter腾讯云聊天推送插件tencent_cloud_chat_push的使用
Flutter腾讯云聊天推送插件tencent_cloud_chat_push的使用
tencent_cloud_chat_push
插件是一个用于在 Flutter 应用程序中集成推送通知的插件。该插件支持 iOS 和 Android 平台,并允许无缝集成各种原生推送通知提供商,如华为、小米、OPPO、vivo、荣耀、魅族和谷歌 Firebase 云消息传递(FCM)。
特性
- 为 iOS 和 Android 轻松集成原生推送通知提供商
- 自动处理推送通知事件,如接收通知和点击通知
- 通过用户定义的回调函数实现可定制的推送通知处理
开始使用
步骤 1:将插件添加到项目中
要将 tencent_cloud_chat_push
插件添加到您的 Flutter 项目中,请将其作为依赖项添加到 pubspec.yaml
文件中,或者运行以下命令:
flutter pub add tencent_cloud_chat_push
步骤 2:配置推送通知参数
iOS
将您的 iOS APNs 推送证书上传到腾讯云聊天控制台并获取证书 ID。尽早调用 TencentCloudChatPush().setApnsCertificateID
方法并将证书 ID 传递给该方法:
TencentCloudChatPush().setApnsCertificateID(apnsCertificateID: CertificateID);
Android
完成推送通知提供商配置后,在控制台上下载 timpush-configs.json
文件,并将其添加到项目的 android/app/src/main/assets
目录下。如果该目录不存在,请手动创建它。
步骤 3:配置客户端代码
在此步骤中,您需要编写一些原生代码,例如 Swift、Java 和 XML。请按照提供的说明复制代码片段到指定文件。
iOS
编辑 ios/Runner/AppDelegate.swift
文件并粘贴提供的代码片段,如下所示的示例所示:
import UIKit
import Flutter
// 添加这两行导入语句
import TIMPush
import tencent_cloud_chat_push
// 在下面这一行中添加 `, TIMPushDelegate`
@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)
}
// 添加此函数
func offlinePushCertificateID() -> Int32 {
return TencentCloudChatPushFlutterModal.shared.offlinePushCertificateID();
}
// 添加此函数
func applicationGroupID() -> String {
return TencentCloudChatPushFlutterModal.shared.applicationGroupID()
}
// 添加此函数
func onRemoteNotificationReceived(_ notice: String?) -> Bool {
TencentCloudChatPushPlugin.shared.tryNotifyDartOnNotificationClickEvent(notice)
return true
}
}
Android
在项目的 android
目录中创建一个新的 Application
类文件,例如 MyApplication.java
。如果您已经为其他目的创建了一个自定义的 Application
类,则可以重用它而不必创建新的一个。
import com.tencent.chat.flutter.push.tencent_cloud_chat_push.application.TencentCloudChatPushApplication;
public class MyApplication extends TencentCloudChatPushApplication {
@Override
public void onCreate() {
super.onCreate();
}
}
在 AndroidManifest.xml
文件中声明它,如下所示:
<application
android:name="${Package Name}.MyApplication"
... 更多配置
步骤 4:配置推送通知提供商
iOS
此步骤中无需对 iOS 进行额外配置。
Android
打开 android/app/build.gradle
文件并添加您想要支持的推送通知提供商的依赖项。您可以包含以下列表中的所有或部分提供商:
dependencies {
// 华为
implementation 'com.tencent.timpush:huawei:${The version of this package}'
// 小米
implementation 'com.tencent.timpush:xiaomi:${The version of this package}'
// OPPO
implementation 'com.tencent.timpush:oppo:${The version of this package}'
// vivo
implementation 'com.tencent.timpush:vivo:${The version of this package}'
// 荣耀
implementation 'com.tencent.timpush:honor:${The version of this package}'
// 魅族
implementation 'com.tencent.timpush:meizu:${The version of this package}'
// 谷歌 Firebase 云消息传递(Google FCM)
implementation 'com.tencent.timpush:fcm:${The version of this package}'
}
步骤 5:处理通知点击事件并解析参数
定义一个函数来处理推送通知点击事件。该函数应具有以下签名:
void onNotificationClicked({required String ext, String? userID, String? groupID})
ext
参数包含消息的完整扩展信息,由发送方指定。如果没有指定,默认值将被使用。您可以解析此参数以导航到相应的页面。
userID
和 groupID
参数由插件从扩展 JSON 字符串中自动解析,分别包含聊天伙伴的 userID
和群聊的 groupID
。如果使用默认扩展字段(由 SDK 或 UIKit 指定),则可以使用这些默认值。如果解析失败,它们将为 null
。
步骤 6:注册推送插件
通过调用 TencentCloudChatPush().registerPush
方法注册推送插件。登录到腾讯云聊天模块后,但在使用任何其他插件(如 CallKit)之前调用此方法。传入上一步中定义的点击回调函数。
可选地,如果需要,还可以传递 apnsCertificateID
(适用于 iOS)和 androidPushOEMConfig
(适用于 Android):
TencentCloudChatPush().registerPush(onNotificationClicked: _onNotificationClicked);
完整示例代码
以下是完整的示例代码,展示了如何使用 tencent_cloud_chat_push
插件:
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:tencent_cloud_chat_push/tencent_cloud_chat_push.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _platformVersion = 'Unknown';
final _tencentCloudChatPushPlugin = TencentCloudChatPush();
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
}
// Platform messages are asynchronous, so we initialize in an async method.
Future<void> initPlatformState() async {
String platformVersion;
// Platform messages may fail, so we use a try/catch PlatformException.
// We also handle the message potentially returning null.
try {
platformVersion =
await _tencentCloudChatPushPlugin.getPlatformVersion() ?? 'Unknown platform version';
} on PlatformException {
platformVersion = 'Failed to get platform version.';
}
// If the widget was removed from the tree while the asynchronous platform
// message was in flight, we want to discard the reply rather than calling
// setState to update our non-existent appearance.
if (!mounted) return;
setState(() {
_platformVersion = platformVersion;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Text('Running on: $_platformVersion\n'),
),
),
);
}
}
更多关于Flutter腾讯云聊天推送插件tencent_cloud_chat_push的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter腾讯云聊天推送插件tencent_cloud_chat_push的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用tencent_cloud_chat_push
插件来集成腾讯云聊天推送功能的示例代码。假设你已经完成了腾讯云IM(即时通讯)的基本配置,并且已经获取了必要的SDK AppID、AppKey等信息。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加tencent_cloud_chat_push
依赖:
dependencies:
flutter:
sdk: flutter
tencent_cloud_chat_push: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
2. 配置Android项目
在android/app/src/main/AndroidManifest.xml
中添加必要的权限和网络配置:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.yourapp">
<!-- 其他配置 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:name=".MyApplication" <!-- 确保你的Application类在这里被引用 -->
...>
<!-- 其他配置 -->
<!-- 腾讯云IM推送服务配置 -->
<meta-data
android:name="com.tencent.imsdk.provider.QQ_APP_ID"
android:value="你的QQ_APP_ID" />
<meta-data
android:name="com.tencent.android.tpns.SDK_APPID"
android:value="你的SDK_APPID" />
<meta-data
android:name="com.tencent.android.tpns.CHANNEL"
android:value="developer-default" />
<service
android:name="com.tencent.android.tpns.service.XGPushService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.tencent.android.tpns.action.PUSH_SERVICE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
<receiver
android:name="com.tencent.android.tpns.XPushReceiver"
android:exported="false"
android:permission="com.tencent.android.tpns.permission.MESSAGE">
<intent-filter>
<action android:name="com.tencent.android.tpns.action.PUSH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="com.tencent.android.tpns.action.REGISTER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver
android:name="com.tencent.android.tpns.XPushNotificationReceiver"
android:exported="true"
android:permission="android.permission.BROADCAST_STICKY">
<intent-filter>
<action android:name="com.tencent.android.tpns.action.NOTIFICATION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
</application>
</manifest>
确保你的MyApplication
类继承自FlutterApplication
并进行了必要的初始化:
package com.example.yourapp;
import android.app.Application;
import io.flutter.embedding.android.FlutterApplication;
import com.tencent.imsdk.TIMManager;
import com.tencent.imsdk.ext.message.plugin.push.TIMCloudPushManager;
public class MyApplication extends FlutterApplication {
@Override
public void onCreate() {
super.onCreate();
// 初始化IM SDK
TIMManager.getInstance().init(this, "你的AppID", "你的AppKey");
// 初始化推送服务(如果需要)
TIMCloudPushManager.getInstance().initPush(this);
}
}
3. 配置iOS项目
对于iOS项目,你需要在Info.plist
中添加一些必要的配置,并在AppDelegate.swift
或AppDelegate.m
中进行初始化。由于iOS的配置相对复杂且依赖于具体的CocoaPods集成,这里只给出简要步骤和关键代码:
- 在
Info.plist
中添加必要的权限声明,如NSAppTransportSecurity
、NSLocationWhenInUseUsageDescription
等(根据需要)。 - 确保在
Podfile
中添加了腾讯云IM SDK的依赖,并运行pod install
。 - 在
AppDelegate
中进行IM SDK的初始化:
#import <UIKit/UIKit.h>
#import <Flutter/Flutter.h>
#import <TIMSDK/TIMManager.h>
@interface AppDelegate : FlutterAppDelegate
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[super application:application didFinishLaunchingWithOptions:launchOptions];
// 初始化IM SDK
[[TIMManager sharedInstance] initSDKWithAppID:@"你的AppID" delegate:nil];
// 初始化推送服务(如果需要,iOS的具体配置可能有所不同)
// 注意:iOS推送服务通常还需要配置APNs证书等,这里只给出SDK初始化示例
return [generatedApplication delegate:self launchOptions:launchOptions];
}
@end
4. 使用推送功能
在你的Flutter代码中,你可以通过tencent_cloud_chat_push
插件提供的方法来处理推送消息。例如,监听推送消息:
import 'package:flutter/material.dart';
import 'package:tencent_cloud_chat_push/tencent_cloud_chat_push.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
// 监听推送消息
TencentCloudChatPush.onMessageReceived.listen((message) {
print("Received push message: $message");
// 处理推送消息,如显示通知等
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter Tencent Cloud Chat Push Example'),
),
body: Center(
child: Text('Listening for push messages...'),
),
),
);
}
}
请注意,上述代码是一个基本的示例,实际项目中可能需要根据具体需求进行更多的配置和处理。特别是iOS推送服务的配置,通常需要更详细的步骤和证书管理。务必参考腾讯云官方文档以获取最新的配置指南和最佳实践。