คู่มือการผสานการทำงานพื้นฐาน 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 notification
import Pushwoosh from 'pushwoosh-react-native-plugin';
Pushwoosh.init({ "pw_appid": "__YOUR_APP_ID__"});
Pushwoosh.register();โดยที่:
__YOUR_APP_ID__คือ application code จาก Pushwoosh Control Panel
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 และกำหนดค่า dependency สำหรับแต่ละแพลตฟอร์มโดยการรัน prebuild:
npx expo prebuild7. รันโปรเจกต์
Anchor link to- บิวด์และรันโปรเจกต์:
npx expo run:androidnpx expo run:ios- ไปที่ Pushwoosh Control Panel และ ส่ง push notification
- คุณควรจะเห็นการแจ้งเตือนในแอป
การผสานการทำงานเพิ่มเติม
Anchor link toณ จุดนี้ คุณได้ผสานการทำงาน SDK และสามารถส่งและรับ push notification ได้แล้ว ตอนนี้เรามาดูฟังก์ชันการทำงานหลักกัน
Event listeners สำหรับ Push notification
Anchor link toใน Pushwoosh SDK มี event listener สองตัวที่ออกแบบมาเพื่อจัดการ push notification:
- event
onPushReceivedจะถูกทริกเกอร์เมื่อได้รับ push notification - event
onPushAcceptedจะถูกทริกเกอร์เมื่อผู้ใช้เปิดการแจ้งเตือน
คุณควรตั้งค่า event listener เหล่านี้ทันทีหลังจากการเริ่มต้น 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 {
// ตั้งค่า User ID Pushwoosh.setUserId(user.getId());
// ตั้งค่าอีเมลผู้ใช้ Pushwoosh.setEmails(user.getEmailList());
// การตั้งค่าข้อมูลผู้ใช้เพิ่มเติมเป็น tag สำหรับ Pushwoosh Pushwoosh.setTags({ "age": user.getAge(), "name": user.getName(), "last_login": user.getLastLoginDate() }); }}Tags
Anchor link toTag คือคู่ของคีย์-ค่าที่กำหนดให้กับผู้ใช้หรืออุปกรณ์ ซึ่งช่วยให้สามารถแบ่งกลุ่มตามคุณลักษณะต่างๆ เช่น ความชอบหรือพฤติกรรม ทำให้สามารถส่งข้อความแบบกำหนดเป้าหมายได้
import Pushwoosh from 'pushwoosh-react-native-plugin';
class UpdateUser { afterUserUpdateProfile(user: User): void {
// ตั้งค่ารายการหมวดหมู่ที่ชื่นชอบ Pushwoosh.setTags({ "favorite_categories": user.getFavoriteCategoriesList() });
// ตั้งค่าข้อมูลการชำระเงิน Pushwoosh.setTags({ "is_subscribed": user.isSubscribed(), "payment_status": user.getPaymentStatus(), "billing_address": user.getBillingAddress() }); }}Events
Anchor link toEvent คือการกระทำหรือเหตุการณ์ที่เฉพาะเจาะจงของผู้ใช้ภายในแอปที่สามารถติดตามเพื่อวิเคราะห์พฤติกรรมและทริกเกอร์ข้อความหรือการกระทำที่สอดคล้องกัน
import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration {
// ติดตาม event การเข้าสู่ระบบ afterUserLogin(user: User): void { Pushwoosh.postEvent("login", { "name": user.getName(), "last_login": user.getLastLoginDate() }); }
// ติดตาม 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 และโค้ด Pushwoosh ที่จำเป็นภายในนั้น
คุณสมบัติเพิ่มเติมของปลั๊กอิน
Anchor link to| คุณสมบัติ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
| คุณสมบัติ iOS | ||
Pushwoosh_LOG_LEVEL | INFO | ระดับการบันทึกสำหรับ iOS ค่าที่เป็นไปได้: NONE, ERROR, WARN, INFO, DEBUG, NOISE |
| คุณสมบัติ Android | ||
logLevel | INFO | ระดับการบันทึกสำหรับ 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 และกำหนดค่า dependency สำหรับแต่ละแพลตฟอร์ม
npx expo prebuild