Capacitor SDK 基础集成指南
本节包含有关如何将 Pushwoosh Capacitor SDK 集成到您的应用程序中的信息。
前提条件
Anchor link to要将 Pushwoosh Capacitor SDK 集成到您的应用中,您需要具备以下条件:
集成步骤
Anchor link to1. 添加 Pushwoosh Capacitor SDK 依赖
Anchor link to将 Pushwoosh Capacitor SDK 依赖项添加到您的项目中:
npm install pushwoosh-capacitor-plugin同步 Capacitor 配置:
npx cap sync1.1 选择 iOS 包管理器
Anchor link tonpx cap sync 会使用您的 Capacitor 项目所用的包管理器(Swift Package Manager 或 CocoaPods)安装插件的 iOS 部分。两者提供相同版本的原生 Pushwoosh SDK 和 Inbox UI。Capacitor 7 和 Capacitor 8 均支持 Swift Package Manager。
现有项目会保留其包管理器:如果存在 ios/App/CapApp-SPM,Capacitor CLI 使用 Swift Package Manager,否则使用 CocoaPods。对于新的 iOS 平台:
Capacitor 8 默认创建 Swift Package Manager 项目:
npx cap add ios如需改用 CocoaPods,请运行 npx cap add ios --packagemanager CocoaPods。
Capacitor 7 默认创建 CocoaPods 项目。如需使用 Swift Package Manager,请运行:
npx cap add ios --packagemanager SPM该命令会创建项目,然后在尝试运行 pod install 时因 ENOENT ... Podfile 错误而停止。项目已正确创建。使用以下命令完成设置:
npx cap sync ios使用 Swift Package Manager 时,Capacitor CLI 会将插件添加到 ios/App/CapApp-SPM,插件会引入 Pushwoosh iOS SDK 和 Inbox UI。请勿再次将 Pushwoosh SDK 添加到应用中,无论是作为 pod 还是作为不同版本的包。
2. Capacitor SDK 初始化
Anchor link to在您的主 JavaScript 文件中,导入并初始化 Pushwoosh SDK:
import { Pushwoosh } from 'pushwoosh-capacitor-plugin';
// Initialize the SDKPushwoosh.onDeviceReady({ appid: "__YOUR_APP_CODE__"});
// Register for push notificationsPushwoosh.registerDevice() .then(result => { console.log("Push token:", result.pushToken); // Handle successful registration }) .catch(error => { console.error("Failed to register device:", error); // Handle registration error });其中:
__YOUR_APP_CODE__是来自 Pushwoosh 控制面板的应用程序代码。
3. iOS 原生设置
Anchor link to3.1 功能
Anchor link to要在您的项目中启用推送通知,您需要添加某些功能。
在“签名与功能”部分,添加以下功能:
Push NotificationsBackground Modes。添加此功能后,勾选Remote notifications复选框。
如果您打算使用时效性通知 (iOS 15+),还需添加 Time Sensitive Notifications 功能。
3.2 Info.plist
Anchor link to在您的 ios/App/App/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您必须向您的项目添加一个通知服务扩展目标。这对于在 iOS 上实现准确的送达跟踪和富媒体等功能至关重要。
请遵循 原生指南的步骤 来添加扩展目标并在其中添加必要的 Pushwoosh 代码。根据您的包管理器,将 Pushwoosh SDK 添加到扩展目标:
-
CocoaPods: 按照原生指南中的 Notification Service Extension 的依赖项 (仅限 CocoaPods) 步骤操作。在
ios/App/Podfile中,为扩展目标添加不带版本号的pod 'PushwooshXCFramework',使其解析为插件所用的版本,然后运行npx cap sync ios。 -
Swift Package Manager: 跳过原生指南中的 CocoaPods 依赖项步骤。请在 Xcode 中自行将 SDK 添加到扩展目标,因为该目标不会继承插件的依赖项:
- 打开扩展目标 > General > Frameworks and Libraries。
- 添加
Pushwoosh-XCFramework包中的PushwooshFramework产品。使用Package.resolved中已有的版本。
如果您是从 CocoaPods 迁移过来的,请确保扩展不再以 pod 形式获取
PushwooshXCFramework,以免应用中包含两份 SDK。
然后在扩展代码中 import PushwooshFramework。App 目标无需额外操作,因为它通过插件获取 Pushwoosh SDK。
4. 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 控制面板中为令牌授予对正确应用的访问权限。 了解更多
5. 运行项目
Anchor link to- 构建并运行项目。
- 转到 Pushwoosh 控制面板并 发送一条推送通知。
- 您应该会在应用中看到该通知。
扩展集成
Anchor link to至此,您已经集成了 SDK,可以发送和接收推送通知。现在,让我们来探索核心功能。
推送通知事件监听器
Anchor link to在 Pushwoosh Capacitor SDK 中,有两个用于处理推送通知的回调方法:
pushReceivedCallback在收到推送通知时触发pushOpenedCallback在用户打开通知时触发
您应该在 SDK 初始化后立即设置这些回调:
import { Pushwoosh } from 'pushwoosh-capacitor-plugin';
// Set up push received callbackawait Pushwoosh.pushReceivedCallback((notification, err) => { if (err) { console.error("Failed to process received notification:", err); } else { console.log("Push received:", JSON.stringify(notification)); // Handle the received notification }});
// Set up push opened callbackawait Pushwoosh.pushOpenedCallback((notification, err) => { if (err) { console.error("Failed to process opened notification:", err); } else { console.log("Push opened:", JSON.stringify(notification)); // Handle the opened notification }});用户配置
Anchor link to通过关注个人用户的行为和偏好,您可以提供个性化内容,从而提高用户满意度和忠诚度。
import { Pushwoosh } from 'pushwoosh-capacitor-plugin';
class Registration { async afterUserLogin(user) {
// Set user ID Pushwoosh.setUserId(user.getId);
// Setting additional user information as tags for Pushwoosh await Pushwoosh.setTags({ "age": user.getAge(), "name": user.getName(), "last_login": user.getLastLoginDate() }); }}标签 (Tags)
Anchor link to标签 (Tags) 是分配给用户或设备的键值对,允许根据偏好或行为等属性进行分段,从而实现有针对性的消息传递。
import { Pushwoosh } from 'pushwoosh-capacitor-plugin';
class UpdateUser { async afterUserUpdateProfile(user) {
// Set list of favorite categories await Pushwoosh.setTags({ "favorite_categories": user.getFavoriteCategoriesList() });
// Set payment information await Pushwoosh.setTags({ "is_subscribed": user.isSubscribed(), "payment_status": user.getPaymentStatus(), "billing_address": user.getBillingAddress() }); }}事件 (Events)
Anchor link to事件 (Events) 是应用内可以被跟踪的特定用户操作或发生的事情,用于分析行为并触发相应的消息或操作。
import { Pushwoosh } from 'pushwoosh-capacitor-plugin';
class Registration {
// Track login event afterUserLogin(user) { Pushwoosh.postEvent("login", { "name": user.getName(), "last_login": user.getLastLoginDate() }); }
// Track purchase event afterUserPurchase(product) { Pushwoosh.postEvent("purchase", { "product_id": product.getId(), "product_name": product.getName(), "price": product.getPrice(), "quantity": product.getQuantity() }); }}故障排除
Anchor link to如果推送未送达,请在发送错误中查找您所用平台的错误代码,了解其含义及修复方法。
如果您在集成过程中遇到任何问题,请参阅 支持和社区 部分。