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

คู่มือการผสานรวมพื้นฐาน Expo SDK

ส่วนนี้ประกอบด้วยข้อมูลเกี่ยวกับวิธีการผสานรวม Pushwoosh Expo SDK เข้ากับแอปพลิเคชันของคุณ

ข้อกำหนดเบื้องต้น

Anchor link to

ในการผสานรวม Pushwoosh Expo SDK เข้ากับแอปของคุณ คุณจะต้องมีสิ่งต่อไปนี้:

ขั้นตอนการผสานรวม

Anchor link to

1. ติดตั้งปลั๊กอิน

Anchor link to

ติดตั้งปลั๊กอิน Pushwoosh Expo โดยใช้ Expo CLI

Terminal window
expo install pushwoosh-expo-plugin

ติดตั้ง Pushwoosh React Native SDK

Terminal window
npm install pushwoosh-react-native-plugin --save

2. ตั้งค่าคุณสมบัติของปลั๊กอิน

Anchor link to

เพิ่มปลั๊กอินไว้ที่ด้านหน้าของ plugin array พร้อมกับคุณสมบัติที่จำเป็น:

app.json/app.config.js
{
"expo": {
"plugins": [
[
"pushwoosh-expo-plugin",
{
"mode": "development",
"ios": {
"PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__"
},
"android": {
"apiToken": "__YOUR_DEVICE_API_TOKEN__"
}
}
]
]
}
}

โดยที่:

  • mode ใช้เพื่อกำหนดค่า APNs environment entitlement มีค่าที่เป็นไปได้คือ “Development” หรือ “production”
  • PW_API_TOKEN, apiToken คือ Pushwoosh Device API Token ของคุณ

3. เริ่มต้นการทำงานของ Pushwoosh

Anchor link to

ใน root component ของแอปพลิเคชันของคุณ:

  • นำเข้าปลั๊กอิน pushwoosh-react-native-plugin
  • เริ่มต้นการทำงานของ Pushwoosh SDK
  • เรียกใช้ register() ในตรรกะการเริ่มต้นของคุณเพื่อลงทะเบียนสำหรับ push notifications
index.tsx
import Pushwoosh from 'pushwoosh-react-native-plugin';
Pushwoosh.init({
"pw_appid": "__YOUR_APP_ID__" ,
"project_number": "__YOUR_FCM_SENDER_ID__"
});
Pushwoosh.register();

โดยที่:

  • __YOUR_APP_ID__ คือ application code จาก Pushwoosh Control Panel
  • __YOUR_FCM_SENDER_ID__ คือ project number ของ Firebase จาก Firebase Console

4. การตั้งค่า Native ของ Android

Anchor link to

เพิ่มไฟล์การกำหนดค่า Firebase:

  1. คัดลอกไฟล์ google-services.json ของคุณไปยังไดเรกทอรีรากของโปรเจกต์
  2. ตั้งค่าคุณสมบัติ googleServicesFile เป็นพาธของ google-services.json ของคุณและระบุคุณสมบัติ package:
app.json/app.config.js
"expo": {
"name": "sample",
"android": {
"package": "com.pushwoosh.sample",
"googleServicesFile": "./google-services.json"
},
"plugins": [
[
"pushwoosh-expo-plugin",
{
"mode": "development",
"ios": {
"PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__"
},
"android": {
"apiToken": "__YOUR_DEVICE_API_TOKEN__"
}
}
]
]
}

5. การตั้งค่า Native ของ iOS

Anchor link to

ตั้งค่าคุณสมบัติ bundleIdentifier ให้กับอ็อบเจกต์ ios:

app.json/app.config.js
"expo": {
"name": "sample",
"ios": {
"bundleIdentifier": "com.pushwoosh.sample"
},
"plugins": [
[
"pushwoosh-expo-plugin",
{
"mode": "development",
"ios": {
"PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__"
},
"android": {
"apiToken": "__YOUR_DEVICE_API_TOKEN__"
}
}
]
]
}

6. Prebuild แอป

Anchor link to

สร้างโค้ด native และกำหนดค่า dependencies สำหรับแต่ละแพลตฟอร์มโดยการรัน prebuild:

Terminal window
npx expo prebuild

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

Anchor link to
  1. สร้างและรันโปรเจกต์:
Terminal window
npx expo run:android
  1. ไปที่ Pushwoosh Control Panel และ ส่ง push notification
  2. คุณควรจะเห็นการแจ้งเตือนในแอป

การผสานรวมเพิ่มเติม

Anchor link to

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

ตัวรับฟังเหตุการณ์ (event listeners) ของ Push notification

Anchor link to

ใน Pushwoosh SDK มี event listeners สองตัวที่ออกแบบมาเพื่อจัดการ push notifications:

  • event onPushReceived จะถูกทริกเกอร์เมื่อได้รับ push notification
  • event onPushAccepted จะถูกทริกเกอร์เมื่อผู้ใช้เปิดการแจ้งเตือน

คุณควรตั้งค่า event listeners เหล่านี้ทันทีหลังจากการเริ่มต้น SDK เมื่อแอปพลิเคชันเริ่มทำงาน:

import { DeviceEventEmitter } from 'react-native';
import Pushwoosh from 'pushwoosh-react-native-plugin';
class PushwooshNotificationHandler {
setupPushListeners(): void {
DeviceEventEmitter.addListener("pushReceived", (e) => {
console.warn("Push received: " + JSON.stringify(e));
});
DeviceEventEmitter.addListener("pushOpened", (e) => {
console.warn("Push opened:" + JSON.stringify(e));
});
}
}

การกำหนดค่าผู้ใช้

Anchor link to

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

import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration {
afterUserLogin(user: User): void {
// Set user ID
Pushwoosh.setUserId(user.getId());
// Set user email
Pushwoosh.setEmails(user.getEmailList());
// Setting additional user information as tags for Pushwoosh
Pushwoosh.setTags({
"age": user.getAge(),
"name": user.getName(),
"last_login": user.getLastLoginDate()
});
}
}

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

import Pushwoosh from 'pushwoosh-react-native-plugin';
class UpdateUser {
afterUserUpdateProfile(user: User): void {
// 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()
});
}
}

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

import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration {
// Track login event
afterUserLogin(user: User): void {
Pushwoosh.postEvent("login", {
"name": user.getName(),
"last_login": user.getLastLoginDate()
});
}
// Track purchase event
afterUserPurchase(product: Product): void {
Pushwoosh.postEvent("purchase", {
"product_id": product.getId(),
"product_name": product.getName(),
"price": product.getPrice(),
"quantity": product.getQuantity()
});
}
}

การติดตามการส่งข้อความสำหรับ iOS

Anchor link to

คุณต้องเพิ่มเป้าหมาย Notification Service Extension ในโปรเจกต์ของคุณ นี่เป็นสิ่งจำเป็นสำหรับการติดตามการส่งที่แม่นยำและฟีเจอร์ต่างๆ เช่น Rich Media บน iOS

ทำตาม ขั้นตอนในคู่มือ native เพื่อเพิ่ม extension target และโค้ด Pushwoosh ที่จำเป็นภายในนั้น

คุณสมบัติเพิ่มเติมของปลั๊กอิน

Anchor link to
คุณสมบัติ
ค่าเริ่มต้น
คำอธิบาย
คุณสมบัติ iOS
Pushwoosh_LOG_LEVELINFOLog level สำหรับ iOS ค่าที่เป็นไปได้: NONE, ERROR, WARN, INFO, DEBUG, NOISE
คุณสมบัติ Android
logLevelINFOLog level สำหรับ Android หนึ่งใน: NONE, ERROR, WARN, INFO, DEBUG, NOISE
multiNotificationModetrueสามารถเปลี่ยนเป็น false ได้ในกรณีที่คุณต้องการแสดงเฉพาะการแจ้งเตือนล่าสุดสำหรับผู้ใช้
icon-พาธไปยังไอคอนการแจ้งเตือนที่กำหนดเองสำหรับ Android

การแก้ไขปัญหา

Anchor link to

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

FCM registration error: Failed to retrieve token. Is firebase configured correctly?
Anchor link to

ตรวจสอบให้แน่ใจว่าคุณสมบัติ googleServicesFile ของ Firebase ของคุณได้รับการตั้งค่าในไฟล์การกำหนดค่า Expo และไฟล์ google-services.json ถูกเพิ่มไปยังไดเรกทอรีรากของโปรเจกต์ของคุณ:

app.json/app.config.js
"expo": {
"name": "sample",
"android": {
"package": "com.pushwoosh.sample",
"googleServicesFile": "./google-services.json"
},
"plugins": [
[
"pushwoosh-expo-plugin",
{
"mode": "development",
"ios": {
"PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__"
},
"android": {
"apiToken": "__YOUR_DEVICE_API_TOKEN__"
}
}
]
]
}
TypeError: Cannot read property ‘init’ of null
Anchor link to

คุณอาจพบข้อผิดพลาดนี้เมื่อพยายามรันแอปบนอุปกรณ์ ในการแก้ไขปัญหานี้ ตรวจสอบให้แน่ใจว่าคุณได้ทำขั้นตอน prebuild เสร็จสิ้นแล้ว ซึ่งจะสร้างโค้ด native และกำหนดค่า dependencies สำหรับแต่ละแพลตฟอร์ม

Terminal window
npx expo prebuild