Erhalten Sie eine Push-Benachrichtigung, während die App im Vordergrund iOS ist

189

Ich verwende den Push-Benachrichtigungsdienst in meiner App. Wenn sich die App im Hintergrund befindet, kann ich eine Benachrichtigung auf dem Benachrichtigungsbildschirm sehen (Bildschirm wird angezeigt, wenn wir vom oberen Rand des iOS-Geräts nach unten wischen). Wenn jedoch die Anwendung im Vordergrund steht, wird die Delegatmethode verwendet

- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo

wird angerufen, aber die Benachrichtigung wird nicht im Benachrichtigungsbildschirm angezeigt.

Ich möchte eine Benachrichtigung auf dem Benachrichtigungsbildschirm anzeigen, unabhängig davon, ob sich die App im Hintergrund oder im Vordergrund befindet. Ich bin müde von der Suche nach einer Lösung. Jede Hilfe wird sehr geschätzt.

Ab'initio
quelle
35
Apple sagt : Wenn Sie lokale oder Remote-Benachrichtigungen erhalten, während Ihre App im Vordergrund ausgeführt wird, sind Sie dafür verantwortlich, die Informationen auf app-spezifische Weise an Ihre Benutzer weiterzugeben.
Lauri Lehmijoki
2
Einige aktuelle (16 "
Azmeuk
1
Wird die Push-Benachrichtigung für iOS 9.3 und weniger nicht im Vordergrund unterstützt?
Anurag Sharma
@Lauri Lehmijoki Link? Ich habe das nicht auf der offiziellen Website gefunden
Vyachaslav Gerchicov
1
Ich stehe vor dem gleichen Problem in ionischen ...
sagte Mohd Ali

Antworten:

204

Verwenden Sie die folgende Methode, um Bannermeldungen anzuzeigen, während sich die App im Vordergrund befindet.

iOS 10, Swift 3/4 :

// This method will be called when app received push notifications in foreground
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) 
{
    completionHandler([.alert, .badge, .sound])
}

iOS 10, Swift 2.3 :

@available(iOS 10.0, *)
func userNotificationCenter(center: UNUserNotificationCenter, willPresentNotification notification: UNNotification, withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void)
{
    //Handle the notification
    completionHandler(
       [UNNotificationPresentationOptions.Alert,
        UNNotificationPresentationOptions.Sound,
        UNNotificationPresentationOptions.Badge])
}

Sie müssen Ihren App-Delegierten auch als Delegierten für das Benachrichtigungscenter registrieren:

import UserNotifications

// snip!

class AppDelegate : UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate

// snip!

   func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

      // set the delegate in didFinishLaunchingWithOptions
      UNUserNotificationCenter.current().delegate = self
      ...
   }
Chengsam
quelle
Wann wird diese Methode aufgerufen?
Uma Madhavi
Bitte leiten Sie mich, ich bin überrascht, dass ich eine Benachrichtigung von oben anzeige, wenn mein App-Hintergrund oder Vordergrund im Vordergrund steht. Seit 2 Wochen arbeite ich mit Push-Benachrichtigungen. Ich kann Nachrichten vom Server empfangen.
Uma Madhavi
@UmaMadhavi Können Sie Push-Benachrichtigungen erhalten?
Chengsam
21
Vergessen Sie nicht, den Notification Center-Delegaten als App-Delegaten UNUserNotificationsCenter.current().delegate = selffestzulegen : in der Anwendung didFinishLaunchingWithOptions
Achintya Ashok
2
Für diejenigen, die immer noch Probleme haben, ist das UNUserNotificationCenter nicht das UNUserNotificationsCenter mit 's' vor dem Zentrum
Raj
58

Der folgende Code wird für Sie arbeiten:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo  {
    application.applicationIconBadgeNumber = 0;             
    //self.textView.text = [userInfo description];
    // We can determine whether an application is launched as a result of the user tapping the action
    // button or whether the notification was delivered to the already-running application by examining
    // the application state.

    if (application.applicationState == UIApplicationStateActive) {                
        // Nothing to do if applicationState is Inactive, the iOS already displayed an alert view.                
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Did receive a Remote Notification" message:[NSString stringWithFormat:@"Your App name received this notification while it was running:\n%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]]delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alertView show];          
    }    
}
Mahesh Peri
quelle
Das funktioniert. Ein bisschen mehr Infos darüber, was es tut; Wenn sich die Anwendung im Vordergrund befindet, wird ein natives UI- titleWarnfeld mit dem Benachrichtigungstext angezeigt (der Text ist etwas größer und der messageText darunter kleiner. Eine Schaltfläche zum Schließen befindet sich unten). Mit der Option applicationIconBadgeNumber, die auf 0 gesetzt wird, wird die Nummer ausgeblendet, die in Springboard über dem App-Symbol angezeigt wird (z. B. die Anzahl der ungelesenen Nachrichten in einer E-Mail-App). In diesem Beispiel weiß ich nicht, ob diese Option überhaupt benötigt wird.
Jwinn
Funktioniert dies sowohl für UNnotification als auch für UILocalNotification?
user6631314
38

Für alle Interessierten habe ich am Ende eine benutzerdefinierte Ansicht erstellt, die wie das System-Push-Banner oben aussieht, aber eine Schaltfläche zum Schließen (kleines blaues X) und eine Option zum Tippen auf die Nachricht für benutzerdefinierte Aktionen hinzufügt. Es wird auch der Fall unterstützt, dass mehr als eine Benachrichtigung eingegangen ist, bevor der Benutzer Zeit hatte, die alten zu lesen / zu verwerfen (ohne Begrenzung, wie viele sich stapeln können ...).

Link zu GitHub: AGPushNote

Die Verwendung erfolgt grundsätzlich online:

[AGPushNoteView showWithNotificationMessage:@"John Doe sent you a message!"];

Und so sieht es auf iOS7 aus (iOS6 hat ein iOS6-Look & Feel ...)

Geben Sie hier die Bildbeschreibung ein

Aviel Gross
quelle
1
Ebenfalls jetzt in Swift neu interpretiert: github.com/charliewilliams/CWNotificationBanner (von mir)
Builds erfolgreich am
Schön, das soll nützlich sein.
夜 之 星辰
36

Ziel c

Geben Sie hier die Bildbeschreibung ein

Dafür müssen iOS 10wir die willPresentNotificationMethode zum Anzeigen des Benachrichtigungsbanners integrieren foreground.

Wenn App im Vordergrundmodus (aktiv)

- (void)userNotificationCenter:(UNUserNotificationCenter* )center willPresentNotification:(UNNotification* )notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
    NSLog( @“Here handle push notification in foreground" ); 
    //For notification Banner - when app in foreground

    completionHandler(UNNotificationPresentationOptionAlert);

    // Print Notification info
    NSLog(@"Userinfo %@",notification.request.content.userInfo);
}
Ashwini Chougale
quelle
1
Kopieren Sie einfach den Code und vergessen Sie nicht, das UNUserNotificationCenterDelegate-Protokoll zu verwenden.
Nik Kov
Wenn ich dann anstelle dieser Benachrichtigung eine Warnung anzeigen möchte?
Mihir Oza
@MihirOza Du willst UIAlertController?
Ashwini Chougale
Ich weiß, aber ich möchte kein Benachrichtigungs-Popup, wenn die App aktiv ist. Ich möchte nur Alarm in meiner App.
Mihir Oza
24

Wenn die Anwendung im Vordergrund ausgeführt wird, zeigt iOS kein Benachrichtigungsbanner / Alarm an. Das ist beabsichtigt. Aber wir können es erreichen, indem wir UILocalNotificationFolgendes verwenden

  • Überprüfen Sie beim Empfang einer Remote-
    Benachrichtigung, ob die Anwendung aktiv ist . Im aktiven Zustand wird eine UILocalNotification ausgelöst.

    if (application.applicationState == UIApplicationStateActive ) {
    
        UILocalNotification *localNotification = [[UILocalNotification alloc] init];
        localNotification.userInfo = userInfo;
        localNotification.soundName = UILocalNotificationDefaultSoundName;
        localNotification.alertBody = message;
        localNotification.fireDate = [NSDate date];
        [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
    }

SCHNELL:

if application.applicationState == .active {
    var localNotification = UILocalNotification()
    localNotification.userInfo = userInfo
    localNotification.soundName = UILocalNotificationDefaultSoundName
    localNotification.alertBody = message
    localNotification.fireDate = Date()
    UIApplication.shared.scheduleLocalNotification(localNotification)
}
Ab'initio
quelle
86
Ich denke nicht, dass dies helfen wird. Lokale und Remote-Benachrichtigungen werden gleich behandelt. Wenn diese lokale Benachrichtigung ausgelöst wird und die App ausgeführt wird, wird das Abzeichen / Banner oder der Sound nicht angezeigt / abgespielt.
RPM
3
Es wird auch einen Eintrag im iOS Notification Center
hinterlassen
3
Ich würde jedoch keine lokale Benachrichtigung starten, wenn eine Push-Benachrichtigung eingeht. Ich würde stattdessen ein ähnliches Verhalten starten, wie es @ Rick77 erwähnt hat: eine Warnung oder einen Toaster anzeigen. Ich denke, ich muss das Betriebssystem nicht noch einmal durchgehen, um etwas zu erhalten, das das Betriebssystem von mir verlangt.
Fábio Oliveira
3
Diese Lösung funktioniert, da lokal und remote auf die gleiche Weise behandelt werden. Wenn sich die App im Vordergrund befindet, wird beim Erstellen einer Standortbenachrichtigung bei einer Remote-Benachrichtigung nichts angezeigt. Die Verwendung von Alert oder benutzerdefiniertem Alert ist die Lösung
Hammer
18
Das funktioniert eigentlich nicht. Aus den UILocalNotification-Dokumenten:If the app is foremost and visible when the system delivers the notification, the app delegate’s application:didReceiveLocalNotification: is called to process the notification. Use the information in the provided UILocalNotification object to decide what action to take. The system does not display any alerts, badge the app’s icon, or play any sounds when the app is already frontmost.
Chris Morse
15

Wenn die Anwendung im Vordergrund ausgeführt wird, zeigt iOS kein Benachrichtigungsbanner / Alarm an. Das ist beabsichtigt. Sie müssen Code schreiben, um die Situation zu bewältigen, in der Ihre App eine Benachrichtigung erhält, während sie sich im Vordergrund befindet. Sie sollten die Benachrichtigung auf die am besten geeignete Weise anzeigen (z. B. Hinzufügen einer Ausweisnummer zu einem UITabBarSymbol, Simulieren eines Benachrichtigungscenter-Banners usw.).

Daniel Martín
quelle
1
Aber in der iOS-Mail-Anwendung haben sie es geschafft. Sie erhalten ein neues Benachrichtigungsbanner / eine neue Benachrichtigung, während die Mail-App im Vordergrund steht
Ab'initio
3
@ Ab'initio Ich weiß es nicht genau, aber unter iOS sind nicht alle Anwendungen gleich. Ich nehme an, die Standard-Mail-App verwendet eine Art private API, die im öffentlichen SDK nicht verfügbar ist. Oder der Benachrichtigungscode macht eine Ausnahme mit der Mail-App-ID von Apple.
Daniel Martín
1
Was?? Ich stehe kurz vor einem Harpyien-Wutanfall.
Josh
@ DanielMartín könnten Sie mir sagen, wie ich eine Benachrichtigung im Vordergrund in iOS 8.0
Dilip Tiwari
9
Beachten Sie, dass diese Antwort nur für iOS 9 und niedriger gilt . Seit iOS 10 hat Apple eine neue API für die Verarbeitung von Benachrichtigungen eingeführt (die UNUserNotificationCenter API). Zusammen mit der neuen API ist es jetzt möglich, die Benachrichtigungen anzuzeigen, wenn sich die Anwendung im Vordergrund befindet. Wenn Sie also verwirrt sind, weil die Antworten in dieser Frage unterschiedlich sind, liegt dies daran, dass einige der Antworten zu alt sind und nur das Verhalten für iOS 9 und früher beschreiben, während die anderen nicht berücksichtigen, dass die UNUserNotificationCenter nur von verfügbar sind iOS 10.
Tomacco
12

Xcode 10 Swift 4.2

Push-Benachrichtigung anzeigen, wenn Ihre App im Vordergrund steht -

Schritt 1: Fügen Sie den Delegaten UNUserNotificationCenterDelegate in die AppDelegate-Klasse ein.

class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {

Schritt 2: Legen Sie den UNUserNotificationCenter-Delegaten fest

let notificationCenter = UNUserNotificationCenter.current()
notificationCenter.delegate = self

Schritt 3: In diesem Schritt kann Ihre App die Push-Benachrichtigung anzeigen, auch wenn sich Ihre App im Vordergrund befindet

func userNotificationCenter(_ center: UNUserNotificationCenter,
                                willPresent notification: UNNotification,
                                withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler([.alert, .sound])

    }

Schritt 4: Dieser Schritt ist optional . Überprüfen Sie, ob sich Ihre App im Vordergrund befindet und ob sie sich im Vordergrund befindet, und zeigen Sie dann die lokale PushNotification an.

func application(_ application: UIApplication,didReceiveRemoteNotification userInfo: [AnyHashable: Any],fetchCompletionHandler completionHandler:@escaping (UIBackgroundFetchResult) -> Void) {

        let state : UIApplicationState = application.applicationState
        if (state == .inactive || state == .background) {
            // go to screen relevant to Notification content
            print("background")
        } else {
            // App is in UIApplicationStateActive (running in foreground)
            print("foreground")
            showLocalNotification()
        }
    }

Lokale Benachrichtigungsfunktion -

fileprivate func showLocalNotification() {

        //creating the notification content
        let content = UNMutableNotificationContent()

        //adding title, subtitle, body and badge
        content.title = "App Update"
        //content.subtitle = "local notification"
        content.body = "New version of app update is available."
        //content.badge = 1
        content.sound = UNNotificationSound.default()

        //getting the notification trigger
        //it will be called after 5 seconds
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)

        //getting the notification request
        let request = UNNotificationRequest(identifier: "SimplifiedIOSNotification", content: content, trigger: trigger)

        //adding the notification to notification center
        notificationCenter.add(request, withCompletionHandler: nil)
    }
Prashant Gaikwad
quelle
1
Dies ist ein großartiges Beispiel für die Notwendigkeit, alle Antworten auf einen Thread zu lesen. Frühere Threads erwähnen die Methode als den Delegaten und schließlich alle drei Schritte, die Sie ausführen müssen. DANKE Prashant für eine vollständige Antwort!
user3069232
Gut zu wissen, dass es dir geholfen hat. Happy Coding
Prashant Gaikwad
10

Ja, laut Apple- Dokumentation können Sie Benachrichtigungen anzeigen, während die App ausgeführt wirdGeben Sie hier die Bildbeschreibung ein

SPatel
quelle
Wo kann ich diese Funktion entweder in einem App-Delegaten oder in einer bestimmten Klasse schreiben?
iOS-Entwickler
Was ist, wenn ich schreiben möchte, dass Methd in Sicht geladen wurde?
iOS-Entwickler
Sie können überall schreiben, aber die Bedingung ist, dass es dem UNUserNotificationCenterDelegateProtokoll entspricht
SPatel
Sie können nicht schreibenviewDidLoad
SPatel
1
Ich schlage vor, AppDelegateextension AppDelegate: UNUserNotificationCenterDelegate
SPatel
9

Sie können Ihre eigene Benachrichtigung erstellen, die die Bannerwarnung nachahmt.

Eine Möglichkeit besteht darin, eine benutzerdefinierte Benutzeroberfläche zu erstellen, die wie das Banner aussieht und Animationen animieren und darauf reagieren kann. In diesem Sinne können Sie noch bessere Banner mit noch mehr Funktionen erstellen.

Oder Sie können nach einer API suchen, die dies für Sie erledigt, und sie als Podfiles zu Ihrem Projekt hinzufügen.

Hier sind ein paar, die ich benutzt habe:

https://github.com/terryworona/TWMessageBarManager

https://github.com/toursprung/TSMessages

marshy101
quelle
1
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert.
Robert
1
TWMessageBarManagerkann einfach über appdelegate selbst aufgerufen und verwendet werden, da es ein Singleton-Entwurfsmuster verwendet. Danke für die Links.
Jay Mayu
8

Hier ist der Code zum Empfangen der Push-Benachrichtigung, wenn sich die App im aktiven Zustand befindet (Vordergrund oder geöffnet). UNUserNotificationCenter-Dokumentation

@available(iOS 10.0, *)
func userNotificationCenter(center: UNUserNotificationCenter, willPresentNotification notification: UNNotification, withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void)
{
     completionHandler([UNNotificationPresentationOptions.Alert,UNNotificationPresentationOptions.Sound,UNNotificationPresentationOptions.Badge])
}

Wenn Sie auf userInfo der Benachrichtigung zugreifen müssen, verwenden Sie den folgenden Code: notification.request.content.userInfo

Kavin Kumar Arumugam
quelle
Wo soll diese Funktion geschrieben werden? oder in Ansicht Controller-Klasse?
iOS-Entwickler
Was ist, wenn ich es in einer Funktion als verschachtelte Funktion aufrufen kann? Würde es> heißen?
iOS-Entwickler
1
Fügen Sie dies in die AppDelegate-Klasse ein. Sie müssen diese Funktion nicht aufrufen.
Milan Jayawardane
4

Das Hinzufügen dieser Vervollständigungshandler-Zeile zur Delegierungsmethode löste das gleiche Problem für mich:

//Called when a notification is delivered to a foreground app.
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {

completionHandler([.alert, .badge, .sound])
} 
Furkan S. Dağ
quelle
3

Damit Swift 5 das PushNotification-Wörterbuch analysiert

    func application(_ application: UIApplication, didReceiveRemoteNotification data: [AnyHashable : Any]) {
            if application.applicationState == .active {
                if let aps1 = data["aps"] as? NSDictionary {
                    if let dict = aps1["alert"] as? NSDictionary {
                        if let strTitle = dict["title"] as? String , let strBody = dict["body"] as? String {
                            if let topVC = UIApplication.getTopViewController() {
                                //Apply your own logic as per requirement
                                print("strTitle ::\(strTitle) , strBody :: \(strBody)")
                            }
                        }
                    }
                }
            }
        }

Zum Abrufen von top viewController, auf dem topBanner angezeigt wird

extension UIApplication {

    class func getTopViewController(base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? {

        if let nav = base as? UINavigationController {
            return getTopViewController(base: nav.visibleViewController)

        } else if let tab = base as? UITabBarController, let selected = tab.selectedViewController {
            return getTopViewController(base: selected)

        } else if let presented = base?.presentedViewController {
            return getTopViewController(base: presented)
        }
        return base
    }
}
Hardik Thakkar
quelle
Die guardAussage ist dein Freund :-)
Nicolas Miari
2

Verwenden Sie in Ihrem App-Delegaten den folgenden Code

import UIKit
import UserNotifications
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
 var currentToken: String?
 var window: UIWindow?
 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        application.registerForRemoteNotifications()
        let center = UNUserNotificationCenter.current()
        center.requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in

            // Enable or disable features based on authorization.
            if granted == true
            {
                print("Allow")
                UIApplication.shared.registerForRemoteNotifications()
            }
            else
            {
                print("Don't Allow")
            }
        }
        UNUserNotificationCenter.current().delegate = self

        return true
    }
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data){
        let tokenParts = deviceToken.map { data -> String in
            return String(format: "%02.2hhx", data)
        }
        let token = tokenParts.joined()
        currentToken = token  //get device token to delegate variable

    }
 public class var shared: AppDelegate {
        return UIApplication.shared.delegate as! AppDelegate
    }
 func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
         completionHandler([.alert, .badge, .sound])
    }
}
Varun Naharia
quelle
0

Wie oben erwähnt, sollten Sie verwenden UserNotification.framework, um dies zu erreichen. Aber für meine Zwecke muss ich es trotzdem in der App zeigen und wollte habeniOS 11 Stil haben, also habe ich eine kleine Hilfsansicht erstellt, die vielleicht für jemanden nützlich wäre.

GitHub iOS 11 Push-Benachrichtigungsansicht .

Orest Savchak
quelle
0

Bester Ansatz hierfür ist hinzuzufügen , UNUserNotificationCenterDelegatein AppDelegatedurch den Einsatzextension AppDelegate: UNUserNotificationCenterDelegate dieser Erweiterung teilt die App der Lage sein , Benachrichtigung zu erhalten , wenn in Gebrauch

Und implementieren Sie diese Methode

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler(.alert)
    }

Diese Methode wird vom Delegaten nur aufgerufen, wenn sich die Anwendung im Vordergrund befindet .

Also die endgültige Implementierung:

extension AppDelegate: UNUserNotificationCenterDelegate {
    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler(.alert)
    }
}

Und um dies aufzurufen, müssen Sie den Delegaten in AppDelegate festlegen und didFinishLaunchingWithOptionsdiese Zeile hinzufügen

UNUserNotificationCenter.current().delegate = self

Sie können ändern

completionHandler(.alert) 

mit

completionHandler([.alert, .badge, .sound]))
JhonnyTawk
quelle
0

Für Swift 5

1) Bestätigen Sie den Delegierten beim AppDelegate mit UNUserNotificationCenterDelegate

2) UNUserNotificationCenter.current().delegate = self indidFinishLaunch

3) Implementieren Sie die folgende Methode in AppDelegate.

func userNotificationCenter(_ center: UNUserNotificationCenter,
                                willPresent notification: UNNotification,
                                withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
     print("Push notification received in foreground.")
     completionHandler([.alert, .sound, .badge])
}

Das ist es!

karthik
quelle
-2

Wie @Danial Martine sagte, zeigt iOS kein Benachrichtigungsbanner / Alarm an. Das ist beabsichtigt. Aber wenn es wirklich nötig ist, gibt es einen Weg. Das habe ich auch dadurch erreicht.

1. Laden Sie die Parse-Frame-Arbeit von Parse FrameWork herunter

2. Importieren #import <Parse/Parse.h>

3. Fügen Sie Ihrer didReceiveRemoteNotification-Methode den folgenden Code hinzu

 - (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    [PFPush handlePush:userInfo];
}

PFPush kümmert sich um die Behandlung der Remote-Benachrichtigung. Wenn sich die App im Vordergrund befindet, wird die Warnung angezeigt, andernfalls wird die Benachrichtigung oben angezeigt.

V-Xtreme
quelle
aufmerksam? Du meinst eine Alarmansicht?
Iphondroid
1
aber wie man einen Rückruf für Alarmtastenaktionen bekommt
Charlie
-2

Wenn sich Ihre Anwendung im Vordergrund befindet, bedeutet dies, dass Sie derzeit dieselbe App verwenden. Es ist also nicht erforderlich, die Benachrichtigung im Allgemeinen oben anzuzeigen.

Wenn Sie in diesem Fall jedoch eine Benachrichtigung anzeigen möchten, müssen Sie eine benutzerdefinierte Benachrichtigungsansicht oder eine benutzerdefinierte Ansicht wie Toast oder etwas anderes erstellen, um dem Benutzer anzuzeigen, dass Sie eine Benachrichtigung erhalten haben.

Sie können auch oben ein Abzeichen anzeigen, wenn Ihre App über eine solche Funktion verfügt.

SHIV
quelle