ฉันกำลังต่อสู้กับหัวของฉัน ฉันกำลังใช้การแจ้งเตือนแบบพุช ทุกอย่างทำงานได้ดี (ได้รับการผลักดันอัปเดตตราสัญลักษณ์) แต่ภายใต้ iOS 13.3 แอปพลิเคชันวิธีการ (_: didReceiveRemoteNotification: fetchCompletionHandler :) จะไม่ถูกเรียกเมื่อแอปอยู่ในพื้นหลัง หากแอปอยู่เบื้องหน้าหรือใช้อุปกรณ์ iOS 12 จะมีการเรียกใช้เมธอด ฉันลงทะเบียนสำหรับการแจ้งเตือนแบบพุชด้วยวิธีต่อไปนี้:
[[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] registerForRemoteNotifications];
});
}
}];
เพย์โหลดถูกตั้งค่าเป็นต่อไปนี้
{"aps": {
"badge": 10,
"alert": "test",
"content-available": 1
}}
ฉันพยายามเพิ่ม "การแจ้งเตือนระยะไกล" และ "การประมวลผลเบื้องหลัง" เป็นความสามารถของแอพในทุกรูปแบบ (เฉพาะ "การแจ้งเตือนระยะไกล" / "การประมวลผลเบื้องหลัง" โดยไม่มีความสามารถใด ๆ ฉันตั้งผู้แทนสำหรับ UNUserNotificationCenter แต่ไม่ประสบความสำเร็จอีกครั้ง ฉันตั้งค่าส่วนหัวตาม:
curl -v \
-H 'apns-priority: 4' \
-H 'apns-topic: xx.xxxxx.xxxx' \
-H 'apns-push-type: alert' \
-H 'Content-Type: application/json; charset=utf-8' \
-d '{"aps": {"badge": 10,"alert": "test", "content-available":1}}' \
--http2 \
--cert pushcert.pem \
https://api.sandbox.push.apple.com/3/device/1234567890
จากเอกสารระบุว่าวิธีนี้เรียกว่าแม้ว่าแอพจะอยู่ในพื้นหลัง:
ใช้วิธีนี้เพื่อประมวลผลการแจ้งเตือนระยะไกลที่เข้ามาสำหรับแอปของคุณ แตกต่างจากแอปพลิเคชัน: didReceiveRemoteNotification: วิธีการซึ่งเรียกว่าเฉพาะเมื่อแอปของคุณทำงานในเบื้องหน้าระบบจะเรียกวิธีนี้เมื่อแอปของคุณทำงานในเบื้องหน้าหรือพื้นหลัง
ฉันพลาดอะไรที่นี่สำหรับ iOS 13
application(_:didReceiveRemoteNotification:withCompletionHandler:)
วิธีการใช้แล้วหรือยัง