So richten Sie iOS-App-Push-Benachrichtigungen mit PushEngage ein

Sie können jetzt Push-Benachrichtigungen für Ihre iOS-Anwendung mit unserem iOS App SDK implementieren. Sie benötigen die Hilfe Ihres Entwicklers, da es sich um eine einmalige Integration handelt, bevor Sie ihnen Push-Benachrichtigungen über das PushEngage-Dashboard senden können.

Bevor Sie beginnen

  • Sie benötigen Xcode, das auf Ihrem System installiert ist.
  • Ein gültiges Entwicklerkonto und eine App-ID sind im Apple Developer Portal konfiguriert.

Wir werden die folgenden Schritte ausführen, um Push-Benachrichtigungen für Ihre iOS-Anwendung zu aktivieren.

Konfiguration Ihrer App

Remote-Benachrichtigungen aktivieren

1. Öffnen Sie Ihr Xcode-Projekt und wählen Sie das Stammprojekt im Projektnavigator aus. Wählen Sie Ihr Haupt-App-Ziel.

2. Navigieren Sie zu Signing & Capabilities. Stellen Sie sicher, dass die Hintergrundmodi-Funktion hinzugefügt wurde. Wenn nicht, fügen Sie sie hinzu, indem Sie auf die Schaltfläche „+ Capability“ klicken.

3. Stellen Sie auf ähnliche Weise sicher, dass die Push-Benachrichtigungsfunktion hinzugefügt wurde. Wenn nicht, fügen Sie sie mit der Schaltfläche „+ Capability“ hinzu.

Wenn die Funktion Push Notifications in Xcode nicht sichtbar ist. Sie müssen die folgenden Schritte ausführen:

1. Gehen Sie zu Ihrem Apple Developer-Konto.

2. Navigieren Sie zu Certificates, Identifiers & Profiles.

3. Wählen Sie Ihre App-ID aus. Bearbeiten Sie die Konfiguration Ihrer App-ID und stellen Sie sicher, dass Push Notifications aktiviert ist.

4. Kehren Sie zu Xcode zurück und versuchen Sie, die Funktion „Push Notifications“ erneut hinzuzufügen.

Hintergrundmodi aktivieren

1. Navigieren Sie in Ihrem Xcode-Projekt zu Signing & Capabilities.

2. Aktivieren Sie unter Background Modes sowohl Remote notifications als auch Background Fetch.

Dieser Schritt stellt sicher, dass Ihre App Remote-Benachrichtigungen und Hintergrundabrufe effizient verarbeiten kann.

Hier ist die Anleitung zur Erstellung Ihres APNs-Zertifikats.

PushEngage iOS SDK integrieren

Das PushEngage iOS SDK ist als Swift-Paket und als CocoaPods-Pod verfügbar. Wir bitten Sie, beide Methoden zu durchlaufen, aber nur eine davon bei der Einrichtung zu verwenden.

PushEngage iOS SDK mit SPM integrieren

Um das PushEngage iOS SDK mit dem Swift Package Manager zu integrieren, befolgen Sie diese Schritte:

  1. Öffnen Sie Xcode und navigieren Sie zu Ihrem Projekt. Wählen Sie die Registerkarte „Package Dependencies“. Klicken Sie auf die Schaltfläche +.
  1. Fügen Sie die URL https://github.com/awesomemotive/pushengage-ios-sdk in die Suchleiste ein. Klicken Sie auf „Add Package“.
  1. Wählen Sie Ihr Haupt-App-Ziel unter „Add to Target“ aus und klicken Sie auf „Add Package“.

PushEngage iOS SDK mit CocoaPods integrieren

Um das PushEngage iOS SDK mit CocoaPods zu integrieren, müssen Sie die folgenden Schritte ausführen:

Wenn CocoaPods nicht installiert ist, schließen Sie Ihr aktuelles Xcode-Projekt und führen Sie den folgenden Befehl in Ihrem Projektverzeichnis aus

sudo gem install cocoapods

Führen Sie den folgenden Befehl aus, um eine Podfile in Ihrem Projekt zu initialisieren

pod init

Öffnen Sie die neu erstellte Podfile mit einem Texteditor oder indem Sie dem Befehl in Ihrem Terminal im Stammverzeichnis des Projekts folgen.

open Podfile

Fügen Sie die PushEngage-Abhängigkeit unter dem Ziel Ihres Projekts hinzu. Stellen Sie sicher, dass Ihre Podfile dem unten stehenden Beispiel ähnelt

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'YourProjectName' do
  # Add PushEngage SDK dependency
  pod 'PushEngage'
  post_install do |installer|
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'NO'
      end
    end
  end
end

Speichern Sie die Podfile und führen Sie die folgenden Befehle im Terminal aus.

pod repo update
pod install

Öffnen Sie die neu erstellte Datei <project-name>.xcworkspace in Xcode.

PushEngage iOS SDK initialisieren

Sobald Sie das SDK integriert haben, müssen wir das iOS SDK in Ihrer AppDelegate initialisieren.

Mit der Swift-Sprache können Sie dies so tun

import PushEngage
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    override init() {
        super.init()
        PushEngage.swizzleInjection(isEnabled: true)
    }

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
       // Set your PushEngage App ID (replace       "APP_ID_FROM_PUSH_ENGAGE_DASHBOARD" with your actual App ID)
        PushEngage.setAppId(key: "APP_ID_FROM_PUSH_ENGAGE_DASHBOARD")
        // Start PushEngage initial info
        PushEngage.setInitialInfo(for: application, with: launchOptions)
        // Enable logs for debugging (optional)
        PushEngage.enableLogs = true
        return true
    }
}

Mit der Objective-C-Sprache können Sie dies so tun

#import "AppDelegate.h"
@import PushEngage;
@implementation AppDelegate

- (instancetype)init {
    self = [super init];
    if (self) {
       [PushEngage swizzleInjectionWithIsEnabled:YES];
    }
    return self;
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Set your PushEngage App ID (replace "APP_ID_FROM_PUSH_ENGAGE_DASHBOARD" with your actual App ID)
    [PushEngage setAppIdWithKey:@"APP_ID_FROM_PUSH_ENGAGE_DASHBOARD"];
    // Set initial info
    [PushEngage setInitialInfoFor:application with:launchOptions];
    // Enable logs for debugging (optional)
    [PushEngage setEnableLogs:YES];
    return YES;
}

@end

Manchmal, wenn Sie SwiftUI verwenden, ist die AppDelegate möglicherweise nicht standardmäßig verfügbar. In solchen Fällen können Sie das PushEngage SDK in Ihrer Haupt-App-Datei initialisieren. Hier ist ein Beispiel in SwiftUI

import SwiftUI
import PushEngage

@main
struct PEDemoApp: App {
    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

class AppDelegate: NSObject, UIApplicationDelegate {
    
    override init() {
        super.init()
        PushEngage.swizzleInjection(isEnabled: true)
    }
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        PushEngage.setAppId(key: "APP_ID_FROM_PUSH_ENGAGE_DASHBOARD")
        PushEngage.setIntialInfo(for: application,
                                             with: launchOptions)
        
        PushEngage.enableLogs = true
        return true
    }
}

Hinweis: Während der Entwicklung Ihrer Anwendung kann es hilfreich sein, Protokolle aus dem PushEngage SDK zu Debugging-Zwecken zu aktivieren. Es ist jedoch wichtig, Protokolle in der Produktionsversion zu deaktivieren, um die Offenlegung sensibler Informationen zu vermeiden.

Erstellen einer Notification Service Extension

Die Notification Service Extension erweitert die Fähigkeit Ihrer iOS-App, Benachrichtigungen zu empfangen. Dies wird verwendet, um den Inhalt der Benachrichtigung zu ändern oder Daten beim Empfang der Benachrichtigung abzurufen/zu verarbeiten. Sie können die folgenden Schritte ausführen, um eine Notification Service Extension zu erstellen:

1. Öffnen Sie Xcode und navigieren Sie zu Ihrem Projekt. Wählen Sie im Menü Datei » Neu » Ziel.

2. Wählen Sie im Fenster zur Vorlagenauswahl Notification Service Extension und klicken Sie auf Weiter.

3. Geben Sie einen Namen für Ihre Erweiterung ein, z. B. PushEngageNotificationServiceExtension, und klicken Sie auf Fertig stellen.

4. Wenn Sie die Notification Service Extension erstellt haben, werden Sie möglicherweise aufgefordert, sie zu aktivieren. Aktivieren Sie sie nicht sofort.

Die Aktivierung der Erweiterung würde den Debugging-Fokus von Xcode von Ihrer App auf die Erweiterung verlagern. Wenn Sie sie versehentlich aktivieren, machen Sie sich keine Sorgen; Sie können das Debugging Ihrer App in Xcode wieder aufnehmen.

Initialisierung des PushEngage SDK für Notification Service Extension

Um die ordnungsgemäße Funktion des PushEngage SDK in Ihrer iOS Notification Service Extension sicherzustellen, müssen Sie die folgenden Schritte ausführen:

1. Öffnen Sie die Podfile, die Ihrem Projekt zugeordnet ist.

2. Fügen Sie dann die Abhängigkeit hinzu. Fügen Sie den folgenden Code-Snippet in Ihre Podfile ein:

target 'Your_Main_Application_Target' do
      pod 'PushEngage'
      post_install do |installer|
          installer.pods_project.targets.each do |target|
            target.build_configurations.each do |config|
              config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'NO'
          end
        end
      end
     
      target 'Your_Notification_Service_Extension_Target' do
              pod 'PushEngage'
      end
end

3. Führen Sie die folgenden Befehle in Ihrem Terminal in Ihrem Stammverzeichnis des Projekts aus:

pod repo update
pod install

4. Importieren Sie in Ihrem Notification Service Extension-Ziel das PushEngage-Framework und fügen Sie den erforderlichen Initialisierungscode hinzu. Hier erfahren Sie, wie Sie dies tun können.

Verwendung von Swift

import UserNotifications
import PushEngage

@available(iOSApplicationExtension 10.0, *)
class PushEngageNotificationServiceExtension: UNNotificationServiceExtension {

    var contentHandler: ((UNNotificationContent) -> Void)?
    var bestAttemptContent: UNMutableNotificationContent?
    var request : UNNotificationRequest?

    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
        self.request = request
        self.contentHandler = contentHandler
        self.bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
        
        if let bestContent = bestAttemptContent {
            PushEngage.didReceiveNotificationExtensionRequest(request, bestContentHandler: bestContent)
            contentHandler(bestContent)
        }
    }
    
    override func serviceExtensionTimeWillExpire() {
        // Called just before the extension will be terminated by the system.
        // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
        if let contentHandler = contentHandler, let request = request ,let bestAttemptContent =  bestAttemptContent {
            guard let content = PushEngage.serviceExtensionTimeWillExpire(request, content: bestAttemptContent) else {
                contentHandler(bestAttemptContent)
                return
            }
            contentHandler(content)
        }
    }

}

Verwendung von Objective-C

#import "NotificationService.h"
@import PushEngage;

@interface NotificationService ()

@property (nonatomic, strong) void (^contentHandler)(UNNotificationContent *contentToDeliver);
@property (nonatomic, strong) UNMutableNotificationContent *bestAttemptContent;
@property (nonatomic, strong) UNNotificationRequest *request;

@end

@implementation NotificationService

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
    self.request = request;
    self.contentHandler = contentHandler;
    self.bestAttemptContent = [request.content mutableCopy];
    
    if (self.bestAttemptContent) {
        [PushEngage didReceiveNotificationExtensionRequest:request bestContentHandler:self.bestAttemptContent];
        contentHandler(self.bestAttemptContent);
    }
}

- (void)serviceExtensionTimeWillExpire {

    if (self.contentHandler && self.request && self.bestAttemptContent) {
        UNNotificationContent *content = [PushEngage serviceExtensionTimeWillExpire:self.request content:self.bestAttemptContent];
        if (content) {
            self.contentHandler(self.bestAttemptContent);
            return;
        }
    }
    self.contentHandler(self.bestAttemptContent);
}

@end

Erstellung einer Notification Content Extension

Um die Art und Weise durch Hinzufügen einer benutzerdefinierten Benutzeroberfläche zu verbessern, müssen Sie eine Notification Content Extension erstellen. Befolgen Sie die nachstehenden Schritte, um die Erweiterung einzurichten:

1. Gehen Sie in Xcode zu Datei » Neu » Ziel.

2. Wähle Notification Content Extension und klicke auf Next.

3. Wählen Sie im Dialogfeld, das nach dem Klicken auf Fertig stellen erscheint, nicht „Aktivieren“. Das Abbrechen bewirkt, dass Xcode Ihre App anstelle der Erweiterung debuggt. Wenn Sie sie versehentlich aktivieren, wechseln Sie in Xcode zurück zum Debuggen Ihrer App (neben der Schaltfläche Ausführen).

4. Wählen Sie im Projektnavigator das oberste Projektverzeichnis aus und wählen Sie in der Zielliste, die in Schritt 2 erstellt wurde, das Ziel NotificationContentExtension aus.

5. Setzen Sie das Bereitstellungsziel auf iOS 10 oder höher, da dies die iOS-Version ist, für die Apple die Unterstützung für diese Erweiterung eingeführt hat. 

Initialisierung des PushEngage SDK für Notification Content Extension

Um die ordnungsgemäße Funktion des PushEngage SDK in Ihrer iOS Notification Content Extension sicherzustellen, müssen Sie die folgenden Schritte ausführen:

1. Öffnen Sie die Podfile, die Ihrem Projekt zugeordnet ist.

2. Fügen Sie die Abhängigkeit hinzu. Fügen Sie den folgenden Code-Snippet in Ihre Podfile ein:

target 'Your_Main_Application_Target' do
  pod 'PushEngage'
  target 'Your_Notification_Content_Extension' do
    pod 'PushEngage'
  end
end

3. Führen Sie die folgenden Befehle in Ihrem Terminal in Ihrem Stammverzeichnis des Projekts aus:

pod repo update

pod install

4. Importieren Sie in Ihrem Notification Content Extension-Ziel das PushEngage-Framework und fügen Sie den erforderlichen Initialisierungscode hinzu. Hier erfahren Sie, wie Sie dies mit einigen Beispielen von UI-Elementen tun können:

Verwendung von Swift

import UIKit
import UserNotifications
import UserNotificationsUI
import PushEngage

@available(iOSApplicationExtension 10.0, *)
class NotificationViewController: UIViewController, UNNotificationContentExtension {
    
    fileprivate var hostingView: UIHostingController<ContentView>?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .white
    }
    
    func didReceive(_ notification: UNNotification) {
        if(notification.request.content.categoryIdentifier == "your_identifier"){
            let payLoad = PushEngage.getCustomUIPayLoad(for: notification.request)
  //pass the payload to your custom View
            let view = CustomView(payLoadInfo: payLoad)
            hostingView = UIHostingController(rootView: view)
If let customView = self.hostingView {
            addChild(hostingView!)
}
        }
    }
    
}


Objective-C:

#import "NotificationViewController.h"
#import <UserNotifications/UserNotifications.h>
#import <UserNotificationsUI/UserNotificationsUI.h>

@import PushEngage;
@import UIKit;

@interface NotificationViewController () <UNNotificationContentExtension>

@property IBOutlet UILabel *label;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (weak, nonatomic) IBOutlet UIButton *firstButton;
@property (weak, nonatomic) IBOutlet UIButton *secondButton;

@end

@implementation NotificationViewController

- (IBAction)firstbuttonAction:(id)sender {
    // do what action you want to perform.
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any required interface initialization here.
}

- (void)didReceiveNotification:(UNNotification *)notification {
    
    NotificationViewController * __block blockSelf = self;
    CustomUIModel *object = [PushEngage getCustomUIPayLoadFor:notification.request];
    dispatch_async(dispatch_get_main_queue(), ^{
        blockSelf.label.text = object.title;
        blockSelf.imageView.image = object.image;
        [blockSelf.firstButton setTitle:object.buttons.firstObject.text forState:UIControlStateNormal];
        [blockSelf.secondButton setTitle:object.buttons.lastObject.text forState:UIControlStateNormal];
        blockSelf = NULL;
    });
}

@end

App-Gruppen hinzufügen

App-Gruppen sind für die Kommunikation zwischen der Haupt-App, der Benachrichtigungsdienst-Erweiterung und der Inhalts-Erweiterung unerlässlich. Sie können diese Schritte befolgen, um App-Gruppen zu Ihrem iOS-Projekt hinzuzufügen:

Wenn Sie bereits eine App-Gruppe haben und nur diese verwenden möchten, überspringen Sie Schritt 5.

1. Wähle in deinem Xcode-Projekt im Projektnavigator das oberste Projektverzeichnis aus und wähle das Hauptziel der App aus.

2. Navigieren Sie zur Registerkarte „Signing & Capabilities“.

3. Klicken Sie auf die Schaltfläche „+ Capability“ und wählen Sie „App Groups“ aus der Liste aus.

4. Klicken Sie auf die Schaltfläche + , um eine App-Gruppe hinzuzufügen. Geben Sie Ihrer App-Gruppe einen eindeutigen Namen und klicken Sie auf OK.

5. Wählen Sie im Haupteditorbereich das Hauptziel Ihrer App aus und erstellen Sie eine App-Gruppe. Bitte geben Sie den Namen der Gruppe in Ihrer Anwendungs-Info.plist mit dem Schlüssel PushEngage_App_Group_Key an.

6. Fügen Sie denselben Schlüssel und Wert in die Info.plist-Datei der Benachrichtigungsdienst-Erweiterung ein.

7. Wählen Sie dieselbe App-Gruppe im Hauptanwendungsziel und in Ihrer NotificationServiceExtension aus.

Stellen Sie sicher, dass Sie in obigem Schritt Ihre Benachrichtigungsdienst-Erweiterung auswählen.

Deep Linking

Deep Linking ermöglicht es Ihren Abonnenten, direkt zu einem bestimmten Bildschirm innerhalb der Anwendung oder zu einer bestimmten Webseite zu navigieren, wenn sie mit Push-Benachrichtigungen interagieren. Standardmäßig, wenn Sie eine gültige URL angeben, wird der Abonnent zu dieser Webseite weitergeleitet.

Web-URLs verarbeiten:

  • Geben Sie PushEngageInAppEnabled in Info.plist auf YES an, dann wird die URL innerhalb der Anwendung mit WKWebview geladen.
  • Geben Sie PushEngageInAppEnabled in Info.plist auf NO an, wenn Sie möchten, dass Ihr Abonnent zu Safari weitergeleitet wird, um die URL zu laden. 
  • Geben Sie PushEngageAutoHandleDeeplinkURL in Info.plist auf YES an, dann wird der Deep-Link gemäß der PushEngageInAppEnabled-Konfiguration vom SDK verarbeitet.
  • Geben Sie PushEngageAutoHandleDeeplinkURL in Info.plist auf NO an, dann wird die Kontrolle über die Verarbeitung des Deep-Links vom SDK an die Client-App übergeben.
  • Wenn der Deeplink keine gültige URL ist, müssen Sie die Navigation mithilfe von setNotificationOpenHandler in der AppDelegate innerhalb der Methode didFinishLaunchingWithOptions konfigurieren. Dies ermöglicht es Ihnen, basierend auf der angegebenen Zeichenfolge zu einem bestimmten Bildschirm zu navigieren, wie unten gezeigt. Wenn nicht konfiguriert, öffnet das SDK einfach die Anwendung.
ios-deeplink

Swift verwenden:

class AppDelegate: UIResponder, UIApplicationDelegate {
    
    var window: UIWindow?
    
    
    override init() {
        super.init()
        // method Swizzling enabled for the application.
        PushEngage.swizzleInjection(isEnabled: true)
    }

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

     PushEngage.setAppId(key: "APP_ID_FROM_PUSH_ENGAGE_DASHBOARD")
     PushEngage.setInitialInfo(for: application,with: launchOptions)
        
        
     // Notification open handler.
     // deep linking screen
     // here ShoesScreen and pepay are example deep link texts
     PushEngage.setNotificationOpenHandler { (result) in
            //replace this block with your own handling
            let additionData = result.notification.additionalData
            if result.notificationAction.actionID == "ShoesScreen" {
                print(additionData ?? [])
                let storyBoard = UIStoryboard(name: "Main", bundle: .main)
                let viewController = storyBoard.instantiateViewController(withIdentifier: "SportViewController")
                let navcontroller = application.windows.first?.rootViewController as? UINavigationController
                navcontroller?.popToRootViewController(animated: true)
                navcontroller?.pushViewController(viewController, animated: true)
            } else if result.notificationAction.actionID == "SalesScreen" {
                let storyBoard = UIStoryboard(name: "Main", bundle: .main)
                let viewController = storyBoard.instantiateViewController(withIdentifier: "NotificationApiTestViewconttoller")
                let navcontroller = application.windows.first?.rootViewController as? UINavigationController
                navcontroller?.popToRootViewController(animated: true)
                navcontroller?.pushViewController(viewController, animated: true)
            } else if result.notificationAction.actionID == "pepay" {
                let storyBoard = UIStoryboard(name: "Main", bundle: .main)
                let viewController = storyBoard.instantiateViewController(withIdentifier: "PEPay")
                let navcontroller = application.windows.first?.rootViewController as? UINavigationController
                navcontroller?.popToRootViewController(animated: true)
                navcontroller?.pushViewController(viewController, animated: true)
            }
        }
        
        PushEngage.enableLogs = true
        
        return true
    }
}

Objective-C verwenden:

@implementation AppDelegate


- (instancetype)init
{
    self = [super init];
    if (self) {
       [PushEngage swizzleInjectionWithIsEnabled: YES];
    }
    return self;
}

typedef void (^PEnotificationOpenHandler)(PENotificationOpenResult * nonnull);

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    UNUserNotificationCenter.currentNotificationCenter.delegate = self;
    PEnotificationOpenHandler actionHandler = ^void(PENotificationOpenResult *result) {
       //replace this block with your own handling
        if ([result.notificationAction.actionID isEqualToString: @"ShoesScreen"]) {
            AddToCart *controller = [AddToCart new];
            UINavigationController *navigationController = (UINavigationController *) application.windows.firstObject.rootViewController;
            [navigationController popToRootViewControllerAnimated:YES];
            [navigationController pushViewController:controller animated:YES];
        } else if ([result.notificationAction.actionID isEqualToString: @"SalesScreen"]) {
            SportsViewcontroller *controller = [SportsViewcontroller new];
            UINavigationController *navigationController = (UINavigationController *) application.windows.firstObject.rootViewController;
            [navigationController popToRootViewControllerAnimated:YES];
            [navigationController pushViewController:controller animated:YES];
        }
    };
    application.applicationIconBadgeNumber = 0;
    [PushEngage setAppIdWithKey:@"APP_ID_FROM_PUSH_ENGAGE_DASHBOARD"];
    [PushEngage setInitialInfoFor:application with:launchOptions];
    [PushEngage setNotificationOpenHandlerWithBlock:actionHandler];
    [PushEngage setEnableLogs:true];
    return YES;
}
@end

Benachrichtigungen im Vordergrund verarbeiten

Wenn Benachrichtigungen im Vordergrund eingehen, müssen Sie entscheiden, ob die Benachrichtigungswarnung auf dem Gerät angezeigt werden soll oder nicht. Verwenden Sie zum Behandeln von Benachrichtigungen im Vordergrund setNotificationWillShowInForgroundHandler.

Wenn der Abschlussblock von Ihnen überhaupt nicht aufgerufen wird, ruft das SDK den Abschlussblock nach 29 Sekunden auf. In jedem Fall, stille oder Benachrichtigungswarnung, wenn die Anwendung im Vordergrundmodus ist.

Verwendung von Swift

class AppDelegate: UIResponder, UIApplicationDelegate {
    
    var window: UIWindow?
    
    
    override init() {
        super.init()
        // method Swizzling enabled for the application.
       PushEngage.swizzleInjection(isEnabled: true)
    }

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

        PushEngage.setAppId(key: "APP_ID_FROM_PUSH_ENGAGE_DASHBOARD")
        PushEngage.setInitialInfo(for: application, with: launchOptions)
        
        // Notification handler when notification deliver's and app is in foreground.
        
        PushEngage.setNotificationWillShowInForgroundHandler { notification, completion in
            if notification.contentAvailable == 1 {
                // in case the developer failed to set the completion handler. After 29 sec the handler will call from the SDK after 29 sec.
                completion(nil)
            } else {
                completion(notification)
            }
        }
        
        PushEngage.enableLogs = true
        
        return true
    }
}


Verwendung von Objective-C

@implementation AppDelegate


- (instancetype)init
{
    self = [super init];
    if (self) {
       [PushEngage swizzleInjectionWithIsEnabled: YES];
    }
    return self;
}
// please create this handlers 
typedef void (^ _Nonnull PENotificationDisplayHandler)(PENotification * _Nullable);

-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    UNUserNotificationCenter.currentNotificationCenter.delegate = self;
    
    [PushEngage setNotificationWillShowInForgroundHandlerWithBlock:^(PENotification * _Nonnull notification, PENotificationDisplayHandler completion) {
        if (notification.contentAvailable == 1) {
            completion(nil);
        } else {
            completion(notification);
        }
    }];
    [PushEngage setAppIdWithKey:@"APP_ID_FROM_PUSH_ENGAGE_DASHBOARD"];
    [PushEngage setInitialInfoFor:application with:launchOptions];
    [PushEngage setEnableLogs:true];
    return YES;
}
@end

Fehlerbehebung

Behebung von Build-Problemen im Zusammenhang mit Sandboxing

Problem:

Sie haben Build-Probleme im Zusammenhang mit Sandboxing.

Lösung:

  • Öffnen Sie Ihr Projekt in Xcode.
  • Navigieren Sie zu Build Settings.
  • Suchen Sie die Option User Script Sandboxing.
  • Setzen Sie sie auf No.
Probleme mit Method Swizzling in Firebase und PushEngage SDKs

Problem:

Sie verwenden sowohl das Firebase SDK als auch das PushEngage SDK mit aktivierter Method Swizzling für beide, und dies verursacht Probleme.

Lösung:

Deaktivieren Sie Method Swizzling für das PushEngage SDK und befolgen Sie die manuellen Schritte zur Handhabung von PushEngage-Methoden. Detaillierte Anweisungen finden Sie unter:
PushEngage iOS SDK Dokumentation

Wenn Sie mehr über die Funktionen des iOS SDK erfahren möchten, können Sie unsere detaillierte API-Dokumentation durchgehen.

Wenn du auf Probleme stößt, kontaktiere uns bitte, indem du hier klickst. Unser Support-Team wird dir helfen können.

Immer noch festgefahren? Wie können wir helfen?
Zuletzt aktualisiert am 9. März 2026

Besucher nach dem Verlassen Ihrer Website ansprechen und binden

Erhöhen Sie den Wert jedes Website-Besuchs mit Push-Benachrichtigungen, die schwer zu übersehen sind.

  • Ewiger kostenloser Plan
  • Einfache Einrichtung
  • 5-Sterne-Support