0

Ich habe Push-Benachrichtigungen bereits eingerichtet und funktioniert in der AppDelegate, aber anstatt sie starten, sobald die App öffnet, möchte ich sie auf einem separaten "Erlaube Push-Benachrichtigungen" View-Controller starten, nachdem der Benutzer für die App angemeldet hat . Ich habe versucht, einen Verweis auf die appDelegate machen, indem Sie diese:Wie kann ich mich für Push-Benachrichtigungen außerhalb des AppDelegate registrieren?

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 

Ich habe eine registerForPushNotifications Funktion im appDelegate:

func registerForPushNotifications(application: UIApplication) { 
    let notificationSettings = UIUserNotificationSettings(forTypes: [.Badge, .Sound, .Alert], categories: nil) 
    application.registerUserNotificationSettings(notificationSettings) 
} 

Welche funktioniert, wenn innerhalb der didFinishLaunchingWithOptions Funktion im AppDelegate genannt, aber als ich versuchen Sie und rufen Sie diese Funktion auf meinem View-Controller Ich habe nichts zu übergeben für den Anwendungsteil der Funktion, so dass ich einen Fehler bekommen.

@IBAction func yesButtonPressed(sender: AnyObject) { 
    appDelegate.registerForPushNotifications(application) 
    performSegueWithIdentifier("pushToHomeSegue", sender: self) 
} 

Antwort

3

Sind Sie sicher, dass Sie für application passieren in nichts haben?

appDelegate.registerForPushNotifications(UIApplication.sharedApplication()) 
+0

versuchte ich, dass aber die Warnung Push-Benachrichtigungen erhalten – SwiftyJD

+0

nicht Pop-up @SwiftyJD Sie wahrscheinlich, da Sie wahrscheinlich einen Reset-Simulator benötigen haben sie bereits für Ihre Anwendung genehmigt. Gehe zu Simulator -> Inhalt und Einstellungen zurücksetzen und führe es erneut aus. – tktsubota

+0

Das half, es zeigt sich jetzt auf diesem Bildschirm. In der App habe ich einen Schalter, mit dem man Push-Benachrichtigungen ein- und ausschalten kann. Gibt es eine Möglichkeit, die Einstellungen für Push-Benachrichtigungen auf diese Weise zu ändern? – SwiftyJD