Comment puis-je configurer les notifications locales de sorte qu'au moment de la configuration, mon application génère une notification / alerte avec un message personnalisé?
la source
Comment puis-je configurer les notifications locales de sorte qu'au moment de la configuration, mon application génère une notification / alerte avec un message personnalisé?
Voici un exemple de code pour LocalNotification qui a fonctionné pour mon projet.
Objectif c:
Ce bloc de code dans le AppDelegate
fichier:
- (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");
}
Ce bloc de code dans le fichier .m de tout 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];
}
Le code ci-dessus affiche un AlertView après un intervalle de temps de 7 secondes lorsque vous appuyez sur le bouton qui lie. startLocalNotification
Si l'application est en arrière-plan, elle s'affiche BadgeNumber
sous la forme 10 et avec le son de notification par défaut.
Ce code fonctionne correctement pour iOS 7.x et inférieur, mais pour iOS 8, il affichera l'erreur suivante sur la console:
Tentative de planification d'une notification locale avec une alerte mais n'ont pas reçu l'autorisation de l'utilisateur pour afficher les alertes
Cela signifie que vous devez vous inscrire pour recevoir une notification locale. Ceci peut être réalisé en utilisant:
if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){
[application registerUserNotificationSettings [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
}
Vous pouvez également consulter le blog pour une notification locale.
Rapide:
Votre AppDelegate.swift
fichier doit ressembler à ceci:
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
}
Le fichier swift (par exemple ViewController.swift
) dans lequel vous souhaitez créer une notification locale doit contenir le code ci-dessous:
//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)
. . .
}
. . .
}
La façon dont vous utilisez la notification locale dans iOS 9 et les versions antérieures est complètement différente dans iOS 10.
Ci-dessous, la capture d'écran des notes de publication d'Apple illustre cela.
Vous pouvez vous référer au document de référence Apple pour UserNotification.
Voici le code pour la notification locale:
Objectif c:
Dans l' App-delegate.h
utilisation du fichier@import UserNotifications;
Le délégué d'application doit être conforme au UNUserNotificationCenterDelegate
protocole
En didFinishLaunchingOptions
utilisation ci-dessous le code:
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:^{
}];
}
Créez maintenant un bouton dans n'importe quel contrôleur de vue et dans IBAction, utilisez le code ci-dessous:
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“);
}
}];
Swift 3:
AppDelegate.swift
utilisation du fichierimport UserNotifications
UNUserNotificationCenterDelegate
protocoleEn cours d' didFinishLaunchingWithOptions
utilisation sous le code
// 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)
}
Créez maintenant un bouton dans n'importe quel contrôleur de vue et dans IBAction, utilisez le code ci-dessous:
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)
Dans le fichier appdelegate.m, écrivez le code suivant dans applicationDidEnterBackground pour obtenir la notification locale
la source
La création de notifications locales est assez simple. Suivez simplement ces étapes.
Sur la fonction viewDidLoad (), demandez à l'utilisateur l'autorisation que vos applications souhaitent afficher des notifications. Pour cela, nous pouvons utiliser le code suivant.
Ensuite, vous pouvez créer un bouton, puis dans la fonction d'action, vous pouvez écrire le code suivant pour afficher une notification.
La notification sera affichée, cliquez simplement sur le bouton d'accueil après avoir appuyé sur le bouton de notification. Comme lorsque l'application est au premier plan, la notification ne s'affiche pas. Mais si vous utilisez l'iPhone X. Vous pouvez afficher une notification même lorsque l'application est au premier plan. Pour cela, il vous suffit d'ajouter un délégué appelé UNUserNotificationCenterDelegate
Pour plus de détails, visitez ce billet de blog: Tutoriel de notification locale iOS
la source
Mis à jour avec Swift 5 En général, nous utilisons trois types de notifications locales
Où vous pouvez envoyer une notification texte simple ou avec un bouton d'action et une pièce jointe.
À l'aide du package UserNotifications dans votre application, l'exemple suivant Demande d'autorisation de notification, prépare et envoie une notification conformément à l'action utilisateur AppDelegate elle-même et utilise le contrôleur de vue répertoriant différents types de test de notification locale.
AppDelegate
et ViewController
la source
Cela fonctionne, mais dans iOS 8.0 et versions ultérieures , votre application doit s'inscrire aux notifications utilisateur
-[UIApplication registerUserNotificationSettings:]
avant de pouvoir planifier et présenter UILocalNotifications, ne l'oubliez pas.la source
Utilisateurs d'iOS 8 et supérieurs, veuillez l'inclure dans le délégué d'application pour que cela fonctionne.
Et puis ajouter ces lignes de code aiderait,
la source
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(ApparelsViewControllerHide) name:@"ApparelsViewControllerHide" object:nil];
la source
Je suppose que vous avez demandé une autorisation et enregistré votre application pour notification.
Voici le code pour créer des notifications locales
la source