Flutter SDK 基本集成指南
本节包含有关如何将 Pushwoosh Flutter SDK 集成到您的应用程序中的信息。
先决条件
Anchor link to要将 Pushwoosh Flutter SDK 集成到您的应用程序中,您需要以下内容:
集成步骤
Anchor link to1. 添加 Pushwoosh Flutter SDK 依赖
Anchor link to将 pushwoosh_flutter 包添加到您的 pubspec.yaml 文件中:
dependencies: flutter: sdk: flutter # Use the latest version from https://pub.dev/packages/pushwoosh_flutter pushwoosh_flutter: ^[LATEST_VERSION]在 pub.dev 上查看 最新版本。
然后,在您项目的根目录中运行以下命令以安装依赖:
flutter pub get再次检查包是否正确安装:
flutter pub deps | grep pushwoosh_flutter
# Example output:# ❯ flutter pub deps | grep pushwoosh_flutter# └── pushwoosh_flutter 2.3.112. Flutter SDK 初始化
Anchor link to在您的 main.dart 文件的根组件中:
- 导入
pushwoosh_flutter包。 - 初始化 Pushwoosh SDK。
- 在您的初始化逻辑中调用
registerForPushNotifications()以注册推送通知。
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
void main() async { runApp(const MyApp()); Pushwoosh.initialize({ "app_id": "__YOUR_APP_ID__", "sender_id": "__YOUR_FCM_SENDER_ID__" }); Pushwoosh.getInstance.registerForPushNotifications();}其中:
__YOUR_APP_ID__是 Pushwoosh Control Panel 中的应用程序代码。__YOUR_FCM_SENDER_ID__是 Firebase Console 中的 Firebase 项目编号。
3. iOS 原生设置
Anchor link to3.1 功能
Anchor link to要在您的项目中启用推送通知,您需要添加某些功能。
在 Signing & Capabilities 部分,添加以下功能:
Push NotificationsBackground Modes。添加此功能后,勾选Remote notifications框。
如果您打算使用 Time Sensitive Notifications (iOS 15+),也请添加 Time Sensitive Notifications 功能。
3.2 Info.plist
Anchor link to在您的 Runner/Info.plist 中,将 __PUSHWOOSH_DEVICE_API_TOKEN__ 键设置为 Pushwoosh Device API Token:
<key>Pushwoosh_API_TOKEN</key><string>__PUSHWOOSH_DEVICE_API_TOKEN__</string>3.3 消息送达跟踪
Anchor link to您必须向您的项目添加一个 Notification Service Extension 目标。这对于准确的送达跟踪和 iOS 上的 Rich Media 等功能至关重要。
遵循 原生指南的步骤 来添加扩展目标以及其中必要的 Pushwoosh 代码。
为确保 Notification Service Extension 正确集成到您的 Flutter 项目中,您需要使用以下 Podfile 配置:
target 'NotificationServiceExtension' do use_frameworks! use_modular_headers!
pod 'PushwooshXCFramework'
inherit! :search_pathsend3.4 为 iOS Flutter 项目安装依赖
Anchor link to要为 iOS Flutter 项目安装依赖,请运行以下命令:
flutter run或者在终端中导航到 ios 文件夹并运行:
pod install --repo-update4. Android 原生设置
Anchor link to4.1 安装依赖
Anchor link to确保所需的依赖和插件已添加到您的 Gradle 脚本中:
将 Google Services Gradle 插件添加到您的项目级 build.gradle 依赖中:
buildscript { dependencies { classpath 'com.google.gms:google-services:4.3.15' }}在您的应用级 build.gradle 文件中应用该插件:
apply plugin: 'com.google.gms.google-services'4.2 添加 Firebase 配置文件
Anchor link to将 google-services.json 文件放置到您项目目录中的 android/app 文件夹中。
4.3 添加 Pushwoosh 元数据
Anchor link to在您的 main/AndroidManifest.xml 中,在 <application> 标签内添加 Pushwoosh Device API Token:
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_API_TOKEN__" />重要提示: 请确保在您的 Pushwoosh Control Panel 中授予该令牌访问正确应用程序的权限。了解更多
5. 运行项目
Anchor link to- 构建并运行项目。
- 前往 Pushwoosh Control Panel 并 发送推送通知。
- 您应该会在应用程序中看到通知。
扩展集成
Anchor link to在此阶段,您已经集成了 SDK,可以发送和接收推送通知。现在,让我们探索核心功能。
推送通知事件监听器
Anchor link to在 Pushwoosh SDK 中,有两个事件监听器,用于处理推送通知:
- 当收到推送通知时,会触发
onPushReceived事件。 - 当用户打开通知时,会触发
onPushAccepted事件。
您应该在应用程序启动时,SDK 初始化之后立即设置这些事件监听器:
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
class PushwooshNotificationHandler { void setupPushListeners(Pushwoosh pushwoosh) {
pushwoosh.onPushReceived.listen((event) { print("Push received: ${event.pushwooshMessage.payload}"); });
pushwoosh.onPushAccepted.listen((event) { print("Push accepted: ${event.pushwooshMessage.payload}"); });
}}用户配置
Anchor link to通过关注个人用户行为和偏好,您可以提供个性化内容,从而提高用户满意度和忠诚度。
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
class Registration { void afterUserLogin(User user) {
// Set user ID Pushwoosh().setUserId(user.getId());
// Set user email Pushwoosh().setEmail(user.getEmail());
// Register SMS number // The SMS and WhatsApp numbers must be in E.164 format (e.g., "+1234567890") and be valid Pushwoosh().registerSmsNumber(user.getSmsNumber());
// Register WhatsApp number Pushwoosh().registerWhatsappNumber(user.getWhatsappNumber());
// Setting additional user information as tags for Pushwoosh Pushwoosh().setTags({ "age": user.getAge(), "name": user.getName(), "last_login": user.getLastLoginDate() }); }}标签是分配给用户或设备的键值对,允许根据偏好或行为等属性进行细分,从而实现有针对性的消息传递。
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
class UpdateUser { void afterUserUpdateProfile(User user) {
// Set list of favorite categories Pushwoosh().setTags({ "favorite_categories": user.getFavoriteCategoriesList() });
// Set payment information Pushwoosh().setTags({ "is_subscribed": user.isSubscribed(), "payment_status": user.getPaymentStatus(), "billing_address": user.getBillingAddress() }); }}事件是应用程序中可以跟踪的特定用户操作或发生,用于分析行为并触发相应的消息或操作。
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
class Registration {
// Track login event void afterUserLogin(User user) { Pushwoosh().postEvent("login", { "name": user.getName(), "last_login": user.getLastLoginDate() }); }
void afterUserPurchase(Product product) {
// Track purchase event Pushwoosh().postEvent("purchase", { "product_id": product.getId(), "product_name": product.getName(), "price": product.getPrice(), "quantity": product.getQuantity() }); }}使用 ProGuard
Anchor link to因此,您可能会遇到以下异常:
java.lang.IllegalStateException: Could not find class for name: com.pushwoosh.plugin.PushwooshNotificationServiceExtension在这种情况下,有两种解决方案:
- 使用
flutter build apk --no-shrink命令编译您的代码,而不进行混淆。 - 或者您可以手动启用 ProGuard 并添加必要的规则。
要为您的项目启用 ProGuard,请将以下字符串添加到您的 build.gradle 文件中:
buildTypes { release { minifyEnabled true useProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug } }然后,将以下规则添加到 android/app/proguard-rules.pro 中:
#Pushwoosh Flutter-keep class com.pushwoosh.plugin.PushwooshPlugin { *; }-keep class com.pushwoosh.plugin.PushwooshNotificationServiceExtension { *; }故障排除
Anchor link to如果您在集成过程中遇到任何问题,请参阅 支持和社区 部分。