ตอบสนองการแจ้งเตือนท้องถิ่นและระยะไกลสำหรับ iOS และ Android
พื้นที่เก็บข้อมูลนี้ไม่ได้รับการดูแลรักษาอย่างแข็งขัน สาเหตุหลักคือเวลา อย่างที่สองน่าจะเป็นความซับซ้อนของการแจ้งเตือนทั้งบน iOS และ Android เนื่องจากโปรเจ็กต์นี้อาจต้องมีการปรับโครงสร้างครั้งใหญ่เพื่อแก้ไขปัญหาบางอย่างหรือใช้ฟีเจอร์ใหม่ ฉันคิดว่าคุณควรพิจารณาทางเลือกเหล่านี้: Notifee ฟรีตั้งแต่เดือนกันยายนหรือการแจ้งเตือนแบบเนทีฟ
หากคุณสนใจที่จะเป็นผู้ดูแลโครงการนี้ อย่าลังเลที่จะสอบถามในประเด็นต่างๆ
ตรวจสอบการเปลี่ยนแปลงและการย้ายข้อมูลใน CHANGELOG:
บันทึกการเปลี่ยนแปลง
ผู้ดูแลยินดีต้อนรับ! อย่าลังเลที่จะติดต่อฉัน
บันทึกการเปลี่ยนแปลงมีให้ใช้งานตั้งแต่เวอร์ชัน 3.1.3 ที่นี่: บันทึกการเปลี่ยนแปลง
npm install --save react-native-push-notification
yarn add react-native-push-notification
หมายเหตุ: หากคุณกำหนดเป้าหมายเป็น iOS คุณต้องปฏิบัติตามคำแนะนำในการติดตั้งสำหรับ PushNotificationIOS เนื่องจากแพ็คเกจนี้ขึ้นอยู่กับแพ็คเกจนั้น
หมายเหตุ: สำหรับ Android คุณจะยังคงต้องอัปเดต AndroidManifest.xml ด้วยตนเอง (ตามด้านล่าง) เพื่อที่จะใช้การแจ้งเตือนตามกำหนดการ
มีปัญหาใช่ไหม? อ่านคู่มือการแก้ไขปัญหาก่อนที่จะแจ้งปัญหา
กรุณาอ่าน...
ส่วนประกอบใช้ PushNotificationIOS สำหรับส่วน iOS คุณควรปฏิบัติตามคำแนะนำในการติดตั้ง
หมายเหตุ: firebase-messaging
ก่อนเวอร์ชัน 15 ต้องมีหมายเลขเวอร์ชันเดียวกันเพื่อให้ทำงานได้อย่างถูกต้องในเวลาสร้างและขณะรันไทม์ หากต้องการใช้เวอร์ชันเฉพาะ:
ใน android/build.gradle
ของคุณ
ต่อ { googlePlayServicesVersion = "<เวอร์ชันบริการการเล่นของคุณ>" // default: "+"firebaseMessagingVersion = "<เวอร์ชัน Firebase ของคุณ>" // ค่าเริ่มต้น: "21.1.0"// Other settingscompileSdkVersion = <เวอร์ชัน SDK คอมไพล์ของคุณ> // ค่าเริ่มต้น: 23buildToolsVersion = "<เวอร์ชันเครื่องมือ build ของคุณ>" // default: "23.0.1"targetSdkVersion = <เป้าหมายของคุณ เวอร์ชัน SDK> // ค่าเริ่มต้น: 23supportLibVersion = "<เวอร์ชัน lib การสนับสนุนของคุณ>" // ค่าเริ่มต้น: 23.1.1}
หมายเหตุ: localNotification() ทำงานโดยไม่มีการเปลี่ยนแปลงในส่วนของแอปพลิเคชัน ในขณะที่ localNotificationSchedule() ใช้งานได้กับการเปลี่ยนแปลงเหล่านี้เท่านั้น:
ใน android/app/src/main/AndroidManifest.xml
ของคุณ
- <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <application ....><!-- เปลี่ยนค่าเป็นจริงเพื่อเปิดใช้งานป๊อปอัปสำหรับในเบื้องหน้าเมื่อรับการแจ้งเตือนระยะไกล (เพื่อป้องกันการทำซ้ำในขณะที่แสดงการแจ้งเตือนในเครื่อง ให้ตั้งค่านี้เป็นเท็จ) --><meta-data android: name="com.dieam.reactnativepushnotification.notification_foreground"android:value="false"/><!-- เปลี่ยนชื่อทรัพยากรเป็นสีเน้นของแอปของคุณ - หรือสีอื่นใดที่คุณต้องการ --><meta-data android:name="com.dieam.reactnativepushnotification.notification_color"android:resource="@color/white"/> <!-- หรือ @android:color/{name} เพื่อใช้สีมาตรฐาน --><receiver android: ชื่อ = "com.dieam.reactnativepushnotification.modules.RNPushNotificationActions" /> <ผู้รับ android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationPublisher" /> <receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationBootEventReceiver"> <ตัวกรองเจตนา> <การกระทำ android:name="android.intent.action.BOOT_COMPLETED" /> <การกระทำ android:name="android.intent.action.QUICKBOOT_POWERON" /> <การกระทำ android:name="com.htc.intent.action.QUICKBOOT_POWERON"/> </ ตัวกรองเจตนา> </ผู้รับ> <serviceandroid:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationListenerService"android:exported="false"> <ตัวกรองเจตนา> <การกระทำ android:name="com.google.firebase.MESSAGING_EVENT" /> </ ตัวกรองเจตนา> </บริการ> -
หากไม่ได้ใช้สี Android ในตัว ( @android:color/{name}
) สำหรับรายการ meta-data
notification_color
ใน android/app/src/main/res/values/colors.xml
(สร้างไฟล์หากไม่มีอยู่)
<ทรัพยากร> <color name="white">#FFF</color> </ทรัพยากร>
หากแอปของคุณมี @Override บน onNewIntent ใน MainActivity.java
ตรวจสอบให้แน่ใจว่าฟังก์ชันนั้นมีการเรียกขั้นสูงบน onNewIntent (หาก MainActivity.java
ของคุณไม่มี @Override สำหรับ onNewIntent ให้ข้ามสิ่งนี้):
@Overridepublic เป็นโมฆะ onNewIntent (เจตนาเจตนา) { ...super.onNewIntent(เจตนา); - -
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งการตั้งค่า Firebase อย่างถูกต้อง
ใน android/build.gradle
บิลด์สคริปต์ {... การพึ่งพา {... classpath('com.google.gms:google-services:4.3.3')... - -
ใน android/app/build.gradle
การพึ่งพา { ... การใช้งาน 'com.google.firebase:firebase-analytics:17.3.0' - - ใช้ปลั๊กอิน: 'com.google.gms.google-services'
จากนั้นใส่ google-services.json
ของคุณใน android/app/
หมายเหตุ: firebase/release-notes
ไม่จำเป็นต้องใช้
firebase-core
ของไลบรารี Firebase Android อีกต่อไป SDK นี้รวม Firebase SDK สำหรับ Google Analyticsตอนนี้ หากต้องการใช้ Analytics หรือผลิตภัณฑ์ Firebase ใดๆ ที่แนะนำให้ใช้ Analytics (ดูตารางด้านล่าง) คุณจะต้องเพิ่มการพึ่งพา Analytics อย่างชัดเจน:
com.google.firebase:firebase-analytics:17.3.0
ใน android/settings.gradle
- รวม ':react-native-push-notification'project(':react-native-push-notification').projectDir = file('../node_modules/react-native-push-notification/android')
ใน android/app/build.gradle
ของคุณ
การพึ่งพา {... โครงการดำเนินการ (': react-native-push-notification') ... -
ลงทะเบียนโมดูลด้วยตนเองใน MainApplication.java
(หากคุณไม่ได้ใช้ react-native link
):
นำเข้า com.dieam.reactnativepushnotification.ReactNativePushNotificationPackage; // <--- นำเข้าแพ็คเกจคลาสสาธารณะ MainApplication ขยายแอปพลิเคชันที่ใช้ ReactApplication { ส่วนตัวสุดท้าย ReactNativeHost mReactNativeHost = ใหม่ ReactNativeHost(นี้) { @Override protected boolean getUseDeveloperSupport() {return BuildConfig.DEBUG; } @Override protected List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( new MainReactPackage(), new ReactNativePushNotificationPackage() // <---- เพิ่มแพ็คเกจ ); - - - -
อย่าใช้ .configure()
ภายในส่วนประกอบ แม้แต่ App
หากคุณทำเช่นนั้น ตัวจัดการการแจ้งเตือนจะไม่เริ่มทำงาน เนื่องจากไม่ได้โหลดไว้ ให้ใช้
.configure()
ในไฟล์แรกของแอปแทน ซึ่งมักจะเป็นindex.js
นำเข้า PushNotificationIOS จาก "@react-native-community/push-notification-ios"; นำเข้า PushNotification จาก "react-native-push-notification";// ต้องอยู่นอกคอมโพเนนต์ LifeCycle (เช่น `componentDidMount`) PushNotification กำหนดค่า ({ // (เป็นทางเลือก) ถูกเรียกเมื่อมีการสร้างโทเค็น (iOS และ Android) onRegister: ฟังก์ชั่น (โทเค็น) {console.log ("TOKEN:", โทเค็น); - // (จำเป็น) ถูกเรียกเมื่อได้รับหรือเปิดรีโมตหรือเปิดการแจ้งเตือนในเครื่อง onNotification: ฟังก์ชั่น (การแจ้งเตือน) {console.log("NOTIFICATION:", การแจ้งเตือน);// ประมวลผลการแจ้งเตือน// (จำเป็น) ถูกเรียกเมื่อรับหรือเปิดรีโมตหรือเปิดการแจ้งเตือนในพื้นที่การแจ้งเตือนเสร็จสิ้น (PushNotificationIOS.FetchResult. ไม่มีข้อมูล); - // (เป็นทางเลือก) ถูกเรียกเมื่อมีการกด Registered Action และ involvedApp เป็นเท็จ หาก onNotification เป็นจริงจะถูกเรียก (Android) onAction: ฟังก์ชั่น (การแจ้งเตือน) {console.log("ACTION:", alert.action);console.log("NOTIFICATION:", การแจ้งเตือน);// ประมวลผลการกระทำ - // (เป็นทางเลือก) ถูกเรียกเมื่อผู้ใช้ไม่สามารถลงทะเบียนเพื่อรับการแจ้งเตือนระยะไกล โดยทั่วไปเกิดขึ้นเมื่อ APNS มีปัญหา หรืออุปกรณ์เป็นเครื่องจำลอง (ไอโอเอส) onRegistrationError: ฟังก์ชั่น (ผิดพลาด) {console.error (err.message, ผิดพลาด); - // IOS เท่านั้น (ไม่บังคับ): ค่าเริ่มต้น: ทั้งหมด - สิทธิ์ในการลงทะเบียน การอนุญาต: {alert: true,badge: true,sound: true, - // ควรแสดงการแจ้งเตือนเริ่มต้นโดยอัตโนมัติ // ค่าเริ่มต้น: จริง popInitialNotification: จริง, /** * (เป็นทางเลือก) ค่าเริ่มต้น: จริง * - ระบุว่าจะมีการร้องขอการอนุญาต (ios) และโทเค็น (android และ ios) หรือไม่ * - ถ้าไม่ คุณต้องเรียก PushNotificationsHandler.requestPermissions() ในภายหลัง * - หากคุณไม่ได้ ใช้การแจ้งเตือนระยะไกลหรือไม่ได้ติดตั้ง Firebase ให้ใช้สิ่งนี้: * requestPermissions: Platform.OS === 'ios' */ ขอสิทธิ์: จริง,});
โฟลเดอร์ตัวอย่างประกอบด้วยแอปตัวอย่างเพื่อสาธิตวิธีใช้แพ็คเกจนี้ การจัดการการแจ้งเตือนเสร็จสิ้นใน NotifService.js
โปรดทดสอบ PR ของคุณด้วยแอปตัวอย่างนี้ก่อนที่จะส่ง มันจะช่วยรักษา repo นี้
เมื่อมีการเปิดหรือรับการแจ้งเตือนใด ๆ การโทรกลับ onNotification
จะถูกเรียกว่าการส่งผ่านออบเจ็กต์พร้อมข้อมูลการแจ้งเตือน
ตัวอย่างออบเจ็กต์การแจ้งเตือน:
{เบื้องหน้า: false, // BOOLEAN: หากได้รับการแจ้งเตือนในเบื้องหน้าหรือ notuserInteraction: false, // BOOLEAN: หากผู้ใช้เปิดการแจ้งเตือนจากพื้นที่แจ้งเตือนหรือไม่มีข้อความ: 'ข้อความแจ้งเตือนของฉัน', // STRING: ข้อมูลข้อความแจ้งเตือน: {}, // OBJECT: ข้อมูลพุชหรือข้อมูลผู้ใช้ที่กำหนดในการแจ้งเตือนในท้องถิ่น}
PushNotification.localNotification (รายละเอียด: วัตถุ)
ตัวอย่าง:
PushNotification.localNotification({ /* คุณสมบัติเฉพาะ Android */ channelId: "your-channel-id", // (จำเป็น) channelId หากไม่มีช่อง การแจ้งเตือนจะไม่ทริกเกอร์ สัญลักษณ์: "สัญลักษณ์การแจ้งเตือนของฉัน", // (ตัวเลือก) showWhen: จริง // (เป็นทางเลือก) ค่าเริ่มต้น: จริง autoCancel: จริง // (เป็นทางเลือก) ค่าเริ่มต้น: จริง largeIcon: "ic_launcher", // (เป็นทางเลือก) ค่าเริ่มต้น: "ic_launcher" ใช้ "" เมื่อไม่มีไอคอนขนาดใหญ่ largeIconUrl: "https://www.example.tld/picture.jpg", // (ไม่บังคับ) ค่าเริ่มต้น: ไม่ได้กำหนด SmallIcon: "ic_notification", // (เป็นทางเลือก) ค่าเริ่มต้น: "ic_notification" พร้อมด้วยทางเลือกสำหรับ "ic_launcher" ใช้ "" สำหรับไอคอนขนาดเล็กเริ่มต้น bigText: "ข้อความขนาดใหญ่ของฉันที่จะแสดงเมื่อมีการขยายการแจ้งเตือน การจัดสไตล์สามารถทำได้โดยใช้แท็ก HTML (ดูรายละเอียดในเอกสาร Android)", // (ไม่บังคับ) ค่าเริ่มต้น: "ข้อความ" prop ข้อความย่อย: "นี่คือข้อความย่อย", // (เป็นทางเลือก) ค่าเริ่มต้น: ไม่มี bigPictureUrl: "https://www.example.tld/picture.jpg", // (ไม่บังคับ) ค่าเริ่มต้น: ไม่ได้กำหนด bigLargeIcon: "ic_launcher", // (เป็นทางเลือก) ค่าเริ่มต้น: ไม่ได้กำหนด bigLargeIconUrl: "https://www.example.tld/bigicon.jpg", // (ไม่บังคับ) ค่าเริ่มต้น: ไม่ได้กำหนด สี: "สีแดง", // (เป็นทางเลือก) ค่าเริ่มต้น: ค่าเริ่มต้นของระบบ สั่น: จริง // (เป็นทางเลือก) ค่าเริ่มต้น: จริง การสั่นสะเทือน: 300, // ความยาวการสั่นสะเทือนเป็นมิลลิวินาที, ละเว้นหากสั่น = false, ค่าเริ่มต้น: 1,000 แท็ก: "some_tag", // (ไม่บังคับ) เพิ่มแท็กในข้อความ group: "group", // (ไม่บังคับ) เพิ่มกลุ่มในข้อความ groupSummary: false, // (เป็นทางเลือก) ตั้งค่าการแจ้งเตือนนี้ให้เป็นข้อมูลสรุปกลุ่มสำหรับกลุ่มการแจ้งเตือน ค่าเริ่มต้น: false ต่อเนื่อง: false, // (เป็นทางเลือก) ตั้งค่าว่านี่เป็นการแจ้งเตือน "ต่อเนื่อง" หรือไม่ ลำดับความสำคัญ: "สูง", // (เป็นทางเลือก) กำหนดลำดับความสำคัญของการแจ้งเตือน ค่าเริ่มต้น: สูง การมองเห็น: "ส่วนตัว", // (ไม่บังคับ) ตั้งค่าการมองเห็นการแจ้งเตือน ค่าเริ่มต้น: ส่วนตัว IgnInForeground: false, // (เป็นทางเลือก) หากเป็นจริง การแจ้งเตือนจะไม่ปรากฏให้เห็นเมื่อแอปอยู่เบื้องหน้า (มีประโยชน์สำหรับการเทียบเคียงกับลักษณะการแจ้งเตือนของ iOS) ควรใช้ร่วมกับการตั้งค่า `com.dieam.reactnativepushnotification.notification_foreground` ShortcutId: "shortcut-id", // (เป็นทางเลือก) หากการแจ้งเตือนนี้ซ้ำกับทางลัดของ Launcher ให้ตั้งค่า ID ของทางลัด ในกรณีที่ Launcher ต้องการซ่อนทางลัด เป็นค่าเริ่มต้นที่ไม่ได้กำหนด onlyAlertOnce: false, // (เป็นทางเลือก) การแจ้งเตือนจะเปิดเพียงครั้งเดียวพร้อมเสียงและแจ้งเตือน ค่าเริ่มต้น: false เมื่อ: null, // (เป็นทางเลือก) เพิ่มการประทับเวลา (ค่าการประทับเวลา Unix ในหน่วยมิลลิวินาที) ที่เกี่ยวข้องกับการแจ้งเตือน (โดยปกติคือเวลาที่เหตุการณ์เกิดขึ้น) สำหรับแอปที่กำหนดเป้าหมายเป็น Build.VERSION_CODES.N ขึ้นไป เวลานี้จะไม่แสดงอีกต่อไปตามค่าเริ่มต้น และจะต้องเลือกใช้โดยใช้ `showWhen` ค่าเริ่มต้น: null useChronometer: false, // (เป็นทางเลือก) แสดงฟิลด์ `เมื่อ` เป็นนาฬิกาจับเวลา แทนที่จะแสดง "เมื่อ" เป็นการประทับเวลา การแจ้งเตือนจะแสดงการแสดงนาทีและวินาทีที่อัปเดตโดยอัตโนมัตินับตั้งแต่เมื่อใด มีประโยชน์เมื่อแสดงเวลาที่ผ่านไป (เช่น การโทรอย่างต่อเนื่อง) ค่าเริ่มต้น: false timeoutAfter: null, // (ไม่บังคับ) ระบุระยะเวลาเป็นมิลลิวินาทีหลังจากนั้นควรยกเลิกการแจ้งเตือนนี้ หากยังไม่ได้ยกเลิก ค่าเริ่มต้น: null messageId: "google:message_id", // (ไม่บังคับ) เพิ่มเป็น `message_id` ใน Intent Extras เพื่อให้การเปิดการแจ้งเตือนแบบพุชสามารถค้นหาข้อมูลที่จัดเก็บโดย @react-native-firebase/messaging module การกระทำ: ["ใช่", "ไม่"], // (Android เท่านั้น) ดูเอกสารสำหรับการดำเนินการแจ้งเตือนเพื่อทราบข้อมูลเพิ่มเติม invokeApp: จริง // (เป็นทางเลือก) เปิดใช้งานการคลิกที่การกระทำเพื่อนำแอปพลิเคชันกลับมาอยู่เบื้องหน้าหรืออยู่ในพื้นหลัง ค่าเริ่มต้น: จริง /* คุณสมบัติ iOS เท่านั้น */ หมวดหมู่: "", // (เป็นทางเลือก) ค่าเริ่มต้น: สตริงว่าง คำบรรยาย: "คำบรรยายการแจ้งเตือนของฉัน", // (ไม่บังคับ) ชื่อที่เล็กกว่าใต้ชื่อการแจ้งเตือน /* คุณสมบัติ iOS และ Android */ id: 0, // (เป็นทางเลือก) จำนวนเต็ม 32 บิตที่ไม่ซ้ำกันที่ถูกต้องที่ระบุเป็นสตริง ค่าเริ่มต้น: ID ที่ไม่ซ้ำที่สร้างขึ้นโดยอัตโนมัติ title: "ชื่อการแจ้งเตือนของฉัน", // (ไม่บังคับ) ข้อความ: "ข้อความแจ้งเตือนของฉัน", // (จำเป็น) picture: "https://www.example.tld/picture.jpg", // (ไม่บังคับ) แสดงรูปภาพพร้อมการแจ้งเตือน นามแฝงของ `bigPictureUrl` สำหรับ Android ค่าเริ่มต้น: ไม่ได้กำหนด userInfo: {}, // (เป็นทางเลือก) ค่าเริ่มต้น: {} (การใช้ null ทำให้เกิดข้อผิดพลาดค่า JSON '<null>') playSound: เท็จ // (เป็นทางเลือก) ค่าเริ่มต้น: จริง soundName: "default", // (เป็นทางเลือก) เสียงที่จะเล่นเมื่อมีการแสดงการแจ้งเตือน ค่าของ 'ค่าเริ่มต้น' จะเล่นเสียงเริ่มต้น สามารถตั้งค่าเป็นเสียงที่กำหนดเองได้ เช่น 'android.resource://com.xyz/raw/my_sound' มันจะค้นหาไฟล์เสียง 'my_sound' ในไดเร็กทอรี 'res/raw' แล้วเล่น ค่าเริ่มต้น: 'ค่าเริ่มต้น' (เล่นเสียงเริ่มต้น) หมายเลข: 10, // (เป็นทางเลือก) จำนวนเต็ม 32 บิตที่ถูกต้องที่ระบุเป็นสตริง ค่าเริ่มต้น: ไม่มี (ไม่สามารถเป็นศูนย์ได้) RepeatType: "วัน", // (ไม่บังคับ) ช่วงเวลาการทำซ้ำ ตรวจสอบส่วน 'การแจ้งเตือนซ้ำ' สำหรับข้อมูลเพิ่มเติม});
PushNotification.localNotificationSchedule (รายละเอียด: วัตถุ)
ตัวอย่าง:
PushNotification.localNotificationSchedule({ //... คุณสามารถใช้ตัวเลือกทั้งหมดจาก localNotifications ข้อความ: "ข้อความแจ้งเตือนของฉัน", // (จำเป็น) วันที่: วันที่ใหม่ (Date.now () + 60 * 1,000), // ใน 60 วินาที AllowWhileIdle: false, // (เป็นทางเลือก) ตั้งค่าการแจ้งเตือนให้ทำงานขณะหลับใน ค่าเริ่มต้น: false /* คุณสมบัติเฉพาะ Android */ RepeatTime: 1, // (เป็นทางเลือก) การเพิ่มขึ้นของประเภททำซ้ำที่กำหนดค่าไว้ ตรวจสอบส่วน 'การแจ้งเตือนซ้ำ' สำหรับข้อมูลเพิ่มเติม});
PushNotification.popInitialNotification (โทรกลับ)
ตัวอย่าง:
PushNotification.popInitialNotification((การแจ้งเตือน) => { console.log('การแจ้งเตือนเริ่มต้น', การแจ้งเตือน);});
ใน Android ให้เพิ่มไฟล์เสียงที่คุณกำหนดเองไปที่ [project_root]/android/app/src/main/res/raw
ใน iOS ให้เพิ่มไฟล์เสียงที่คุณกำหนดเองไปยัง Resources
โปรเจ็กต์ใน xCode
ในการแจ้งเตือนตำแหน่ง json ระบุชื่อไฟล์เต็ม:
soundName: 'my_sound.mp3'
หากต้องการใช้ช่อง ให้สร้างช่องเหล่านั้นเมื่อเริ่มต้นและส่ง channelId
ที่ตรงกันไปยัง PushNotification.localNotification
หรือ PushNotification.localNotificationSchedule
นำเข้า PushNotification, {ความสำคัญ} จาก 'react-native-push-notification';... PushNotification.createChannel ({ channelId: "channel-id", // (จำเป็น) channelName: "ช่องของฉัน", // (จำเป็น) channelDescription: "ช่องสำหรับจัดหมวดหมู่การแจ้งเตือนของคุณ", // (ทางเลือก) ค่าเริ่มต้น: ไม่ได้กำหนด playSound: เท็จ, // (ทางเลือก) ค่าเริ่มต้น: ชื่อเสียงจริง: "ค่าเริ่มต้น", // (ทางเลือก) ดูพารามิเตอร์ `soundName` ของความสำคัญของฟังก์ชัน `localNotification: Importance.HIGH, // (เป็นทางเลือก) ค่าเริ่มต้น: Importance.HIGH รูปแบบการสั่น if true.},(created) => console.log(`createChannel return '${created}''`) // (เป็นทางเลือก) callback จะคืนค่าว่าช่องนั้นถูกสร้างขึ้นหรือไม่ false หมายความว่ามีอยู่แล้ว -
หมายเหตุ: หากไม่มีช่อง การแจ้งเตือนจะไม่ทำงาน
ในตัวเลือกการแจ้งเตือน คุณต้องระบุรหัสช่องด้วย channelId: "your-channel-id"
หากไม่มีช่องอยู่ การแจ้งเตือนอาจไม่ทำงาน เมื่อสร้างช่องแล้ว จะไม่สามารถอัปเดตช่องได้ ตรวจสอบให้แน่ใจว่า channelId
ของคุณแตกต่างออกไปหากคุณเปลี่ยนตัวเลือกเหล่านี้ หากคุณสร้างช่องด้วยวิธีอื่น ระบบจะใช้ตัวเลือกของช่อง
หากคุณต้องการใช้ช่องทางเริ่มต้นอื่นสำหรับการแจ้งเตือนระยะไกล โปรดดูเอกสารประกอบของ Firebase:
ตั้งค่าแอปไคลเอ็นต์ Firebase Cloud Messaging บน Android
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id" />
สำหรับการแจ้งเตือนในท้องถิ่น จะมีตัวเลือกประเภทเดียวกันนี้ให้เลือก:
คุณสามารถใช้:
<meta-data android:name="com.dieam.reactnativepushnotification.default_notification_channel_id" android:value="@string/default_notification_channel_id" />
หากไม่ได้กำหนดไว้ ให้ถอยกลับไปเป็นค่า Firebase ที่กำหนดไว้ใน AndroidManifest
:
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="..." />
หากไม่ได้กำหนดไว้ ให้ถอยกลับไปเป็นรหัสช่อง Firebase เริ่มต้น fcm_fallback_notification_channel
คุณสามารถแสดงรายการช่องที่มีด้วย:
PushNotification.getChannels (ฟังก์ชัน (channel_ids) { console.log(channel_ids); // ['channel_id_1']});
คุณสามารถตรวจสอบว่ามีช่องอยู่หรือไม่ด้วย:
PushNotification.channelExists (channel_id ฟังก์ชัน (มีอยู่) { console.log (มีอยู่); // จริง/เท็จ});
คุณสามารถตรวจสอบว่าช่องถูกบล็อกด้วย:
PushNotification.channelBlocked (channel_id ฟังก์ชั่น (ถูกบล็อก) { console.log (ถูกบล็อก); // จริง/เท็จ});
คุณสามารถลบช่องด้วย:
PushNotification.deleteChannel(channel_id);
จำเป็นต้องมีพารามิเตอร์ id
สำหรับ PushNotification.localNotification
สำหรับการดำเนินการนี้ รหัสที่ให้มาจะถูกใช้สำหรับการดำเนินการยกเลิก
PushNotification.localNotification({...id: '123'...});PushNotification.cancelLocalNotification('123'