Saya memiliki aplikasi iOS di mana beberapa Pemberitahuan Push dikirimkan. Masalah saya adalah, bahwa pesan / pemberitahuan tetap berada di Pusat Pemberitahuan di iOS setelah itu disadap. Bagaimana cara menghapus pemberitahuan untuk aplikasi saya di Pusat Pemberitahuan saat aplikasi dibuka lagi?
Saya menemukan posting di mana orang-orang menelepon setApplicationIconBadgeNumber
ke nilai nol untuk menghapus notifikasi. Itu tampak sangat aneh bagi saya, jadi saya yakin mungkin ada solusi lain?
EDIT1:
Saya mengalami masalah saat menghapus notifikasi. Silakan lihat kode saya di sini:
- (void) clearNotifications {
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
[[UIApplication sharedApplication] cancelAllLocalNotifications];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if (launchOptions != nil)
{
NSDictionary* dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (dictionary != nil)
{
NSLog(@"Launched from push notification: %@", dictionary);
[self clearNotifications];
}
}
return YES;
}
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{
NSLog(@"Received notification: %@", userInfo);
[self clearNotifications];
}
Saya menjalankan Aplikasi melalui Xcode. Ketika Aplikasi diminimalkan dan saya memulai Aplikasi menggunakan pemberitahuan di Pusat Pemberitahuan, saya dapat melihat di log, yang didReceiveRemoteNotification
dipanggil dan menggunakan breakpoints saya dapat melihat, bahwa clearNotifications
telah berjalan. Tapi tetap saja notifikasi hang di Notification Center. Mengapa?
let center = UNUserNotificationCenter.current() center.removeAllDeliveredNotifications() // To remove all delivered notifications
stackoverflow.com/a/40397907/1155650Hanya untuk memperluas jawaban pcperini. Saat dia menyebutkan Anda perlu menambahkan kode berikut ke
application:didFinishLaunchingWithOptions:
metode Anda ;Anda juga perlu menambah kemudian mengurangi lencana dalam
application:didReceiveRemoteNotification:
metode Anda jika Anda mencoba untuk menghapus pesan dari pusat pesan sehingga ketika pengguna memasuki aplikasi Anda dari menekan pemberitahuan, pusat pesan juga akan dihapus, yaitu;sumber
Mungkin juga masuk akal untuk menambahkan panggilan ke clearNotifications di applicationDidBecomeActive sehingga jika aplikasi berada di latar belakang dan kembali, itu juga akan menghapus notifikasi.
sumber
Pembaruan untuk iOS 10 (Swift 3)
Untuk menghapus semua notifikasi lokal di aplikasi iOS 10, Anda harus menggunakan kode berikut:
Kode ini menangani pembersihan pemberitahuan lokal untuk iOS 10.x dan semua versi iOS sebelumnya. Anda perlu
import UserNotifications
untuk kode iOS 10.x.sumber
Jika Anda memiliki pemberitahuan lokal terjadwal yang tertunda dan tidak ingin menggunakan
cancelAllLocalNotifications
pemberitahuan lama di Pusat Pemberitahuan, Anda juga dapat melakukan hal berikut:Tampaknya jika Anda menyetelnya
scheduledLocalNotifications
menghapus yang lama di Pusat Pemberitahuan, dan dengan menyetelnya ke dirinya sendiri, Anda mempertahankan pemberitahuan lokal yang tertunda.sumber
applicationDidBecomeActive:
danapplication:didReceiveLocalNotification:
metode saya.Di Swift saya menggunakan kode berikut di dalam AppDelegate saya:
sumber
Jika Anda datang ke sini bertanya-tanya yang sebaliknya (seperti saya), posting ini mungkin cocok untuk Anda.
Saya tidak tahu mengapa notifikasi saya terhapus ketika saya membersihkan lencana ... Saya menaikkan lencana secara manual dan kemudian ingin menghapusnya ketika pengguna memasuki aplikasi. Namun, tidak ada alasan untuk menghapus pusat notifikasi; mereka mungkin masih ingin melihat atau menindaklanjuti pemberitahuan tersebut.
Negatif 1 berhasil, untungnya:
sumber
Mungkin jika ada alarm terjadwal dan lencana ikon aplikasi yang tidak jelas.
sumber
Jika Anda memiliki pemberitahuan berulang di masa mendatang, Anda tidak ingin membatalkan pemberitahuan tersebut, Anda dapat menghapus item di pusat pemberitahuan dengan:
Anda tidak bisa menghapus notifikasi saat aplikasi Anda terbuka di latar depan dengan memanggil metode di bawah ini segera setelah menerima notifikasi lokal, jika tidak, Anda akan menerima puluhan dari ratusan notifikasi. Mungkin karena notifikasi yang sama berlaku lagi, dan sekarang saatnya untuk menembak, jadi Anda tetap tembak, terapkan lagi, tembak, terapkan ....:
sumber
Ketika Anda keluar dari aplikasi Anda, pada saat itu Anda harus menggunakan baris kode di bawah ini pada metode klik tombol logout Anda.
dan ini bekerja dengan sempurna di aplikasi saya.
sumber
Anda perlu menambahkan kode di bawah ini dalam
applicationDidBecomeActive
metode AppDelegate Anda .sumber
Dapatkan dari sini . Ini berfungsi untuk iOS 9
sumber