Bagaimana saya bisa mengatur pemberitahuan lokal sehingga pada saat saya mengatur, aplikasi saya menghasilkan pemberitahuan / peringatan dengan pesan yang disesuaikan?
sumber
Bagaimana saya bisa mengatur pemberitahuan lokal sehingga pada saat saya mengatur, aplikasi saya menghasilkan pemberitahuan / peringatan dengan pesan yang disesuaikan?
Berikut ini contoh kode untuk LocalNotification yang berfungsi untuk proyek saya.
Objective-C:
Blok kode ini dalam AppDelegate
file:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[launchOptions valueForKey:UIApplicationLaunchOptionsLocalNotificationKey];
// Override point for customization after application launch.
return YES;
}
// This code block is invoked when application is in foreground (active-mode)
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
UIAlertView *notificationAlert = [[UIAlertView alloc] initWithTitle:@"Notification" message:@"This local notification"
delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[notificationAlert show];
// NSLog(@"didReceiveLocalNotification");
}
Kode ini memblokir dalam file .m apa pun ViewController
:
-(IBAction)startLocalNotification { // Bind this method to UIButton action
NSLog(@"startLocalNotification");
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:7];
notification.alertBody = @"This is local notification!";
notification.timeZone = [NSTimeZone defaultTimeZone];
notification.soundName = UILocalNotificationDefaultSoundName;
notification.applicationIconBadgeNumber = 10;
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
}
Kode di atas menampilkan AlertView setelah interval waktu 7 detik ketika ditekan pada tombol yang mengikat startLocalNotification
Jika aplikasi di latar belakang maka itu ditampilkan BadgeNumber
sebagai 10 dan dengan suara notifikasi default.
Kode ini berfungsi dengan baik untuk iOS 7.x dan di bawahnya tetapi untuk iOS 8 akan meminta kesalahan berikut pada konsol:
Mencoba menjadwalkan pemberitahuan lokal dengan peringatan tetapi belum mendapat izin dari pengguna untuk menampilkan peringatan
Ini berarti Anda perlu mendaftar untuk pemberitahuan lokal. Ini dapat dicapai dengan menggunakan:
if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){
[application registerUserNotificationSettings [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
}
Anda juga dapat merujuk blog untuk pemberitahuan lokal.
Cepat:
AppDelegate.swift
File Anda akan terlihat seperti ini:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound | UIUserNotificationType.Badge | UIUserNotificationType.Alert, categories: nil))
return true
}
File swift (katakanlah ViewController.swift
) di mana Anda ingin membuat pemberitahuan lokal harus berisi kode di bawah ini:
//MARK: - Button functions
func buttonIsPressed(sender: UIButton) {
println("buttonIsPressed function called \(UIButton.description())")
var localNotification = UILocalNotification()
localNotification.fireDate = NSDate(timeIntervalSinceNow: 3)
localNotification.alertBody = "This is local notification from Swift 2.0"
localNotification.timeZone = NSTimeZone.localTimeZone()
localNotification.repeatInterval = NSCalendarUnit.CalendarUnitMinute
localNotification.userInfo = ["Important":"Data"];
localNotification.soundName = UILocalNotificationDefaultSoundName
localNotification.applicationIconBadgeNumber = 5
localNotification.category = "Message"
UIApplication.sharedApplication().scheduleLocalNotification(localNotification)
}
//MARK: - viewDidLoad
class ViewController: UIViewController {
var objButton : UIButton!
. . .
override func viewDidLoad() {
super.viewDidLoad()
. . .
objButton = UIButton.buttonWithType(.Custom) as? UIButton
objButton.frame = CGRectMake(30, 100, 150, 40)
objButton.setTitle("Click Me", forState: .Normal)
objButton.setTitle("Button pressed", forState: .Highlighted)
objButton.addTarget(self, action: "buttonIsPressed:", forControlEvents: .TouchDown)
. . .
}
. . .
}
Cara yang Anda gunakan untuk bekerja dengan Pemberitahuan Lokal di iOS 9 dan di bawahnya sama sekali berbeda di iOS 10.
Tangkapan layar di bawah dari catatan rilis Apple menggambarkan ini.
Anda dapat merujuk dokumen referensi apple untuk UserNotification.
Di bawah ini adalah kode untuk pemberitahuan lokal:
Objective-C:
Sedang App-delegate.h
digunakan file@import UserNotifications;
Delegasi aplikasi harus sesuai dengan UNUserNotificationCenterDelegate
protokol
Dalam didFinishLaunchingOptions
penggunaan di bawah kode:
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
[center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert)
completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (!error) {
NSLog(@"request authorization succeeded!");
[self showAlert];
}
}];
-(void)showAlert {
UIAlertController *objAlertController = [UIAlertController alertControllerWithTitle:@"Alert" message:@"show an alert!" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"OK"
style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
NSLog(@"Ok clicked!");
}];
[objAlertController addAction:cancelAction];
[[[[[UIApplication sharedApplication] windows] objectAtIndex:0] rootViewController] presentViewController:objAlertController animated:YES completion:^{
}];
}
Sekarang buat tombol di pengontrol tampilan mana saja dan di IBAction gunakan kode di bawah ini:
UNMutableNotificationContent *objNotificationContent = [[UNMutableNotificationContent alloc] init];
objNotificationContent.title = [NSString localizedUserNotificationStringForKey:@“Notification!” arguments:nil];
objNotificationContent.body = [NSString localizedUserNotificationStringForKey:@“This is local notification message!“arguments:nil];
objNotificationContent.sound = [UNNotificationSound defaultSound];
// 4. update application icon badge number
objNotificationContent.badge = @([[UIApplication sharedApplication] applicationIconBadgeNumber] + 1);
// Deliver the notification in five seconds.
UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:10.f repeats:NO];
UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@“ten” content:objNotificationContent trigger:trigger];
// 3. schedule localNotification
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
[center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
if (!error) {
NSLog(@“Local Notification succeeded“);
} else {
NSLog(@“Local Notification failed“);
}
}];
Cepat 3:
AppDelegate.swift
digunakan fileimport UserNotifications
UNUserNotificationCenterDelegate
protokolDalam didFinishLaunchingWithOptions
penggunaan di bawah kode
// Override point for customization after application launch.
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .sound]) { (granted, error) in
// Enable or disable features based on authorization.
if error != nil {
print("Request authorization failed!")
} else {
print("Request authorization succeeded!")
self.showAlert()
}
}
func showAlert() {
let objAlert = UIAlertController(title: "Alert", message: "Request authorization succeeded", preferredStyle: UIAlertControllerStyle.alert)
objAlert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
//self.presentViewController(objAlert, animated: true, completion: nil)
UIApplication.shared().keyWindow?.rootViewController?.present(objAlert, animated: true, completion: nil)
}
Sekarang buat tombol di pengontrol tampilan mana saja dan di IBAction gunakan kode di bawah ini:
let content = UNMutableNotificationContent()
content.title = NSString.localizedUserNotificationString(forKey: "Hello!", arguments: nil)
content.body = NSString.localizedUserNotificationString(forKey: "Hello_message_body", arguments: nil)
content.sound = UNNotificationSound.default()
content.categoryIdentifier = "notify-test"
let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 5, repeats: false)
let request = UNNotificationRequest.init(identifier: "notify-test", content: content, trigger: trigger)
let center = UNUserNotificationCenter.current()
center.add(request)
Di file appdelegate.m tulis kode berikut di applicationDidEnterBackground untuk mendapatkan notifikasi lokal
sumber
Membuat notifikasi lokal cukup mudah. Ikuti saja langkah-langkah ini.
Pada fungsi viewDidLoad () meminta izin pengguna bahwa aplikasi Anda ingin menampilkan pemberitahuan. Untuk ini kita bisa menggunakan kode berikut.
Kemudian Anda dapat membuat tombol, lalu di fungsi tindakan Anda dapat menulis kode berikut untuk menampilkan notifikasi.
Notifikasi akan ditampilkan, cukup klik tombol home setelah menekan tombol notifikasi. Seperti saat aplikasi berada di latar depan, notifikasi tidak ditampilkan. Namun jika Anda menggunakan iPhone X. Anda dapat menampilkan pemberitahuan bahkan saat aplikasi berada di latar depan. Untuk ini, Anda hanya perlu menambahkan delegasi yang disebut UNUserNotificationCenterDelegate
Untuk detail selengkapnya, kunjungi entri blog ini: Tutorial Pemberitahuan Lokal iOS
sumber
Diperbarui dengan Swift 5 Umumnya kami menggunakan tiga jenis Pemberitahuan Lokal
Di mana Anda dapat mengirim pemberitahuan teks sederhana atau dengan tombol tindakan dan lampiran.
Menggunakan paket UserNotifications di aplikasi Anda, contoh berikut Minta izin notifikasi, siapkan dan kirim notifikasi sesuai dengan tindakan pengguna AppDelegate itu sendiri, dan gunakan pengontrol tampilan yang mencantumkan berbagai jenis pengujian notifikasi lokal.
AppDelegate
dan ViewController
sumber
Ini berfungsi, tetapi di iOS 8.0 dan yang lebih baru , aplikasi Anda harus mendaftar untuk pemberitahuan pengguna menggunakan
-[UIApplication registerUserNotificationSettings:]
sebelum dapat menjadwalkan dan menyajikan UILocalNotifications, jangan lupakan ini.sumber
Pengguna iOS 8 ke atas, harap sertakan ini di Delegasi aplikasi untuk membuatnya berfungsi.
Dan kemudian menambahkan baris kode ini akan membantu,
sumber
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(ApparelsViewControllerHide) name:@"ApparelsViewControllerHide" object:nil];
sumber
Saya berasumsi bahwa Anda telah meminta otorisasi dan mendaftarkan aplikasi Anda untuk pemberitahuan.
Berikut adalah kode untuk membuat notifikasi lokal
sumber