คู่มือการผสานรวมพื้นฐาน Expo SDK
ส่วนนี้ประกอบด้วยข้อมูลเกี่ยวกับวิธีการผสานรวม Pushwoosh Expo SDK เข้ากับแอปพลิเคชันของคุณ
ข้อกำหนดเบื้องต้น
Anchor link toในการผสานรวม Pushwoosh Expo SDK เข้ากับแอปของคุณ คุณจะต้องมีสิ่งต่อไปนี้:
ขั้นตอนการผสานรวม
Anchor link to1. ติดตั้งปลั๊กอิน
Anchor link toติดตั้งปลั๊กอิน Pushwoosh Expo โดยใช้ Expo CLI
expo install pushwoosh-expo-pluginติดตั้ง Pushwoosh React Native SDK
npm install pushwoosh-react-native-plugin --save2. ตั้งค่าคุณสมบัติของปลั๊กอิน
Anchor link toเพิ่มปลั๊กอินไว้ที่ด้านหน้าของ plugin array พร้อมกับคุณสมบัติที่จำเป็น:
{ "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
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:
- คัดลอกไฟล์
google-services.jsonของคุณไปยังไดเรกทอรีรากของโปรเจกต์ - ตั้งค่าคุณสมบัติ
googleServicesFileเป็นพาธของgoogle-services.jsonของคุณและระบุคุณสมบัติpackage:
"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:
"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:
npx expo prebuild7. รันโปรเจกต์
Anchor link to- สร้างและรันโปรเจกต์:
npx expo run:androidnpx expo run:ios- ไปที่ Pushwoosh Control Panel และ ส่ง push notification
- คุณควรจะเห็นการแจ้งเตือนในแอป
การผสานรวมเพิ่มเติม
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
Anchor link toTags คือคู่ของ 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
Anchor link toEvents คือการกระทำหรือเหตุการณ์เฉพาะของผู้ใช้ภายในแอปที่สามารถติดตามเพื่อวิเคราะห์พฤติกรรมและทริกเกอร์ข้อความหรือการกระทำที่สอดคล้องกัน
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_LEVEL | INFO | Log level สำหรับ iOS ค่าที่เป็นไปได้: NONE, ERROR, WARN, INFO, DEBUG, NOISE |
| คุณสมบัติ Android | ||
logLevel | INFO | Log level สำหรับ Android หนึ่งใน: NONE, ERROR, WARN, INFO, DEBUG, NOISE |
multiNotificationMode | true | สามารถเปลี่ยนเป็น 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 ถูกเพิ่มไปยังไดเรกทอรีรากของโปรเจกต์ของคุณ:
"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 สำหรับแต่ละแพลตฟอร์ม
npx expo prebuild