Saya menggunakan layanan pemberitahuan push di aplikasi saya. Ketika aplikasi di latar belakang saya dapat melihat notifikasi pada layar notifikasi (layar ditampilkan ketika kami menggesek ke bawah dari atas perangkat iOS). Tetapi jika aplikasi di latar depan metode delegasi
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
dipanggil tetapi pemberitahuan tidak ditampilkan di layar pemberitahuan.
Saya ingin menampilkan notifikasi di layar notifikasi terlepas dari apakah aplikasi di latar belakang atau di latar depan. Saya lelah dengan mencari solusi. Setiap bantuan sangat dihargai.
iphone
ios
objective-c
push-notification
Ab'initio
sumber
sumber
Jawaban:
Untuk menampilkan pesan spanduk saat aplikasi di latar depan, gunakan metode berikut.
iOS 10, Swift 3/4 :
iOS 10, Swift 2.3 :
Anda juga harus mendaftarkan delegasi aplikasi Anda sebagai delegasi untuk pusat notifikasi:
sumber
UNUserNotificationsCenter.current().delegate = self
dalam aplikasi didFinishLaunchingWithOptionsKode di bawah ini akan berfungsi untuk Anda:
sumber
title
teks tebal yang sedikit lebih besar, danmessage
teks yang lebih kecil di bawahnya. Tombol 'OK' untuk menghilangkan ada di bagian bawah). Opsi applicationIconBadgeNumber sedang diatur ke 0 adalah untuk menyembunyikan nomor yang muncul di atas ikon aplikasi di Springboard (misalnya menandakan jumlah pesan yang belum dibaca dalam aplikasi email). Dalam contoh ini, saya tidak tahu apakah opsi itu diperlukan.Bagi siapa pun yang tertarik, saya akhirnya membuat tampilan kustom yang terlihat seperti sistem push banner di bagian atas tetapi menambahkan tombol tutup (biru kecil X) dan opsi untuk mengetuk pesan untuk tindakan kustom. Ini juga mendukung kasus lebih dari satu notifikasi tiba sebelum pengguna punya waktu untuk membaca / mengabaikan yang lama (Tanpa batas berapa banyak yang dapat menumpuk ...)
Tautan ke GitHub: AGPushNote
Penggunaannya pada dasarnya adalah on-liner:
Dan sepertinya ini di iOS7 (iOS6 memiliki tampilan dan nuansa iOS6 ...)
sumber
Tujuan C
Untuk itu
iOS 10
kita perlu mengintegrasikanwillPresentNotification
metode untuk menampilkan spanduk notifikasi diforeground
.Jika aplikasi dalam mode latar depan (aktif)
sumber
Jika aplikasi berjalan di latar depan, iOS tidak akan menampilkan spanduk pemberitahuan / peringatan. Itu dengan desain. Tetapi kita dapat mencapainya dengan menggunakan
UILocalNotification
sebagai berikutPeriksa apakah aplikasi dalam keadaan aktif saat menerima
notifikasi jarak jauh . Jika dalam keadaan aktif jalankan UILocalNotification.
CEPAT:
sumber
If the app is foremost and visible when the system delivers the notification, the app delegate’s application:didReceiveLocalNotification: is called to process the notification. Use the information in the provided UILocalNotification object to decide what action to take. The system does not display any alerts, badge the app’s icon, or play any sounds when the app is already frontmost.
Jika aplikasi berjalan di latar depan, iOS tidak akan menampilkan spanduk pemberitahuan / peringatan. Itu dengan desain. Anda harus menulis beberapa kode untuk menangani situasi aplikasi Anda menerima pemberitahuan saat berada di latar depan. Anda harus menunjukkan pemberitahuan dengan cara yang paling tepat (misalnya, menambahkan nomor lencana ke
UITabBar
ikon, mensimulasikan spanduk Pusat Pemberitahuan, dll.).sumber
UNUserNotificationCenter
API). Seiring dengan API baru, sekarang dimungkinkan untuk menampilkan notifikasi jika aplikasi berada di latar depan. Jadi jika Anda bingung karena perbedaan jawaban dalam pertanyaan ini, itu karena beberapa jawaban terlalu tua, dan hanya menggambarkan perilaku untuk iOS 9 dan sebelumnya, sedangkan yang lain tidak memperhitungkan bahwaUNUserNotificationCenter
hanya tersedia dari iOS 10.Xcode 10 Swift 4.2
Untuk menampilkan Pemberitahuan Push saat aplikasi Anda berada di latar depan -
Langkah 1: tambahkan delegasi UNUserNotificationCenterDelegate di kelas AppDelegate.
Langkah 2: Tetapkan delegasi UNUserNotificationCenter
Langkah 3: Langkah ini akan memungkinkan aplikasi Anda untuk menampilkan Pemberitahuan Dorong bahkan ketika aplikasi Anda di latar depan
Langkah 4: Langkah ini opsional . Periksa apakah aplikasi Anda di latar depan dan jika di latar depan maka tunjukkan Pengesahan Lokal.
Fungsi Notifikasi Lokal -
sumber
Menurut dokumentasi apple , Ya, Anda dapat menampilkan notifikasi saat aplikasi sedang berjalan
sumber
UNUserNotificationCenterDelegate
protokolviewDidLoad
extension AppDelegate: UNUserNotificationCenterDelegate
Anda dapat membuat notifikasi sendiri yang meniru peringatan spanduk.
Salah satu caranya adalah dengan membuat tampilan khusus yang terlihat seperti spanduk dan dapat menghidupkan dan merespons sentuhan. Dengan mengingat hal ini, Anda dapat membuat spanduk yang lebih baik dengan fungsionalitas yang lebih banyak.
Atau Anda dapat mencari api yang melakukannya untuk Anda dan menambahkannya sebagai podfiles ke proyek Anda.
Berikut adalah beberapa yang telah saya gunakan:
https://github.com/terryworona/TWMessageBarManager
https://github.com/toursprung/TSMessages
sumber
TWMessageBarManager
dapat dengan mudah dipanggil dan digunakan melalui appdelegate sendiri karena menggunakan pola desain tunggal. Terima kasih atas tautannya.Berikut adalah kode untuk menerima Pemberitahuan Dorong ketika aplikasi dalam keadaan aktif (latar depan atau terbuka). Dokumentasi UNUserNotificationCenter
Jika Anda perlu mengakses userInfo dari kode penggunaan notifikasi:
notification.request.content.userInfo
sumber
Menambahkan baris completHandler ke metode delegasi memecahkan masalah yang sama bagi saya:
sumber
Untuk swift 5 mem-parsing kamus PushNotification
Untuk mengambil viewController teratas yang kami tampilkan topBanner
sumber
guard
pernyataan adalah teman Anda :-)Dalam delegasi aplikasi Anda gunakan kode di bawah ini
sumber
Untuk Swift 5
Itu dia!
sumber
Seperti disebutkan di atas, Anda harus menggunakannya
UserNotification.framework
untuk mencapai ini. Tetapi untuk tujuan saya, saya harus menunjukkannya di aplikasi dan ingin memilikiiOS 11
gaya, jadi saya telah membuat tampilan pembantu kecil, mungkin akan berguna bagi seseorang.GitHub iOS 11 Push Notification View .
sumber
Pendekatan terbaik untuk ini adalah dengan menambahkan
UNUserNotificationCenterDelegate
diAppDelegate
dengan menggunakanextension AppDelegate: UNUserNotificationCenterDelegate
ekstensi yang memberitahu aplikasi untuk bisa mendapatkan pemberitahuan bila digunakanDan terapkan metode ini
Metode ini akan dipanggil pada delegasi hanya jika aplikasi ada di Foreground .
Jadi Implementasi akhir:
Dan untuk memanggil ini, Anda harus mengatur delegasi di AppDelegate di
didFinishLaunchingWithOptions
tambahkan baris iniAnda dapat memodifikasi
dengan
sumber
Jika aplikasi Anda dalam keadaan foreground, itu berarti Anda saat ini menggunakan aplikasi yang sama. Jadi tidak perlu menampilkan notifikasi di atas secara umum.
Namun tetap saja jika Anda ingin menampilkan notifikasi dalam hal ini Anda harus membuat Tampilan Alert khusus atau Tampilan Kustom seperti Toast atau yang lainnya untuk ditampilkan kepada pengguna bahwa Anda telah mendapatkan notifikasi.
Anda juga dapat menampilkan lencana di bagian atas jika Anda memiliki fitur semacam itu di aplikasi Anda.
sumber
Seperti @Danial Martine mengatakan iOS tidak akan menampilkan spanduk pemberitahuan / peringatan. Itu dengan desain. Tetapi jika benar-benar harus melakukannya maka ada satu cara. Saya juga telah mencapai ini dengan cara yang sama.
1. Unduh karya bingkai parse dari Parse FrameWork
2. Impor
#import <Parse/Parse.h>
3. Tambahkan kode berikut ke Metode didReceiveRemoteNotification Anda
PFPush akan menangani bagaimana menangani notifikasi jarak jauh. Jika Aplikasi di latar depan ini menunjukkan peringatan jika tidak itu menunjukkan pemberitahuan di atas.
sumber