Saya telah menyiapkan pemberitahuan lokal di Delegasi Aplikasi Menggunakan ini:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UILocalNotification *notification = [[UILocalNotification alloc]init];
[notification setAlertBody:@"Watch the Latest Episode of CCA-TV"];
[notification setFireDate:[NSDate dateWithTimeIntervalSinceNow:5]];
[notification setTimeZone:[NSTimeZone defaultTimeZone]];
[application setScheduledLocalNotifications:[NSArray arrayWithObject:notification]];
}
Ketika saya menjalankan aplikasi dan kemudian keluar, saya menerima pesan kesalahan yang mengatakan:
2014-06-07 11: 14: 16.663 CCA-TV [735: 149070] Mencoba menjadwalkan notifikasi lokal {fire date = Sabtu, 7 Juni 2014 pukul 11:14:21 Waktu Musim Panas Pasifik, zona waktu = Amerika / Los_Angeles (PDT) offset -25200 (Daylight), interval pengulangan = 0, pengulangan count = UILocalNotificationInfiniteRepeatCount, tanggal kebakaran berikutnya = Sabtu, 7 Juni 2014 pukul 11:14:21 Waktu Musim Panas Pasifik, info pengguna = (null)} dengan peringatan tetapi belum mendapat izin dari pengguna untuk menampilkan peringatan
Bagaimana saya bisa mendapatkan izin yang diperlukan untuk menampilkan peringatan?
sumber
registerUserNotificationSettings
. Seandainya iOS 8, utas ini akan menjawab pertanyaan Anda. Tapi, lihat dulu - stackoverflow.com/questions/24006998/…Jawaban:
Sejak iOS 8 Anda perlu meminta izin pengguna untuk menampilkan pemberitahuan dari aplikasi Anda, ini berlaku untuk pemberitahuan jarak jauh / push dan lokal. Di Swift Anda dapat melakukannya seperti ini,
Pembaruan untuk Swift 2.0
Swift 3.2.0
Sintaks Objective C juga sangat mirip.
Untuk memeriksa jenis notifikasi yang saat ini terdaftar Anda dapat menggunakan metode kelas UIApplication,
Jadi, jika pengguna mengatakan tidak pada aplikasi Anda, maka fungsi ini harus mengembalikan pengaturan tanpa tipe apa pun di dalamnya.
Saya telah menulis tutorial tentang ini, Anda bisa melihatnya di sini .
sumber
dyld: Symbol not found: _OBJC_CLASS_$_UIUserNotificationSettings
. Apakah ada cara lain di Swift untuk meminta izin pengguna agar bisa berfungsi di iOS7? tolong bantu.Letakkan kode ini di pengontrol tampilan tempat Anda akan memprogram notifikasi terlebih dahulu (jika Anda memprogramnya saat peluncuran, maka itu akan terjadi
application:didFinishLaunchingWithOptions:
):Di Swift:
Solusi yang menguji nomor versi sistem kurang optimal dan rawan kesalahan.
sumber
application.respondsToSelector(Selector("registerUserNotificationSettings"))
danif ([application respondsToSelector:@selector(registerUserNotificationSettings:)])
application:didFinishLaunchingWithOptions:
yang menyediakanapplication
objek yang berguna :)Coba ini untuk Objective-C:
Untuk Swift:
sumber
Saya baru saja menghadapi masalah yang sama. Sepertinya di iOS 8 kita perlu melakukan langkah tambahan, biasanya dilakukan di dalam:
Anda dapat menggunakan kode ini jika Anda ingin membuatnya tetap kompatibel:
Sistem akan mengingat keputusan tersebut, dan hanya akan menanyakan satu kali.
sumber
** Pemberitahuan Lokal dengan aksi tiga tombol untuk iOS8 +
// Tombol: SAYA MENGAMBIL, INGAT NANTI, LEWATI **
sumber