ข้ามไปยังเนื้อหา

คู่มือการผสานการทำงานพื้นฐานสำหรับ 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”
  • ทำตามคำแนะนำของ wizard ในขั้นตอนสุดท้าย wizard จะเพิ่ม dependencies ที่จำเป็นลงในไฟล์ build.gradle ของคุณ

2. เพิ่ม Pushwoosh SDK

Anchor link to

เพิ่ม dependency ของไลบรารี 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__" />

โดยที่:

  • com.pushwoosh.appid คือ Pushwoosh Application Code ของคุณ
  • com.pushwoosh.apitoken คือ Pushwoosh 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. โค้ดสำหรับ Initialization

Anchor link to

ลงทะเบียนเพื่อรับการแจ้งเตือนแบบพุชโดยเพิ่มโค้ดนี้ลงใน logic การเริ่มต้น (initialization) ของคุณ:

Pushwoosh.getInstance().registerForPushNotifications()

5. รันโปรเจกต์

Anchor link to
  1. บิวด์และรันโปรเจกต์
  2. ไปที่ Pushwoosh Control Panel และ ส่งการแจ้งเตือนแบบพุช
  3. คุณควรจะเห็นการแจ้งเตือนในแอป

การผสานการทำงานขั้นสูง

Anchor link to

ณ จุดนี้ คุณได้ผสานการทำงาน SDK เรียบร้อยแล้วและสามารถส่งและรับการแจ้งเตือนแบบพุชได้ ตอนนี้ เรามาสำรวจฟังก์ชันการทำงานหลักกัน

การแจ้งเตือนแบบพุช (Push notifications)

Anchor link to

ใน Pushwoosh SDK มี callback สองตัวที่ออกแบบมาเพื่อจัดการกับการแจ้งเตือนแบบพุช:

  • onMessageReceived: เมธอดนี้จะถูกเรียกใช้เมื่อได้รับการแจ้งเตือนแบบพุช
  • onMessageOpened: เมธอดนี้จะถูกเรียกใช้เมื่อผู้ใช้มีปฏิสัมพันธ์กับ (เปิด) การแจ้งเตือน

callback เหล่านี้ช่วยให้นักพัฒนาสามารถจัดการกับการรับและการโต้ตอบของผู้ใช้กับการแจ้งเตือนแบบพุชภายในแอปพลิเคชันของตนได้:

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 fun afterUserLogin(user: User) {
val 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

แท็กคือคู่ของคีย์-ค่า (key-value) ที่กำหนดให้กับผู้ใช้หรืออุปกรณ์ ช่วยให้สามารถแบ่งกลุ่มตามคุณลักษณะต่างๆ เช่น ความชอบหรือพฤติกรรม ทำให้สามารถส่งข้อความที่ตรงเป้าหมายได้

import com.pushwoosh.Pushwoosh
import com.pushwoosh.tags.TagsBundle
import java.util.List
class UpdateUser {
public fun 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

อีเวนต์คือการกระทำหรือเหตุการณ์ที่เกิดขึ้นโดยผู้ใช้ภายในแอป ซึ่งสามารถติดตามเพื่อวิเคราะห์พฤติกรรมและกระตุ้นให้เกิดการส่งข้อความหรือการกระทำที่สอดคล้องกัน

import com.pushwoosh.Pushwoosh
import com.pushwoosh.inapp.InAppManager
import com.pushwoosh.tags.TagsBundle
import java.util.Date
class Registration {
public fun 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 fun afterUserPurchase(user: User, product: Product) {
val 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

หากคุณพบปัญหาใดๆ ในระหว่างขั้นตอนการผสานการทำงาน โปรดดูที่ส่วน การสนับสนุนและชุมชน