ฉันมีปัญหากับ Flutter และ IOS เกี่ยวกับการแจ้งเตือนแบบพุช
การตั้งค่าของฉันและสิ่งที่ใช้งานได้:
1) ฉันติดตั้งfirebase_messaging: ^5.1.6
แพคเกจโดยไม่มีข้อผิดพลาด / ปฏิบัติตามคำแนะนำทั้งหมดสำหรับ IOS
2) ฉันได้ขออนุญาตจากผู้ใช้ใน IOS และได้รับการแจ้งเตือนแบบพุช
3) ฉันสามารถรับโทเค็น FCM บนอุปกรณ์ IOS และ Android
4) ฉันได้สร้างคีย์ในส่วนนักพัฒนาของ Apple และเพิ่มรหัสไปยัง FCM
5) ฉันได้ปิดแอพ / ส่งไปที่พื้นหลังเมื่อทำการทดสอบ - ยังไม่มีโชค
6) ฉันได้เพิ่มไฟล์ google-service-info ไปยัง Runner โดยใช้ Xcode
7) ฉันได้เพิ่มการแจ้งเตือนแบบพุชและการแจ้งเตือนเบื้องหลังในความสามารถ XCode
8) ฉันกำลังทดสอบอุปกรณ์ทางกายภาพ iPhone 7 และ iPad จริง
ฉันใช้ curl เพื่อส่งการแจ้งเตือนไปยังอุปกรณ์ IOS
curl -X POST --header "Authorization: key=<myAuthKEY>" \
--Header "Content-Type: application/json" \
https://fcm.googleapis.com/fcm/send \
-d "{\"to\":\"<myDeviceKey>\",\"notification\":{\"body\":\"Hello\"},\"priority\":10}"
ฉันได้รับการตอบสนองที่ประสบความสำเร็จจาก firebase
{"multicast_id":<SomeIdHere>,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"<SomeIdHere>"}]}
นี่คือวิธีดึงโทเค็น:
firebaseMessaging.getToken().then((String token) {
_authModel.setNotificationToken(token);
});
เมื่อฉันเรียกใช้แอพบน IOS ฉันไม่พบข้อผิดพลาดของ Firebase
ฉันยุ่งกับสิ่งนี้มา 2 วันแล้วดังนั้นมันจึงน่ารำคาญนิดหน่อยดูเหมือนว่าทั้งหมดจะทำงานบน Android
ข้อเสนอแนะใด ๆ โปรด
กระพือหมอ:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.9.1+hotfix.4, on Mac OS X 10.15 19A583, locale en-GB)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 11.0)
[✓] Android Studio (version 3.5)
[✓] VS Code (version 1.38.1)
[✓] Connected device (4 available)
• No issues found!
ไฟล์ AppDelegate.m ของฉัน
#include "AppDelegate.h"
#include "GeneratedPluginRegistrant.h"
@import Firebase;
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[FIRApp configure];
[GeneratedPluginRegistrant registerWithRegistry:self];
// Override point for customization after application launch.
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
@end