2016-10-19 2 views
0

Ich versuche, lokale Benachrichtigungen für eine App zu implementieren, die ich gerade erstelle. Der Großteil meines Codes folgt dem, was geschrieben wird In the documentationBeispiel für die Verwendung von UNNotificationCenter mit lokalen Benachrichtigungen?

Ich werde meinen Code unten veröffentlichen. Mein aktuelles Problem ist, dass die Benachrichtigungen nie erscheinen. Das erste Mal geladen I der App, die Erlaubnis Bildschirm erschienen, und ich sagte "Zulassen"

In AppDelegate im didFinishLaunchingWithOptions Methode

didFinishLaunchingWithOptions

UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; 
[center requestAuthorizationWithOptions:UNAuthorizationOptionAlert completionHandler:^(BOOL granted, NSError * _Nullable error) { 
    [self setupNotification]; 
}]; 

Folgenden auch in AppDelegate

-(void)setupNotification { 
     UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc] init]; 
     content.title = [NSString localizedUserNotificationStringForKey:@"New:" arguments:nil]; 
     content.body = [NSString localizedUserNotificationStringForKey:@"New Notification" 
                  arguments:nil]; 

     content.sound = [UNNotificationSound defaultSound]; 


     UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger 
                 triggerWithTimeInterval:5 
                 repeats:NO]; 


     UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@"NOTIFICATION" 
                       content:content 
                       trigger:trigger]; 


     UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; 


     [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) { 
      if (!error) { 
       NSLog(@"success"); 
      } 
     }]; 
    } 

Wie ich schon sagte, die Benachrichtigung erscheint nie und ich kann nicht herausfinden, warum. Ich habe den Inhalt, den Auslöser und die Anfrage eingerichtet, dann füge ich die Anfrage dem UNUserNotificationCenter hinzu.

Hat jemand ein funktionierendes Beispiel dafür oder kann mir sagen, wo ich falsch liege?

fand ich eine ähnliche Antwort here aber diese Antwort tut Adresse warum UNTimeIntervalNotificationTrigger ist nicht arbeiten und stattdessen erklärt, wie ein UNCalendarNotificationTrigger

Dank

+0

Was Sie versuchen werden, 'UILocalNotifications' oder' NSNotificationCenter'notifications? –

+0

'UILocalNotifications' sind in iOS 10 veraltet. Ich verwende' UNUserNotificationCenter' – Nate4436271

+0

Sie haben Recht, ich benutze immer noch UILocalNotifications, also muss ich dies studieren –

Antwort

0

UNUserNotificationCenter Swift 3 Umsetzung und Nutzung einzurichten:

// AppDelegate.swift 

import UIKit 
import UserNotifications 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    // Override point for customization after application launch. 
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

     // Setup Notifications 
     UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { (bool, error) in 

     } 

     return true 
    } 

Erstellen Sie eine Datei "Extension.swift" und fügen Sie hinzu:

// Extensions.swift 

import UIKit 
import UserNotifications 

extension UNUserNotificationCenter { 

    func scheduleNotification(identifier: String, body: String, time: Double) { 
     let content = UNMutableNotificationContent() 
     content.body = body 
     let trigger = UNTimeIntervalNotificationTrigger(timeInterval: time, repeats: false) 
     let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger) 
     UNUserNotificationCenter.current().add(request) { (error) in 
      if (error != nil) { 
       print(error!) 
      } else { 
       print("Success! ID:\(identifier), Message:\(body), Time:\(trigger.timeInterval.magnitude) seconds") 
      } 
     } 
    } 
} 

In jeder Ansicht Controller, erklären "class" (oben viewDidLoad):

var notificationCenter: UNUserNotificationCenter? 

In "viewDidLoad" -Funktion initialisiert UNUserNotificationCenter:

notificationCenter = UNUserNotificationCenter.current() 

Anrufbenachrichtigungen von einer beliebigen Funktion in der Ansicht Controller:

// Use any identifier, Message and time (in seconds) 
self.notificationCenter?.scheduleNotification(identifier: "welcomeScreen", body: "Welcome to my App!", time:20) 

Dies sollte lokale Benachrichtigungen in Swift 3 a aktivieren nd iOS 10.

Video Referenz: https://youtu.be/Svul_gCtzck

Verwandte Themen