跳到内容

Android SDK 基础集成指南

本节包含有关如何将 Pushwoosh SDK 集成到您的 Android 应用程序中的信息。

先决条件

Anchor link to

要将 Pushwoosh Android SDK 集成到您的应用程序中,您需要满足以下条件:

集成步骤

Anchor link to

1. 设置 Firebase Cloud Messaging

Anchor link to

首先,将您的 Android 项目与 Firebase 连接:

  • 在 Android Studio 中打开您的项目
  • 导航至 Tools > Firebase > Cloud Messaging 并点击 “Set up Firebase Cloud Messaging”
  • 按照向导的说明操作。在最后一步,向导会将必要的依赖项添加到您的 build.gradle 文件中

2. 添加 Pushwoosh SDK

Anchor link to

将 pushwoosh 库依赖项添加到您应用程序的 build.gradle 中:

build.gradle
implementation 'com.pushwoosh:pushwoosh-firebase:6.+'

将 “+” 替换为最新版本的 Pushwoosh Android SDK

3. 将 Pushwoosh 元数据添加到 AndroidManifest.xml

Anchor link to

打开您的 AndroidManifest.xml 文件,并在 <application> 标签内添加以下元数据:

<meta-data android:name="com.pushwoosh.appid" android:value="__YOUR_APP_CODE__" />
<meta-data android:name="com.pushwoosh.senderid" android:value="@string/fcm_sender_id" />
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_API_TOKEN__" />

其中:

重要提示: 请确保在您的 Pushwoosh Control Panel 中为该令牌授予对正确应用程序的访问权限。了解更多

要设置 com.pushwoosh.senderid,请将 fcm_sender_id 添加到您项目的 res/values/strings.xml 文件中:

res/values/strings.xml
<resources>
<string name="fcm_sender_id">__YOUR_FCM_SENDER_ID__</string>
</resources>

4. 初始化代码

Anchor link to

通过将此代码添加到您的初始化逻辑中来注册推送通知:

Pushwoosh.getInstance().registerForPushNotifications()

5. 运行项目

Anchor link to
  1. 构建并运行项目。
  2. 前往 Pushwoosh Control Panel 并发送推送通知
  3. 您应该会在应用程序中看到该通知。

扩展集成

Anchor link to

至此,您已经集成了 SDK,可以发送和接收推送通知。现在,让我们来探索核心功能

推送通知

Anchor link to

在 Pushwoosh SDK 中,有两个用于处理推送通知的回调:

  • onMessageReceived:当收到推送通知时,会调用此方法。
  • onMessageOpened:当用户与通知交互(打开)时,会调用此方法

这些回调使开发人员能够在其应用程序中管理推送通知的接收和用户交互:

AndroidManifest.xml
<meta-data
android:name="com.pushwoosh.notification_service_extension"
android:value="com.your.package.YourNotificationServiceExtension" />
import android.util.Log
import com.pushwoosh.notification.NotificationServiceExtension
import com.pushwoosh.notification.PushMessage
class YourNotificationServiceExtension : NotificationServiceExtension() {
override fun onMessageReceived(data: PushMessage): Boolean {
Log.d("Pushwoosh", "onMessageReceived: ${data.toJson()}")
return false
}
override fun onMessageOpened(message: PushMessage) {
Log.d("Pushwoosh", "onMessageOpened: ${message.toJson()}")
}
}

用户配置

Anchor link to

通过关注个人用户的行为和偏好,您可以提供个性化内容,从而提高用户满意度和忠诚度

import com.pushwoosh.Pushwoosh
import com.pushwoosh.tags.TagsBundle
import java.util.Date
class Registration {
public void afterUserLogin(User user) {
Pushwoosh pushwoosh = Pushwoosh.getInstance()
// Set user ID
if (user.getUserId() != null) {
pushwoosh.setUserId(user.getUserId())
}
// Set user email
if (user.getEmail() != null) {
pushwoosh.setEmail(user.getEmail())
}
// Setting additional user information as tags for Pushwoosh
if (user.getUserDetails() != null) {
val details = user.getUserDetails()
val tagsBuilder = TagsBundle.Builder()
if (details.getAge() != null) {
tagsBuilder.putInt("age", details.getAge())
}
if (details.getUserName() != null) {
tagsBuilder.putString("name", details.getUserName())
}
if (details.lastLoginDate() != null) {
tagsBuilder.putDate("last_login", details.getLastLoginDate())
}
// Build and send tags
val tags = tagsBuilder.build()
if (!tags.isEmpty()) {
pushwoosh.setTags(tags)
}
}
}
}

标签 (Tags)

Anchor link to

标签 (Tags) 是分配给用户或设备的键值对,允许根据偏好或行为等属性进行分段,从而实现有针对性的消息传递。

import com.pushwoosh.Pushwoosh
import com.pushwoosh.tags.TagsBundle
import java.util.List
class UpdateUser {
public void afterUserUpdateProfile(User user) {
val pushwoosh = Pushwoosh.getInstance()
val tagsBuilder = TagsBundle.Builder()
// Set list of favorite categories
if (user.favoriteCategories != null && user.favoriteCategories.isNotEmpty()) {
tagsBuilder.putList("favorite_categories", user.getFavoriteCategories())
}
// Set payment information
tagsBuilder.putBoolean("is_subscribed", user.isSubscribed())
tagsBuilder.putString("payment_status", user.getPaymentStatus())
tagsBuilder.putString("billing_address", user.getBillingAddress())
// Build and send tags
pushwoosh.setTags(tagsBuilder.build())
}
}

事件 (Events)

Anchor link to

事件 (Events) 是应用程序内可以跟踪的特定用户操作或事件,用于分析行为并触发相应的消息或操作

import com.pushwoosh.Pushwoosh
import com.pushwoosh.inapp.InAppManager
import com.pushwoosh.tags.TagsBundle
import java.util.Date
class Registration {
public void afterUserLogin(User user) {
if (user.getUserName() != null && user.getLastLoginDate() != null) {
val attributes = TagsBundle.Builder()
.putString("name", user.getUserName())
.putDate("last_login", user.getLastLoginDate())
.build()
InAppManager.getInstance().postEvent("login", attributes)
}
}
public void afterUserPurchase(User user, Product product) {
Pushwoosh pushwoosh = Pushwoosh.getInstance()
// Track purchase event
val purchaseAttributes = TagsBundle.Builder()
.putString("product_id", product.getId())
.putString("product_name", product.getName())
.putDouble("price", product.getPrice())
.putInt("quantity", product.getQuantity())
.build()
InAppManager.getInstance().postEvent("purchase", purchaseAttributes)
// Set user tags
val tagsBuilder = TagsBundle.Builder()
tagsBuilder.putDate("last_purchase_date", Date())
val lifetimeSpend = getCurrentLifetimeSpend() + product.getPrice()
tagsBuilder.putDouble("lifetime_spend", getCurrentLifetimeSpend())
pushwoosh.setTags(tagsBuilder.build())
}
}

富媒体 (Rich Media)

Anchor link to

富媒体 (Rich Media) 是指在通知和应用内消息中使用的交互式多媒体内容,例如图像、视频或 HTML,以增强用户参与度

要启用 Modal Rich Media 功能,您需要在应用程序的 AndroidManifest.xml 文件中添加以下元数据条目来进行配置:

AndroidManifest.xml
<meta-data
android:name="com.pushwoosh.rich_media_type"
android:value="Modal" />
import android.util.Log
import com.pushwoosh.richmedia.RichMedia
import com.pushwoosh.richmedia.RichMediaManager
import com.pushwoosh.richmedia.RichMediaPresentingDelegate
import com.pushwoosh.inapp.view.config.ModalRichmediaConfig
import com.pushwoosh.inapp.view.config.enums.*
class MainActivity : AppCompatActivity(), RichMediaPresentingDelegate {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
RichMediaManager.setDelegate(this)
// Configure the modal rich media
val config = ModalRichmediaConfig()
.setViewPosition(ModalRichMediaViewPosition.BOTTOM)
.setPresentAnimationType(ModalRichMediaPresentAnimationType.SLIDE_UP)
.setDismissAnimationType(ModalRichMediaDismissAnimationType.SLIDE_DOWN)
// Apply the configuration
RichMediaManager.setDefaultRichMediaConfig(config)
}
override fun shouldPresent(richMedia: RichMedia): Boolean {
Log.d("Pushwoosh", "Rich media will be presented with: ${richMedia.content}")
return true
}
override fun onPresent(richMedia: RichMedia) {
Log.d("Pushwoosh", "Rich media has been presented: ${richMedia.content}")
}
override fun onClose(richMedia: RichMedia) {
Log.d("Pushwoosh", "Rich media has been closed: ${richMedia.content}")
}
override fun onError(richMedia: RichMedia, pushwooshException: PushwooshException) {
Log.e("Pushwoosh", "Failed to present rich media: ${richMedia.content}. Error: ${pushwooshException.message}")
}
}

故障排除

Anchor link to

如果在集成过程中遇到任何问题,请参阅支持和社区部分。