OneSignal กำลังตั้งเพดานที่เข้มงวดกับแพลนฟรีของตัวเอง เร็ว ๆ นี้ push notification บนมือถือและข้อความในแอปจะไม่ฟรีอีกต่อไปเมื่อเกิน 1,000 monthly active users (MAU) บัญชีใหม่จะเจอลิมิตนี้ตั้งแต่ 1 กันยายน 2026 ส่วนบัญชีเดิมเริ่ม 1 ตุลาคม ถ้าแอปของคุณมีผู้ใช้งานที่ active มากกว่าหนึ่งพันคนต่อเดือน ตอนนี้มี 3 ทางเลือกครับ: อยู่ต่อแล้วจ่าย ลดจำนวนผู้ใช้ หรือย้ายแพลตฟอร์ม

อะไรเปลี่ยนและเมื่อไร

เครื่องคำนวณค่าใช้จ่ายแพลน OneSignal Growth แสดง $31 ต่อเดือนที่ 1,000 mobile active users
Source: OneSignal
  • แพลนฟรียังใช้งานได้ตามปกติถ้าต่ำกว่า 1,000 MAU แต่เกินจากนั้น push notification และข้อความในแอปจะย้ายไปแพลนที่มีค่าใช้จ่าย
  • วันที่มีผล: ตาม billing FAQ ของ OneSignal ลิมิตนี้จะใช้กับบัญชีใหม่ตั้งแต่ 1 กันยายน 2026 และบัญชีเดิมตั้งแต่ 1 ตุลาคม 2026
  • เกณฑ์: ต่ำกว่า 1,000 MAU สำหรับ push notification และข้อความในแอป ถ้าเกินเกณฑ์ ช่องทางเหล่านี้จะหยุดส่งจนกว่าจะอัปเกรด
  • สิ่งที่ไม่เปลี่ยน: web push อีเมล และ SMS ยังทำงานได้ตามปกติภายใต้ลิมิตแพลนเดิม การเปลี่ยนแปลงนี้เจาะจงที่มือถือเท่านั้น
  • Journey ก็ได้รับผลกระทบเช่นกัน: ขั้นตอนใน journey ที่ส่ง push หรือข้อความในแอปจะข้าม mobile subscription ไปเฉย ๆ
  • การลบ subscriber ไม่ใช่ทางออก ถ้าคุณลบ mobile subscription ที่ active ใน 30 วันที่ผ่านมา แพลนของคุณจะกลับมาใช้งานได้อีกครั้งก็ต่อเมื่อผ่านไป 30 วันหลังการลบ และต้องอยู่ใต้ลิมิตตลอดช่วงเวลานั้นด้วย

การย้ายระบบทำงานยังไง

ถ้าคุณตัดสินใจย้ายแล้ว มีจุดหนึ่งที่จะเปลี่ยนวิธีวางแผนของคุณ: เราเป็นคนทำการย้ายระบบให้ ส่วนของคุณมีแค่ 3 อย่าง: ไฟล์ export ข้อมูล push credentials ของคุณ และการเปลี่ยน SDK ในแอปเวอร์ชันถัดไป ส่วนที่เหลือทั้งหมด (ทำความสะอาดข้อมูล จับคู่แพลตฟอร์ม สร้าง tags ใหม่ import audience ตรวจสอบการส่งข้อความ) เราทำให้ครับ

การเปลี่ยนระบบทำงานสองทางพร้อมกัน การ import ครั้งเดียวจะย้ายฐานผู้ใช้เดิมของคุณ ทำให้ audience ยังติดต่อได้ตั้งแต่วันแรก ก่อนที่จะมีผู้ใช้แม้แต่คนเดียวอัปเดตแอป จากนั้น SDK จะเข้ามาดูแลแต่ละอุปกรณ์เมื่อเจ้าของอุปกรณ์ติดตั้งเวอร์ชันใหม่ คุณต้องใช้ทั้งสองอย่าง และไม่มีอันไหนที่ต้องรอกัน

1. อะไรที่ย้ายได้และย้ายไม่ได้

คุณไม่ต้องตรวจสอบเรื่องนี้เอง นี่คือภาพรวมทั้งหมดที่บอกไว้ล่วงหน้า เพื่อไม่ให้มีอะไรน่าแปลกใจระหว่างการย้ายระบบ

ช่องทางย้ายได้ไหมอย่างไร
iOS push (APNs)ได้เรา import device token เดิมของคุณ token ยังใช้งานได้ต่อ เพราะเป็นของแอปและ APNs key ของคุณ ไม่ใช่ของ OneSignal
Android push (FCM)ได้เหมือนกัน: token เป็นของ Firebase project ของคุณ
Huawei push (HMS)ได้เหมือนกัน โดยใช้ HMS credentials ของคุณ
Email และ SMS subscriberได้ ต้องตั้งค่าช่องทางก่อนอีเมลและเบอร์โทรศัพท์จะถูก import เข้ามา แต่การส่งต้องตั้งค่าช่องทางฝั่งเราก่อน: domain สำหรับส่งอีเมลที่ยืนยันแล้วพร้อม DKIM และ sender หรือ provider สำหรับ SMS เราจะตั้งค่าร่วมกับคุณก่อนส่งครั้งแรก
Web pushไม่ได้ ต้อง subscribe ใหม่แทนการ subscribe บนเบราว์เซอร์ผูกกับ key ของ OneSignal ด้วยการเข้ารหัส ไม่มี provider ไหนโอนย้ายได้ subscriber ของคุณจะกลับมาแบบเงียบ ๆ เอง: ดูรายละเอียดในหัวข้อ web push
ประวัติข้อความ สถิติการส่ง journeyไม่ได้ข้อมูลย้อนหลังยังอยู่ใน OneSignal export รายงานที่ต้องการเก็บไว้ก่อนปิดบัญชี
คำนิยาม segmentสร้างใหม่ ไม่ใช่ importAPI ของ OneSignal คืนแค่ชื่อ segment และจำนวน แต่ไม่คืน filter จึงไม่มีอะไรให้ import เราจะสร้าง segment ใหม่ให้ใน Pushwoosh
ช่องทาง
1 / 7
iOS push (APNs)
ย้ายได้ไหม
ได้
อย่างไร
เรา import device token เดิมของคุณ token ยังใช้งานได้ต่อ เพราะเป็นของแอปและ APNs key ของคุณ ไม่ใช่ของ OneSignal
ช่องทาง
2 / 7
Android push (FCM)
ย้ายได้ไหม
ได้
อย่างไร
เหมือนกัน: token เป็นของ Firebase project ของคุณ
ช่องทาง
3 / 7
Huawei push (HMS)
ย้ายได้ไหม
ได้
อย่างไร
เหมือนกัน โดยใช้ HMS credentials ของคุณ
ช่องทาง
4 / 7
Email และ SMS subscriber
ย้ายได้ไหม
ได้ ต้องตั้งค่าช่องทางก่อน
อย่างไร
อีเมลและเบอร์โทรศัพท์จะถูก import เข้ามา แต่การส่งต้องตั้งค่าช่องทางฝั่งเราก่อน: domain สำหรับส่งอีเมลที่ยืนยันแล้วพร้อม DKIM และ sender หรือ provider สำหรับ SMS เราจะตั้งค่าร่วมกับคุณก่อนส่งครั้งแรก
ช่องทาง
5 / 7
Web push
ย้ายได้ไหม
ไม่ได้ ต้อง subscribe ใหม่แทน
อย่างไร
การ subscribe บนเบราว์เซอร์ผูกกับ key ของ OneSignal ด้วยการเข้ารหัส ไม่มี provider ไหนโอนย้ายได้ subscriber ของคุณจะกลับมาแบบเงียบ ๆ เอง: ดูรายละเอียดในหัวข้อ web push
ช่องทาง
6 / 7
ประวัติข้อความ สถิติการส่ง journey
ย้ายได้ไหม
ไม่ได้
อย่างไร
ข้อมูลย้อนหลังยังอยู่ใน OneSignal export รายงานที่ต้องการเก็บไว้ก่อนปิดบัญชี
ช่องทาง
7 / 7
คำนิยาม segment
ย้ายได้ไหม
สร้างใหม่ ไม่ใช่ import
อย่างไร
API ของ OneSignal คืนแค่ชื่อ segment และจำนวน แต่ไม่คืน filter จึงไม่มีอะไรให้ import เราจะสร้าง segment ใหม่ให้ใน Pushwoosh

ใช้เวลานานแค่ไหน

การเปลี่ยน SDK และทดสอบส่งข้อความให้เรียบร้อยใช้เวลาประมาณ 1 วันสำหรับนักพัฒนา 1 คน ส่วนการ import ทำงานคู่ขนานไปฝั่งเรา และนี่คือสิ่งที่ทำให้การเข้าถึงผู้ใช้ยังคงอยู่ตั้งแต่วันแรก: อุปกรณ์ที่ import แล้วส่งข้อความถึงได้ก่อนที่จะมีใครอัปเดตแอปด้วยซ้ำ จากนั้น audience ของแอปคุณจะค่อย ๆ ย้ายมาใช้ Pushwoosh SDK ตามจังหวะที่ผู้ใช้ติดตั้งเวอร์ชันใหม่ ซึ่งใช้เวลาเป็นสัปดาห์และไม่มีทางครอบคลุมทุกอุปกรณ์ได้ 100% นี่คือเหตุผลที่การ import มีอยู่ครับ

ลำดับขั้นตอนสำคัญ:

  1. Export audience ของคุณ ส่ง OneSignal app_id และ App API key ให้เรา แล้วเราจะดึง export ให้เอง หรือคุณ export ไฟล์ CSV ด้วยตัวเองก็ได้ รายละเอียดอยู่ด้านล่าง
  2. ส่ง push credentials ให้เรา เป็น key ชุดเดียวกับที่ OneSignal ใช้ส่งอยู่แล้ว เราจะอัปโหลดก่อนเริ่ม import เพื่อให้ทุกอุปกรณ์ที่ import แล้วส่งข้อความถึงได้
  3. เปลี่ยน SDK ถอด OneSignal SDK ออก ใส่ Pushwoosh SDK เข้าไป แล้ว initialize ด้วย application code และ device API token ของ Pushwoosh ขั้นตอนเฉพาะแพลตฟอร์มอยู่ใน Version A ถึง C
  4. ตรวจสอบการส่ง ลงทะเบียนอุปกรณ์ทดสอบและส่ง push หาตัวเองก่อนแตะต้อง production traffic
  5. อนุมัติ tag sheet เราสร้างให้จากไฟล์ export ของคุณ คุณแค่ขีดฆ่า tag ที่ไม่ใช้แล้วและทำเครื่องหมาย tag ที่เก็บได้หลายค่า เราจะ import และสร้าง segment ใหม่ให้
  6. สลับการส่งข้อความ เมื่อการทดสอบส่งเรียบร้อยและ import ยืนยันแล้ว ให้ชี้แคมเปญของคุณมาที่ Pushwoosh และหยุดส่งจาก OneSignal

2. Export audience ของคุณ

ตัวเลือก A (แนะนำ): เราทำให้ ส่ง OneSignal app_id และ App API key ให้เรา แล้วเราดึง export ให้เอง ส่วนของคุณจบแค่นี้

ตัวเลือก B: ทำเอง ใน OneSignal ไปที่ Audience > Subscriptions แล้ว export ไฟล์ CSV หรือเรียก export endpoint:

Terminal window
curl -X POST 'https://api.onesignal.com/players/csv_export?app_id=YOUR_APP_ID' \
-H 'Authorization: Key YOUR_APP_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"extra_fields":["external_user_id","timezone_id","notification_types"]}'

คำตอบที่ได้จะมี csv_file_url เป็นไฟล์ CSV ที่ถูกบีบอัดแบบ gzip และดาวน์โหลดได้อยู่ 3 วัน

หน้าจอ OneSignal Subscription Records พร้อมไฮไลต์ปุ่ม Export ที่มุมขวาบน
Source: OneSignal

คอลัมน์เหล่านี้ต้องมีอยู่ในไฟล์ อย่างอื่นเป็นตัวเลือกและเราจะไม่สนใจ

คอลัมน์ทำไมเราถึงต้องใช้
identifierตัว push token เอง แถวที่ไม่มีค่านี้จะย้ายไม่ได้
idsubscription id ของ OneSignal ซึ่งจะกลายเป็น device identifier ฝั่งเรา
device_typeบอกแพลตฟอร์ม: iOS, Android, Huawei, email, SMS
invalid_identifierทำเครื่องหมายแถวที่ unsubscribe แล้ว เพื่อให้เราข้ามไป
tagscustom tag ของคุณ เราจะสร้างใหม่ใน Pushwoosh
external_user_iduser id ของคุณเอง ช่วยไม่ให้อุปกรณ์ซ้ำกันเมื่อ SDK ของเราลงทะเบียนอุปกรณ์นั้น
timezone_idเปิดใช้งาน Send by Timezone ใน Pushwoosh
คอลัมน์
1 / 7
identifier
ทำไมเราถึงต้องใช้
ตัว push token เอง แถวที่ไม่มีค่านี้จะย้ายไม่ได้
คอลัมน์
2 / 7
id
ทำไมเราถึงต้องใช้
subscription id ของ OneSignal ซึ่งจะกลายเป็น device identifier ฝั่งเรา
คอลัมน์
3 / 7
device_type
ทำไมเราถึงต้องใช้
บอกแพลตฟอร์ม: iOS, Android, Huawei, email, SMS
คอลัมน์
4 / 7
invalid_identifier
ทำไมเราถึงต้องใช้
ทำเครื่องหมายแถวที่ unsubscribe แล้ว เพื่อให้เราข้ามไป
คอลัมน์
5 / 7
tags
ทำไมเราถึงต้องใช้
custom tag ของคุณ เราจะสร้างใหม่ใน Pushwoosh
คอลัมน์
6 / 7
external_user_id
ทำไมเราถึงต้องใช้
user id ของคุณเอง ช่วยไม่ให้อุปกรณ์ซ้ำกันเมื่อ SDK ของเราลงทะเบียนอุปกรณ์นั้น
คอลัมน์
7 / 7
timezone_id
ทำไมเราถึงต้องใช้
เปิดใช้งาน Send by Timezone ใน Pushwoosh

หมายเหตุ: external_user_id และ timezone_id ไม่ได้อยู่ใน export ค่าเริ่มต้น ต้องขอเพิ่มผ่านพารามิเตอร์ extra_fields ด้านบน หรือเลือกผ่าน column picker ใน dashboard

3. ส่ง push credentials ให้เรา

credentials ชุดนี้เป็นชุดเดียวกับที่ OneSignal ใช้ส่งข้อความแทนคุณอยู่แล้ว จึงไม่ต้องสร้างใหม่ เราดึงข้อมูลนี้ออกจาก OneSignal เองไม่ได้ เพราะ key ที่อัปโหลดแล้วจะดาวน์โหลดกลับมาไม่ได้อีก ขั้นตอนนี้จึงเป็นหน้าที่ของคุณ

แพลตฟอร์มสิ่งที่เราต้องการหาได้จากไหน
iOSAPNs Auth Key (.p8), Key ID, Team ID, app bundle idApple Developer > Certificates, Identifiers & Profiles > Keys ห้าม revoke key ที่ OneSignal ใช้อยู่ เพราะ key เดียวใช้ได้ทั้งสองฝั่ง
AndroidFirebase service account JSON (FCM v1)Firebase Console > Project settings > Service accounts ต้องเป็น Firebase project เดียวกับที่แอปคุณใช้อยู่แล้ว
HuaweiApp ID และ App SecretAppGallery Connect > your project > App information
แพลตฟอร์ม
1 / 3
iOS
สิ่งที่เราต้องการ
APNs Auth Key (.p8), Key ID, Team ID, app bundle id
หาได้จากไหน
Apple Developer > Certificates, Identifiers & Profiles > Keys ห้าม revoke key ที่ OneSignal ใช้อยู่ เพราะ key เดียวใช้ได้ทั้งสองฝั่ง
แพลตฟอร์ม
2 / 3
Android
สิ่งที่เราต้องการ
Firebase service account JSON (FCM v1)
หาได้จากไหน
Firebase Console > Project settings > Service accounts ต้องเป็น Firebase project เดียวกับที่แอปคุณใช้อยู่แล้ว
แพลตฟอร์ม
3 / 3
Huawei
สิ่งที่เราต้องการ
App ID และ App Secret
หาได้จากไหน
AppGallery Connect > your project > App information

เราจะอัปโหลด credentials เข้า Pushwoosh application ของคุณก่อนเริ่ม import ลำดับนี้สำคัญ: ถ้า import โดยไม่มี credentials ก่อน จะได้ฐานข้อมูลที่เต็มไปด้วยอุปกรณ์ที่ส่งข้อความถึงไม่ได้เลย

4. ตรวจสอบ tags และ segments ของคุณ

OneSignal Segment Editor แสดง segment ที่สร้างจาก filter Last Session น้อยกว่า 168 ชั่วโมงที่ผ่านมา
Source: OneSignal

Tag ย้ายได้ และคุณไม่ต้องมาไล่เช็กเองทีละตัว ใน OneSignal tag เป็นแค่ key/value string ธรรมดาที่ไม่มีการประกาศ type ส่วนใน Pushwoosh แต่ละ tag ต้องประกาศ type ครั้งเดียวต่อ application (String, Integer, Boolean, Date, List หรือ Price) ก่อนถึงจะเก็บค่าได้

ทันทีที่เราได้ไฟล์ export จากคุณ เราจะส่ง tag review sheet ที่สร้างจากไฟล์นั้นให้ ในนั้นจะมี tag ทุกตัวที่เราเจอ พร้อมข้อมูล: ค่าตัวอย่าง จำนวนอุปกรณ์ที่มีค่านี้ และ type ที่เราเสนอ ส่วนของคุณมีแค่ 2 คอลัมน์: ขีดฆ่า tag ที่ไม่ใช้แล้ว และทำเครื่องหมาย tag ที่เก็บได้หลายค่าพร้อมกัน ส่วนที่เหลือคือข้อเสนอที่คุณอนุมัติได้เลยตามที่เป็น

เหตุผลที่เราถามแทนที่จะเดาเอง: type ของ tag จะถูกล็อกไว้ทันทีที่สร้าง ถ้า tag ที่ควรเก็บได้หลายค่าถูกสร้างเป็น String ธรรมดา จะต้องลบแล้ว import ใหม่ tag ที่ดูเหมือนมีค่าเดียวในไฟล์ export คือกรณีที่เราตรวจจับจากข้อมูลเองไม่ได้เลย ถ้าไม่ได้รับคำตอบกลับมา เราจะ import tag ทุกตัวตาม type ที่เราคาดเดา และแจ้งให้คุณทราบว่าตัวไหนที่เราเดา

Segment ต้องสร้างใหม่ API ของ OneSignal filter export ตาม segment และแสดงชื่อ segment ได้ แต่ไม่คืนค่า filter ที่อยู่เบื้องหลัง จึงไม่มีอะไรให้ import มี 2 ทางที่ทำได้:

  1. สร้างเงื่อนไขใหม่ (แนะนำ) ส่งรายการ segment พร้อม filter มาให้เรา สกรีนช็อตก็ใช้ได้ เราจะสร้างใหม่บน tag ที่ import แล้ว segment ที่สร้างใหม่แบบนี้เป็น dynamic คืออัปเดตตามการเปลี่ยนแปลงของ audience ต่อไปเรื่อย ๆ
  2. Freeze สมาชิกไว้ตายตัว เรา export แยกทีละ segment แล้วประทับ marker tag ลงในแต่ละไฟล์ เช่น os_segment = vip_users เร็วดี แต่ผลลัพธ์เป็นแค่ snapshot ที่ไม่อัปเดตเอง

Segment ที่สร้างจากข้อมูลพฤติกรรมของ OneSignal เอง (จำนวน session, playtime, “Active Users”, “Engaged Users”) ไม่สามารถสร้างซ้ำได้ตอน import เพราะประวัติเหล่านั้นอยู่ใน OneSignal ส่วนที่เทียบเท่ากันใน Pushwoosh จะเริ่มเก็บข้อมูลทันทีที่ SDK ของเราถูกติดตั้งในแอปคุณ

5. สิ่งที่เราทำฝั่งเรา

  1. สร้างและตั้งค่า Pushwoosh application ของคุณ แล้วอัปโหลด credentials จากขั้นตอนที่ 3
  2. ทำความสะอาดไฟล์ export: ตัดแถวที่ unsubscribe และแถวที่ token ว่างออก จับคู่ platform code ของ OneSignal กับของเรา แปลง tags และจับคู่ external_user_id ของคุณกับ User ID ของเรา
  3. สร้าง tag schema แล้ว import audience เป็นชุด ๆ พร้อมตรวจสอบทุกชุด
  4. ส่ง test push ให้กลุ่มควบคุมเล็ก ๆ แล้วเทียบผลลัพธ์กับที่คุณคาดไว้
  5. รายงานกลับ: มี subscription กี่รายการในไฟล์ import ได้กี่รายการ และเหตุผลของทุกแถวที่เราข้ามไป

6. ใส่ Pushwoosh SDK ในแอปเวอร์ชันถัดไป

การ import ทำให้ audience เดิมของคุณติดต่อได้ทันที แต่มันเป็นแค่สะพานเชื่อม ไม่ใช่ปลายทาง มีแค่ Pushwoosh SDK ที่อยู่ในแอปคุณเท่านั้นที่จะรับ token ใหม่เมื่อ OS หมุนเวียน token (ติดตั้งใหม่, restore, อัปเดต OS) ลงทะเบียนผู้ใช้ที่ติดตั้งหลังการย้ายระบบ และรายงานการเปิดแอป ข้อความในแอป และการ uninstall

ถอด OneSignal SDK ออกในเวอร์ชันเดียวกัน push SDK สองตัวในแอปเดียวจะแย่งกัน callback การแจ้งเตือนตัวเดียวกัน และเราไม่ได้ทดสอบชุดค่าผสมนั้น การให้ OneSignal ยัง ส่งข้อความ อยู่ระหว่างที่เวอร์ชันใหม่ทยอย roll out เป็นเรื่องปกติและคาดไว้แล้ว แต่การมี SDK ทั้งสองตัว อยู่ในแอปเดียวกัน ไม่ควรทำ ขั้นตอนเฉพาะแพลตฟอร์มอยู่ใน Version A ถึง C ด้านล่าง

7. Web push: subscriber ของคุณจะกลับมายังไง

Web push import ไม่ได้ และนี่คือข้อจำกัดทางเทคนิคที่แก้ไม่ได้ ไม่ใช่ทางเลือกของ Pushwoosh การ subscribe web push ถูกเซ็นด้วยคู่ key แบบ VAPID ของผู้ที่สร้างมันขึ้นมา และ private key ของ OneSignal จะไม่มีวันหลุดออกจาก OneSignal — เอกสารของ OneSignal เองก็ระบุว่า web subscription key ใช้ได้เฉพาะกับ OneSignal SDK เท่านั้น ไม่มี provider ไหน import web subscription ของ provider อื่นได้ สิ่งที่ทำได้แทนคือการ subscribe ใหม่แบบเงียบ ๆ:

  1. ลบ OneSignal snippet ออก และ unregister service worker ของมันอย่างชัดเจน ถ้าปล่อย worker เก่าไว้ จะมี worker สองตัวแย่งกันทำงานบน domain เดียวกัน
  2. ติดตั้ง Pushwoosh Web Push SDK พร้อม service worker ของเราไว้ที่ root ของ domain คุณ
  3. Initialize ด้วย application code และ device API token (apiToken) ของคุณ แล้วเปิด automatic subscription (autoSubscribe: true หรือเรียก Pushwoosh.subscribe()) ถ้าไม่มี token การเรียกของ SDK จะได้ผลลัพธ์เป็น 401

ผู้เข้าชมที่กลับมาจะถูก subscribe ใหม่แบบเงียบ ๆ เอง สิทธิ์การแจ้งเตือนที่เบราว์เซอร์เก็บไว้เป็นของ domain คุณ ไม่ใช่ของ provider เดิม จึงไม่มี prompt ที่สองปรากฏขึ้น และผู้ใช้จะไม่สังเกตเห็นอะไรเลย ฐานผู้ใช้จะกลับมาเร็วแค่ไหนขึ้นอยู่กับว่าคนกลับมาใช้งานเร็วแค่ไหน ส่วนใหญ่มักกลับมาภายในสัปดาห์แรก และมีบางส่วนทยอยตามมาในเดือนถัดไป

3 กรณีที่ต้องระวัง:

  • ผู้เข้าชมที่ block การแจ้งเตือนไว้จะ subscribe ใหม่ไม่ได้ เบราว์เซอร์จะปฏิเสธและไม่ prompt ให้อีก คนกลุ่มนี้จะยังคงอยู่นอกระบบ ซึ่งเป็นผลลัพธ์ที่ถูกต้องแล้ว
  • ผู้เข้าชมที่ opt-out บนเว็บไซต์คุณ แต่สิทธิ์การแจ้งเตือนบนเบราว์เซอร์ยังคงเปิดอยู่ จะถูก subscribe ใหม่แบบเงียบ ๆ เช่นกัน ถูกต้องทางเทคนิค แต่จะดึงคนที่ตั้งใจออกไปแล้วกลับมา ถ้าคุณมี suppression list (ตาม user id หรืออีเมลของคุณเอง) ส่งมาให้เรา แล้วเราจะยกเว้นผู้ใช้กลุ่มนั้นจากทุกแคมเปญ ถ้าไม่มี เราแนะนำให้ subscribe ผ่านการคลิกที่ชัดเจน (ปุ่มกระดิ่งหรือ prompt) แทนการทำอัตโนมัติ
  • ถ้า web push เดิมของคุณทำงานบน subdomain ที่ vendor เดิมให้มา แทนที่จะเป็น domain ของคุณเอง สิทธิ์การแจ้งเตือนจะเป็นของ subdomain นั้น subscriber กลุ่มนี้กู้คืนไม่ได้ ต้อง opt-in ใหม่บนเว็บไซต์ของคุณ ตรวจสอบว่าคุณใช้ setup แบบไหนอยู่ก่อนวางแผนย้ายระบบ

8. สิ่งที่จะเกิดขึ้นหลัง import

  • อุปกรณ์หนึ่งเครื่องอาจปรากฏซ้ำกันชั่วคราว ข้อมูลที่ import มาจะถือ identifier ของ OneSignal ไว้ พอ SDK ของเราทำงานบนอุปกรณ์เดียวกัน จะลงทะเบียนด้วย identifier ของตัวเอง ข้อมูลเก่าจะถูกลบด้วย uninstall tracking หรือระบบล้างอัตโนมัติเมื่อไม่มี activity 90 วัน การส่ง external_user_id มาด้วยจะช่วยให้ทั้งสองข้อมูลอยู่ภายใต้ user profile เดียวกันระหว่างนี้
  • Token ที่ตายแล้วจะหลุดออกในแคมเปญแรกของคุณ Apple และ Google จะบอกว่า token ใช้ไม่ได้ก็ต่อเมื่อมีการส่งข้อความจริงเท่านั้น ดังนั้นการส่งครั้งแรกหลังการย้ายระบบก็จะช่วยล้างฐานข้อมูลของคุณไปในตัว
  • ตัวเลขที่ import ได้จะน้อยกว่าตัวนับใน OneSignal แถวที่ unsubscribe แถวที่ token ว่าง และแถว web push จะถูกตัดออกโดยตั้งใจ รายงานของเราจะบอกชัดเจนว่าแต่ละกลุ่มมีจำนวนเท่าไหร่

9. คลิกตรงไหนบ้าง

เส้นทางที่แน่นอนสำหรับสิ่งที่คุณต้องทำ เพื่อไม่ให้ต้องไล่หาใน dashboard เอง

งานเส้นทางคลิก
OneSignal: export audienceAudience > Subscriptions > optional segment filter > column picker > Export
OneSignal: App ID และ API keySettings > Keys & IDs เอา App ID และ App API key มา; คำขอ export จะส่งเป็น Authorization: Key <App API key>
Apple: APNs Auth Keydeveloper.apple.com > Certificates, Identifiers & Profiles > Keys > + > Apple Push Notification service (APNs) > Continue > Register > Download ไฟล์ .p8 ดาวน์โหลดได้ครั้งเดียว Key ID อยู่หน้าเดียวกัน ส่วน Team ID อยู่ใต้ Membership details
Firebase: service account JSONconsole.firebase.google.com > your project > gear icon > Project settings > Service accounts > Generate new private key
Huawei: App ID และ App SecretAppGallery Connect > My projects > your project > your app > Project settings > App information
Pushwoosh: application code และ device API tokenControl Panel > your application > Settings > API Access token ต้องมีสิทธิ์สำหรับ application นั้น
เว็บไซต์ของคุณ: ลบ worker เก่าลบไฟล์ service worker ของ OneSignal ออกจาก root เว็บไซต์ และ unregister worker ที่กำลังทำงานอยู่: navigator.serviceWorker.getRegistrations().then(rs => rs.forEach(r => r.unregister()))
งาน
1 / 7
OneSignal: export audience
เส้นทางคลิก
Audience > Subscriptions > optional segment filter > column picker > Export
งาน
2 / 7
OneSignal: App ID และ API key
เส้นทางคลิก
Settings > Keys & IDs เอา App ID และ App API key มา; คำขอ export จะส่งเป็น Authorization: Key <App API key>
งาน
3 / 7
Apple: APNs Auth Key
เส้นทางคลิก
developer.apple.com > Certificates, Identifiers & Profiles > Keys > + > Apple Push Notification service (APNs) > Continue > Register > Download ไฟล์ .p8 ดาวน์โหลดได้ครั้งเดียว Key ID อยู่หน้าเดียวกัน ส่วน Team ID อยู่ใต้ Membership details
งาน
4 / 7
Firebase: service account JSON
เส้นทางคลิก
console.firebase.google.com > your project > gear icon > Project settings > Service accounts > Generate new private key
งาน
5 / 7
Huawei: App ID และ App Secret
เส้นทางคลิก
AppGallery Connect > My projects > your project > your app > Project settings > App information
งาน
6 / 7
Pushwoosh: application code และ device API token
เส้นทางคลิก
Control Panel > your application > Settings > API Access token ต้องมีสิทธิ์สำหรับ application นั้น
งาน
7 / 7
เว็บไซต์ของคุณ: ลบ worker เก่า
เส้นทางคลิก
ลบไฟล์ service worker ของ OneSignal ออกจาก root เว็บไซต์ และ unregister worker ที่กำลังทำงานอยู่: navigator.serviceWorker.getRegistrations().then(rs => rs.forEach(r => r.unregister()))

เช็กลิสต์ก่อนวันที่ 1 ตุลาคม

เปิดหน้านี้ไว้เช็กไปทีละขั้น ไม่มีข้อไหนต้องดาวน์โหลดฟอร์มเพิ่ม

  • ส่ง export มาให้เรา หรือส่ง app_id พร้อม App API key ให้เราดึงเอง
  • ส่ง push credentials แล้ว: APNs key, FCM service account JSON, HMS key ถ้าใช้
  • ตั้งค่าช่องทาง email และ SMS กับเราแล้ว ถ้าคุณย้าย subscriber กลุ่มนี้ด้วย
  • ส่ง tag review sheet กลับมาแล้ว ลบ tag ที่ไม่ใช้แล้ว และทำเครื่องหมาย tag หลายค่าแล้ว
  • ส่ง segment filter มาให้เราสร้างใหม่แล้ว (สกรีนช็อตก็ได้)
  • ติดตั้ง Pushwoosh SDK ใน test build แล้ว และได้รับ test push แล้ว
  • Import เสร็จแล้ว และตรวจสอบรายงาน imported/skipped จากเราแล้ว
  • Web push SDK ใช้งานจริงแล้ว พร้อม unregister service worker เก่า ถ้าคุณใช้ web push
  • ทดสอบส่งข้อความเรียบร้อยบน production build แล้ว
  • สลับการส่งมาที่ Pushwoosh แล้ว และหยุดส่งจาก OneSignal แล้ว

Version A: iOS และ Android แบบ native

iOS เพิ่ม Pushwoosh iOS SDK แล้วตั้งค่า 2 key ใน Info.plist: Pushwoosh_APPID ใส่ application code ของ Pushwoosh และ PW_API_TOKEN ใส่ device API token ของคุณ เรียก registerForPushNotifications() ตรงจุดที่คุณเคย trigger prompt ของ OneSignal และดู iOS quick start สำหรับโค้ด initialization ที่ตรงกับเวอร์ชัน SDK ของคุณ ถอด OneSignal SDK และการเรียก registration ของมันออก เพื่อไม่ให้ทั้งสองตัวขอ token พร้อมกัน

Android เพิ่ม dependency com.pushwoosh:pushwoosh-firebase แล้วเพิ่ม meta-data 2 รายการในแท็ก <application> ของ AndroidManifest.xml: com.pushwoosh.appid ใส่ application code ของคุณ และ com.pushwoosh.apitoken ใส่ device API token ของคุณ เรียก Pushwoosh.getInstance().registerForPushNotifications() ใน initialization logic การตั้งค่า Firebase ของคุณยังคงเดิม โดยมี google-services.json อยู่ในโปรเจกต์ ส่วน FCM credentials ให้ไปใส่ใน Control Panel ใต้การตั้งค่าแพลตฟอร์ม Android

ตั้งค่า tag ด้วย setTags() และ user identifier ด้วย setUserId() ในจุดเดียวกับที่คุณเคยเรียกฟังก์ชันเทียบเท่าของ OneSignal เพื่อให้ segmentation ยังทำงานได้หลังเปลี่ยน SDK

Version B: Flutter และ FlutterFlow

FlutterFlow ห่อ Pushwoosh Flutter SDK ไว้ให้แล้ว การย้ายระบบจึงเป็นเรื่องของการตั้งค่าเป็นหลัก มากกว่าการเขียนโค้ด

  1. เพิ่ม Pushwoosh Flutter package เป็น custom dependency ในโปรเจกต์ของคุณ
  2. ใน custom action ให้ initialize SDK ด้วย application code ของคุณ แล้ว register push notification ตาม Flutter quick start สำหรับ initialization API เวอร์ชันปัจจุบัน
  3. ตั้งค่า native credentials แบบเดียวกับแอป Flutter ทั่วไป: Pushwoosh_APPID และ PW_API_TOKEN ใน Info.plist สำหรับ iOS, com.pushwoosh.appid และ com.pushwoosh.apitoken ใน AndroidManifest.xml สำหรับ Android
  4. ถอด OneSignal integration ออก เพื่อไม่ให้ SDK ทั้งสองตัว register พร้อมกัน
  5. จับคู่ tags และ user id ด้วย setTags() และ setUserId() ใน custom action ของคุณ

Version C: React Native

  1. ติดตั้ง plugin: npm install pushwoosh-react-native-plugin --save แล้วรัน pod install สำหรับ iOS
  2. Initialize และ register ใน root component ของคุณ:
import Pushwoosh from 'pushwoosh-react-native-plugin';
Pushwoosh.init({ pw_appid: "YOUR_APPLICATION_CODE" });
Pushwoosh.register();
  1. เพิ่ม device API token แบบ native: PW_API_TOKEN ใน Info.plist สำหรับ iOS, com.pushwoosh.apitoken เป็น meta-data ใน AndroidManifest.xml สำหรับ Android บน Android ให้เก็บ google-services.json ไว้ในโปรเจกต์เหมือนเดิม — ส่วน FCM credentials อยู่ใน Control Panel
  2. ถอด OneSignal React Native package และการเรียก init ของมันออก
  3. ย้าย tags และ user id มาด้วย setTags() และ setUserId() จาก plugin API
กำลังวางแผนย้ายจาก OneSignal?

ติดต่อทีมของเราเพื่อขอความช่วยเหลือได้เลยครับ

จองคิวคุยกับทีม

คำถามที่พบบ่อย

การเปลี่ยน SDK และทดสอบส่งข้อความให้เรียบร้อยใช้เวลาประมาณ 1 วันสำหรับนักพัฒนา 1 คน การ import ฐานผู้ใช้เดิมของคุณทำงานคู่ขนานไปฝั่งเรา และทำให้ audience ติดต่อได้ตั้งแต่วันแรก จึงไม่ต้องรอ app store review หรือรอผู้ใช้อัปเดตแอปเลย ส่ง export หรือ API key ให้เราเร็ว ๆ เพื่อให้เราเริ่มงานได้ทันที

มีคำถามระหว่างทางติดต่อ onboarding contact ของคุณที่ Pushwoosh ได้เลยครับ เราอยากตอบคำถามก่อนเริ่ม import มากกว่ามานั่งไล่เช็กตัวเลขทีหลัง


Pushwoosh Team
Content Team ที่ Pushwoosh
แชร์

บทความที่เกี่ยวข้อง

ดูทั้งหมด