Saya membenturkan kepala. Saya menerapkan pemberitahuan push. Semuanya berfungsi dengan baik (push diterima, lencana diperbarui) tetapi di bawah iOS 13.3 aplikasi metode (_: didReceiveRemoteNotification: fetchCompletionHandler :) tidak dipanggil saat aplikasi berada di latar belakang. Jika aplikasi di latar depan atau menggunakan perangkat iOS 12 metode ini disebut. Saya mendaftar untuk pemberitahuan push dengan cara berikut:
[[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] registerForRemoteNotifications];
});
}
}];
Payload diatur sebagai berikut
{"aps": {
"badge": 10,
"alert": "test",
"content-available": 1
}}
Saya mencoba menambahkan "Pemberitahuan jarak jauh" dan "Pemrosesan latar belakang" sebagai kemampuan aplikasi dalam semua variasi (hanya "Pemberitahuan jarak jauh" / "Pemrosesan latar belakang", tanpa kemampuan apa pun, yang memungkinkan keduanya) tanpa perubahan apa pun. Saya menetapkan delegasi untuk UNUserNotificationCenter tetapi sekali lagi tidak berhasil. Saya mengatur tajuk sesuai:
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
Dari dokumen itu menyatakan bahwa metode ini dipanggil bahkan ketika aplikasi di latar belakang:
Gunakan metode ini untuk memproses notifikasi jarak jauh yang masuk untuk aplikasi Anda. Berbeda dengan aplikasi: metode didReceiveRemoteNotification:, yang dipanggil hanya ketika aplikasi Anda berjalan di latar depan, sistem memanggil metode ini ketika aplikasi Anda berjalan di latar depan atau latar belakang.
Apa yang saya lewatkan di sini untuk iOS 13?
sumber
application(_:didReceiveRemoteNotification:withCompletionHandler:)
metode?Jawaban:
Sudahkah Anda mengatur
di backend Anda APS payload?
Juga perlu memastikan Anda telah mengaktifkan mode latar belakang dalam file info.plist Aplikasi iOS Anda
sumber
Saya menghabiskan tiket dukungan untuk mendapatkan jawaban atas masalah ini.
Ternyata dokumentasinya tidak 100% "valid" untuk iOS 13 tentang topik ini. Perangkat memutuskan apakah akan bangun atau tidak. Meskipun dokumentasinya sedikit berbeda.
Cara implementasi yang disukai Apple sebagai ekstensi pemberitahuan. Setelah itu, Anda harus menyesuaikan muatan untuk memasukkan "konten yang bisa diubah".
Saya meminta dukungan sesudahnya apakah saya harus mengajukan radar dan mereka menjawab dengan "ya".
sumber
Terapkan
didRegisterForRemoteNotificationsWithDeviceToken
dan jugadidFailToRegisterForRemoteNotificationsWithError
dalam delegasi aplikasi Anda, untuk memeriksa apakah perangkat membuat koneksi yang baik dengan server APN Apple. Jika ini bukan masalahnya, hidupkan ulang perangkat dan / atau coba buat koneksi melalui jaringan Wi-Fi lain dan mulai ulang aplikasi.sumber
Metode delegasi ini: -
semakin dipanggil ketika kami mengklik pemberitahuan untuk iOS 13 dan aplikasi di latar belakang.
sumber
Anda perlu menerapkan Ekstensi Konten Pemberitahuan
Karena saya menggunakan OneSignal dan kode pengaturannya, ini berfungsi dengan baik untuk saya https://documentation.onesignal.com/docs/ios-sdk-setup
tidak yakin apakah bit OneSignal membuat perbedaan, tetapi menambahkannya pula
sumber