ฉันกำลังพยายามส่งการแจ้งเตือนไปยังอุปกรณ์ IOS โดยใช้ Firebase Cloud Messaging - ทุกโปรเจ็กต์ IOS ใน Firebase Console มีคีย์ APNs P8 Auth ที่ถูกต้อง ซึ่งสร้างขึ้นใหม่จากบัญชีนักพัฒนา Apple เพื่อจุดประสงค์นี้
ฉันใช้แนวทางนี้:
curl -X POST \
https://fcm.googleapis.com/fcm/send \
-H 'Authorization: key=<My Key>' \
-H 'Content-Type: application/json' \
-H 'cache-control: no-cache' \
-d '{
"to": "<Device Token>",
"notification": {
"title": "Push Notification Test to IOS",
"body":"Push Notification Test to IOS"
},
"data": {
"message": "Push Notification Test to IOS"
}
}'
ซึ่งส่งผลให้เกิดข้อผิดพลาดต่อไปนี้จาก FCM:
{
"multicast_id": <Id>,
"success": 0,
"failure": 1,
"canonical_ids": 0,
"results": [
{
"error": "InvalidApnsCredential"
}
]
}
หากฉันลบบล็อก "การแจ้งเตือน" ออกจากข้อความ FCM จะตอบกลับสำเร็จ แต่ไม่ได้รับสิ่งใดบนอุปกรณ์
ฉันสามารถส่งและรับการแจ้งเตือนโดยใช้ข้อความตัวอย่างข้างต้นไปยังอุปกรณ์ Android ได้ดี
เอกสาร FCM แนะนำว่าเมื่อ รวมบล็อก "การแจ้งเตือน" แล้ว FCM พยายามส่งผ่าน APN เมื่อโทเค็นนั้นมีไว้สำหรับอุปกรณ์ IOS:
หากมีการระบุเพย์โหลดการแจ้งเตือน หรือตัวเลือก content_available ถูกตั้งค่าเป็นจริงสำหรับข้อความไปยังอุปกรณ์ iOS ข้อความจะถูกส่งผ่าน APN ไม่เช่นนั้นจะถูกส่งผ่านเซิร์ฟเวอร์การเชื่อมต่อ FCM
สิ่งที่ฉันได้ลอง:
- กำลังรีเฟรชโทเค็น
- รอ 24 ชั่วโมงเพื่อให้โทเค็นเผยแพร่ในสภาพแวดล้อม APN และเซิร์ฟเวอร์ FCM
- โดยใช้ใบรับรอง P12
- โดยใช้ใบรับรอง P8
- ตรวจสอบให้แน่ใจว่าแอป IOS อนุญาตการแจ้งเตือนใน Xcode
- ตรวจสอบให้แน่ใจว่าบัญชี Apple Developer มีแอปที่อนุญาตการแจ้งเตือน
- ตรวจสอบให้แน่ใจว่า Bundle Ids นั้นถูกต้องในบัญชี plist, FCM และ Apple
- ลองทั้งคีย์ดั้งเดิมของ FCM และรหัสเซิร์ฟเวอร์