mengapa didRegisterForRemoteNotificationsWithDeviceToken tidak dipanggil

89

Saya membuat aplikasi di mana saya ingin menerapkan layanan pemberitahuan push apple. Saya mengikuti petunjuk langkah demi langkah yang diberikan dalam tutorial ini .

Tapi tetap saja, metodenya tidak dipanggil. Saya tidak tahu apa yang menyebabkan masalah. Ada yang bisa bantu saya?

    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
        //NSString * token = [[NSString alloc] initWithData:deviceTokenencoding:NSUTF8StringEncoding];
        NSString *str = [NSString stringWithFormat:@"Device Token=%@",deviceToken];
        NSLog(@"Device Token:%@",str);

        //NSLog(@"Device token is called");
        //const void *devTokenBytes = [deviceToken bytes];
        //NSLog(@"Device Token");
    }

    - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)err { 
        NSString *str = [NSString stringWithFormat: @"Error: %@", err];
        NSLog(@"Error:%@",str);    
    }
Muzammil
sumber
tidak perlu menambahkan kode lain cukup periksa tautan stackoverflow.com/a/39849892/3269536
jenish

Jawaban:

74

Saya memiliki masalah yang sama: panggilan registerForRemoteNotificationTypes:tidak dipanggil application:didRegisterForRemoteNotificationsWithDeviceToken:maupunapplication:didFailToRegisterForRemoteNotificationsWithError:

Saya akhirnya menyelesaikan masalah ini dengan bantuan catatan teknis Apple TN2265 .

Inilah yang saya lakukan:

Pertama, saya memeriksa ulang bahwa saya memang mendaftar dengan benar untuk Push Notifications , termasuk memverifikasi profil penyediaan saya untuk kunci "aps-environment" dan penandatanganan kode dari file .app itu sendiri. Saya sudah menyiapkan semuanya dengan benar.

Saya kemudian harus men-debug pesan status Pemberitahuan Push di konsol (Anda perlu menginstal profil penyediaan PersistentConnectionLogging.mobileconfig di perangkat Anda dan mem-boot ulangnya . Lihat TN2265 di bawah "Mengamati Pesan Status Push"). Saya perhatikan bahwa proses apns memulai pengatur waktu dan menghitung tanggal kebakaran minimum, yang membuat saya curiga bahwa pesan konfirmasi pendaftaran Push-Notification, yang biasanya disajikan pada saat ini, ditekan oleh APNS, seperti yang ditunjukkan di TN2265:

Mengatur Ulang Pemberitahuan Izin Pemberitahuan Push di iOS

Pertama kali aplikasi yang mendukung push mendaftar untuk pemberitahuan push, iOS menanyakan pengguna apakah mereka ingin menerima pemberitahuan untuk aplikasi itu. Setelah pengguna menanggapi, lansiran ini tidak akan ditampilkan lagi kecuali perangkat dipulihkan atau aplikasi telah dicopot setidaknya selama satu hari.

Jika Anda ingin menyimulasikan aplikasi yang dijalankan untuk pertama kali, Anda dapat membiarkan aplikasi tersebut di-uninstal selama sehari. Anda dapat mencapai yang terakhir tanpa benar-benar menunggu satu hari dengan mengatur jam sistem maju satu hari atau lebih, mematikan perangkat sepenuhnya, kemudian menghidupkan kembali perangkat.

Jadi, saya menghapus aplikasi dari perangkat, lalu secara manual mengubah tanggal iPhone di Pengaturan, memulai ulang perangkat, dan menginstal ulang aplikasi.

Kali berikutnya kode saya dipanggil registerForRemoteNotificationTypes, ia menerima panggilan balik seperti yang diharapkan.

Ini menyelesaikan masalah saya. Semoga membantu.

100 gram
sumber
1
Poin utama bagi saya adalah saya menggunakan sertifikat pengembangan yang lebih lama di komputer lain. Mentransfer sertifikat terbaru dari laptop pengembangan utama memperbaiki masalah ini.
Markus Rautopuro
3
Setelah mengaktifkan Pemberitahuan push diperlukan untuk menghasilkan kembali profil penyediaan.
Tony
3
Hai! Meskipun ini adalah posting lama, saya menemukan bahwa kadang-kadang itu akan diperbaiki ketika Anda mematikan dan mengaktifkan semua pengaturan Notifikasi aplikasi. Karena terakhir kali saya ingat didRegisterForRemoteNotificationsWithDeviceToken dipanggil, tiba-tiba tidak. Semoga membantu.
otakuProgrammer
1
Saya hanya membuat ini bekerja dengan menambahkan langkah reset lain: 1. Hapus aplikasi 2. Setel Ulang Perangkat 3. Teruskan jam 1+ hari 4. Setel Ulang Perangkat LAGI 5. Sekarang instal dan itu akan meminta peringatan pemberitahuan push
etayluz
Penting juga untuk memastikan bahwa Anda tidak memiliki beberapa salinan yang "valid" dari profil penyediaan pengembangan yang sama, baik di Xcode atau di perangkat itu sendiri. Mungkin Anda membuat sertifikat APN baru dan membuat ulang profil penyediaan Anda setelah sertifikat sebelumnya kedaluwarsa. Profil pengembangan lama masih valid sebagai profil pengembangan, tetapi tidak cukup untuk mengaktifkan APN. Anda akan melihat kesalahan umum tentang "tidak ada hak-hak yang valid blah blah".
jaredsinclair
66

Di iOS 8, beberapa metode tidak digunakan lagi. Ikuti langkah-langkah di bawah ini untuk kompatibilitas iOS 8

1. Daftarkan pemberitahuan

if([[UIDevice currentDevice] systemVersion].floatValue >= 8.0)
{
    UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];    
}
else
{
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound|UIRemoteNotificationTypeBadge)];
}

2. Tambahkan 2 metode baru

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
    //register to receive notifications
    [application registerForRemoteNotifications];
}

//For interactive notification only
- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler
{
    //handle the actions
    if ([identifier isEqualToString:@"declineAction"]){
    }
    else if ([identifier isEqualToString:@"answerAction"]){
    }
}

Catatan: di atas dua metode baru diperlukan di iOS 8 selain didRegisterForRemoteNotificationsWithDeviceTokendandidReceiveRemoteNotification ..Jika tidak, metode delegasi tidak akan dipanggil.

Lihat: Notifikasi Jarak Jauh iOS 8

Komunitas
sumber
1
Haruskah kedua metode baru itu masuk Appdelegate.m?
Ethan Parker
- (void) application: (UIApplication *) application didRegisterUserNotificationSettings: (UIUserNotificationSettings *) notificationSettings {// register untuk menerima pemberitahuan [application registerForRemoteNotifications]; } Menambahkan yang berikut ini berbahaya, telepon saya jatuh dan saya bahkan tidak dapat mengatur ulang pabrik pada saat ini.
Yohanes
Ini mungkin jawaban yang Anda cari jika Anda berakhir di sini. Anehnya, delegasi dipanggil lebih awal hari ini tanpa saya menambahkan salah satu metode ini. Sekarang sepertinya saya membutuhkan keduanya.
Akankah
aplikasi saya mogok dengan baris ini[application registerForRemoteNotifications];
smithyy
26

Di iOS 8 , selain meminta akses notifikasi push secara berbeda, Anda juga perlu mendaftar secara berbeda.

Minta Akses:

if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
    // iOS 8
    UIUserNotificationSettings* settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
} else {
    // iOS 7 or iOS 6
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
}

Tangani perangkat terdaftar:

// New in iOS 8
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings {
    [application registerForRemoteNotifications];
}

// iOS 7 or iOS 6
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
    // Send token to server
}
Kyle Clegg
sumber
Amat sangat membantu. Saya tidak tahu mengapa notifikasi saya rusak.
GoldenJoe
4
Bagaimana saya bisa mendapatkan token di iOS 8?
Yossi
@Yossi disimpan dalam variabel "token" diapplication:didRegisterForRemoteNotificationsWithDeviceToken:
Kyle Clegg
aplikasi saya macet dengan baris ini [application registerForRemoteNotifications];
smithyy
13

Ingatlah bahwa notifikasi jarak jauh tidak didukung di simulator. Oleh karena itu, jika Anda menjalankan aplikasi Anda di simulator, didRegisterForRemoteNotificationsWithDeviceTokentidak akan dipanggil.

Eric
sumber
@ Hochl: Saya memperbarui jawaban saya sehingga menjawab pertanyaan dengan lebih spesifik.
Eric
1
Perhatikan bahwa didFailToRegisterForRemoteNotificationsWithError juga tidak akan dipanggil. Faktanya, tidak ada notifikasi yang dipanggil jika Anda menonaktifkan notifikasi push untuk aplikasi Anda di Pengaturan (baik di perangkat atau simulator). Apple tampaknya tidak menganggap ini sebagai kesalahan stackoverflow.com/questions/9199935/…
Zack Morris
12

Pastikan Anda memanggil kode Anda (perbarui sesuai dengan jenis pemberitahuan yang didukung)

[[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound];

dan profil penyediaan APNS diaktifkan. Anda mungkin perlu mengunduh ulang profil penyediaan setelah mengaktifkan APNS. Jika Anda mengalami masalah dan mendapatkan error, mungkin Anda harus membuat Entitlements.plist dan menambahkan kunci "aps-environment" dengan nilai "development" atau "production" bergantung pada jenis build (biasanya pasangan nilai kunci ini adalah terdapat dalam profil penyediaan, tetapi terkadang Xcode mengacaukannya).

Lorenzo Bevilacqua
sumber
Catatan: "dan profil penyediaan mengaktifkan APNS". Klik di bagian atas Anda Project Tree> Capabilities> Push Notifications harus disetel ke ON.
trevorayson
6

Jika profil penyediaan digunakan sebelumnya untuk Mengaktifkan dan Mengonfigurasi layanan Pemberitahuan Push Apple, Anda perlu mengunduh ulang profil penyediaan lagi.

Hapus profil penyediaan dari Xcode Organizer dan dari iPhone / iPad. Pergi ke Settings -> General -> Profiles -> [Your provisioning] -> Remove.

Instal profil penyediaan yang baru diunduh. Kemudian bersihkan dan jalankan proyek dari XCode. Sekarang didRegisterForRemoteNotificationsWithDeviceTokenharus dipanggil.

Borislav Gizdov
sumber
Ini bekerja untuk saya. cukup pilih sertifikasi dan penyediaan yang telah mendaftarkan APN untuk aplikasi tersebut.
lee
Saya menghapus semua profil penyediaan dari iphone (ios9) dan kemudian setelah Token Perangkat menerima. Luangkan waktu empat jam untuk memperbaiki ini (meskipun saya belajar banyak). Terima kasih
Shobhakar Tiwari
3

Saya membuat kesalahan dan mengabaikan detail implementasi yang membawa saya ke sini. Saya mencoba untuk menjadi mewah dan meminta pengguna untuk Push Notifications nanti dalam proses onboarding aplikasi, jadi saya memiliki UIView saya registerForRemoteNotificationTypes, didRegisterForRemoteNotificationsWithDeviceTokendan didFailToRegisterForRemoteNotificationsWithErrorsemuanya dalam custom UIView.

MEMPERBAIKI: didRegisterForRemoteNotificationsWithDeviceTokendan didFailToRegisterForRemoteNotificationsWithErrorperlu di UIApplicationDelegate(YourAppDelegate.m ) untuk dipicu.

tampak jelas sekarang, heh.

GraehamF
sumber
Ya, metodenya perlu masuk AppDelegate. Tidak percaya saya menyia-nyiakan beberapa jam terakhir saya untuk jawaban sederhana ini
Bahkan Cheng
3

Pastikan koneksi internet Anda aktif. Saya butuh waktu berjam-jam untuk mendapatkan pemberitahuan pekerjaan karena koneksi internet.

Rendel
sumber
3

Jika Anda telah menambahkan push ke App ID yang ada, pastikan Anda membuat kembali profil penyediaan Anda. Jika tidak, profil tidak akan tahu tentang pengaktifan push pada App ID Anda.

Michael Peterson
sumber
3

Coba ini berhasil untuk saya,

Langkah pertama

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

Dalam metode di atas tambahkan kode di bawah ini

 UIApplication *application = [UIApplication sharedApplication];
 if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge
                                                                                     |UIUserNotificationTypeSound
                                                                                     |UIUserNotificationTypeAlert) categories:nil];
[application registerUserNotificationSettings:settings];
 } 
 else {
      UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;
[application registerForRemoteNotificationTypes:myTypes];
     }

Tahap kedua

Tambahkan Fungsi kode di bawah ini

 #ifdef __IPHONE_8_0
   - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
   {
  //register to receive notifications
  [application registerForRemoteNotifications];
  }

 - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler
  {
    //handle the actions
    if ([identifier isEqualToString:@"declineAction"]){
    }
   else if ([identifier isEqualToString:@"answerAction"]){
   }
}
 #endif

Anda akan mendapatkan Token perangkat di bawah fungsi

 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 

untuk detail jawaban silakan lihat ini

Semoga ini bisa membantu seseorang.

Jaywant Khedkar
sumber
2
-​(BOOL)application:(UIApplication​*)application​ didFinishLaunchingWithOptions:(NSDictionary​*)launchOptions​{​​​​ ​​​​ ​​​​//​Override​point​for​customization​after​application​launch.
​​​​//​Add​the​view​controller’s​view​to​the​window​and​display. ​​​​[window​addSubview:viewController.view]; ​​​​[window​makeKeyAndVisible];
NSLog(@”Registering for push notifications...”);
 [[UIApplication sharedApplication]
registerForRemoteNotificationTypes: (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound)]; 
​​​​returnYES;
}


- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
}
NSString *str = [NSString stringWithFormat:@”Device Token=%@”,deviceToken];
NSLog(@”%@”, str);


- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
NSString *str = [NSString stringWithFormat: @”Error: %@”, err]; NSLog(@”%@”, str);
}


- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
}
for (id key in userInfo) { NSLog(@”key: %@, value: %@”, key, [userInfo objectForKey:key]);
}
Sachin Kumaram
sumber
2

Persyaratan Minimal untuk Mendapatkan Token Perangkat:

Tidak perlu mengonfigurasi id aplikasi, penyediaan, atau sertifikat, dll. Sehingga tidak ada penandatanganan kode yang disetel untuk mendapatkan metode delegasi yang dipanggil didRegisterForRemoteNotificationsWithDeviceToken .

Saya baru saja membuat proyek iOS baru di Xcode 7 untuk tampilan tunggal dengan pengaturan default dan memberikan id bundel acak seperti com.mycompany.pushtest yang tidak dikonfigurasi di portal dev apel.

Dengan kode berikut, saya mendapatkan token perangkat saya dalam metode didRegisterForRemoteNotificationsWithDeviceToken di iPad saya dengan akses internet ke WIFI. Perangkat saya terpasang dan saya hanya menjalankan aplikasi langsung dari xcode dan melihat nilai di konsol xcode.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions   

{  
    if ([application respondsToSelector:@selector(registerUserNotificationSettings:)])  
    {  
        UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound);  
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes categories:nil];  
        [application registerUserNotificationSettings:settings];  
        [application registerForRemoteNotifications];  
    }  
    else  
    {  
        // Register for Push Notifications, if running iOS version < 8  
        [application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];  
    }  
    return YES;  
}  


- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    NSLog(@"Error: %@", error.description);
}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSLog(@"didRegisterForRemoteNotificationsWithDeviceToken: %@", deviceToken);
}

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings {
    NSLog(@"NotificationSettings: %@", notificationSettings);
}
zeeawan
sumber
1

Saya ada benarnya ini, baru-baru ini saya juga menghadapi masalah ini, saya telah melakukan semuanya sesuai dengan dokumentasi tetapi metode delegasi tidak menelepon Akhirnya saya melihat satu posting mengatakan masalah itu dengan jaringan, kemudian saya telah mengubah jaringan dan berfungsi dengan baik. Jadi berhati-hatilah dengan jaringan juga karena hanya sedikit jaringan yang dapat memblokir APNS.

SURESH SANKE
sumber
1

Setelah membuang waktu 3 jam yang paling menjengkelkan, berikut adalah langkah-langkah untuk memperbaiki masalah tersebut:

  1. Hapus aplikasi

  2. Setel ulang perangkat

  3. Berlari lagi

Itu berhasil

ozd
sumber
0

Ini terjadi pada saya, karena saya mengatur ulang & menghapus semua data di telepon (ingin menggunakan telepon pengembang). Ini mencegah APN untuk terhubung sama sekali setelah mengatur telepon lagi.

Saya mencoba segala macam hal, tetapi satu-satunya hal yang memperbaikinya adalah mengatur telepon agar berfungsi dengan operator di bawah kartu SIM baru.

Tautan ini menawarkan lebih banyak petunjuk tentang apa yang mungkin terjadi: https://developer.apple.com/library/ios/technotes/tn2265/_index.html

Dikatakan bahwa APN mencoba untuk terhubung secara istimewa melalui operator / menara daripada wifi. Mungkin masalahnya juga ada sesuatu yang terjadi dengan router memblokir port 5223 di jaringan wifi, tetapi saya ragu karena ini berfungsi dengan baik pada hari sebelumnya sebelum reset global terjadi.

Phyllis Sutherland
sumber
0

Bagi saya yang menyelesaikannya adalah dengan membangun pengaturan dan di bawah bagian penandatanganan kode, secara manual memilih identitas penandatanganan kode dan profil penyediaan. Rupanya pengaturan otomatis tidak mengambil yang benar dan oleh karena itu aplikasi tidak diotorisasi dengan benar.

Diego Rebosio
sumber
0

jika matikan pesan push dari aplikasi,

appdidRegisterForRemoteNotificationsWithDeviceToken tidak akan pernah dipanggil

libai
sumber
0

Juga, jangan lupa untuk memeriksa status sistem di Apple https://developer.apple.com/system-status/ .

Saya telah mencoba semua solusi yang diposting di atas tetapi pada akhirnya kesalahan itu karena layanan APNS turun! Keesokan harinya semua sudah berfungsi seperti yang diharapkan.

Selain itu, Anda memiliki kesalahan ketik dalam metode panggilan balik Anda:

- (void)application:(UIApplication *)appdidRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

Seperti yang Rupesh tunjukkan, nama metode yang benar adalah:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

Itu mungkin mengapa Anda tidak pernah menerima token dalam kasus Anda!

Brett
sumber
Sebenarnya nama metode salah, seharusnya - (void) application: (UIApplication *) application didRegisterForRemoteNotificationsWithDeviceToken: (NSData *) deviceToken Ada spasi di antara parameter
Rupesh
Terima kasih, telah memperbarui jawaban untuk menyertakan komentar Anda. Cukup yakin ini adalah solusi untuk masalah OP tetapi kami mungkin tidak akan pernah tahu!
Brett
0

Anda perlu memanggil metode registerForNotifications dari didFinishLaunchingWithOptions.

 func registerForNotifications(){

        if #available(iOS 10.0, *) {

            let center = UNUserNotificationCenter.current()
            center.delegate = self
            center.requestAuthorization(options:[.alert,.sound,.badge]) { (granted, error) in
                if granted{
                    UIApplication.shared.registerForRemoteNotifications()
                }else{

                    print("Notification permission denied.")

                }
            }

        } else {

            // For iOS 9 and Below
            let type: UIUserNotificationType = [.alert,.sound,.badge];
            let setting = UIUserNotificationSettings(types: type, categories: nil);
            UIApplication.shared.registerUserNotificationSettings(setting);
            UIApplication.shared.registerForRemoteNotifications()
        }
    }

 func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

        let token = String(format: "%@", deviceToken as CVarArg).trimmingCharacters(in: CharacterSet(charactersIn: "<>")).replacingOccurrences(of: " ", with: "")
        print(token)

    }


extension AppDelegate : UNUserNotificationCenterDelegate{

    @available(iOS 10.0, *)

    func userNotificationCenter(_ center: UNUserNotificationCenter,  willPresent notification: UNNotification, withCompletionHandler   completionHandler: @escaping (_ options:   UNNotificationPresentationOptions) -> Void) {
        print("Handle push from foreground”)

        let info = ((notification.request.content.userInfo as NSDictionary).value(forKey: "aps") as! NSDictionary)
        if let type = info.value(forKey: "type") as? Int{
            if type == 0 {  

         // notification received ,Handle your notification here

            }
        }
    }

    @available(iOS 10.0, *)

    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {

        print("Handle push from background or closed")

        let info = ((response.notification.request.content.userInfo as NSDictionary).value(forKey: "aps") as! NSDictionary)
        if let type = info.value(forKey: "type") as? Int{
            if type == 0 {   

            // notification received ,Handle your notification here
            }
        }
    }
}
Ved Rauniyar
sumber
0

Saya memiliki masalah lain di mana callback pemberitahuan push saya dibajak oleh perpustakaan pihak ketiga, yang telah saya sertakan, yaitu Firebase. Library ini mengelabui metode callback notifikasi push untuk mendapatkan callback.

Semoga ini bisa membantu seseorang.

jarora
sumber