Hinweis: Für diesen Artikel sind keine älteren Dokumentationen verfügbar, daher sehen Sie die aktuelle Dokumentation.
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
- PushEngage iOS SDK integrieren
- PushEngage iOS SDK initialisieren
- Erstellen einer Notification Service Extension
- Initialisierung des PushEngage SDK für Notification Service Extension
- Erstellung einer Notification Content Extension
- Initialisierung des PushEngage SDK für Notification Content Extension
- App-Gruppen hinzufügen
- Deep Linking
- Benachrichtigungen im Vordergrund verarbeiten
- Fehlerbehebung
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:
- Öffnen Sie Xcode und navigieren Sie zu Ihrem Projekt. Wählen Sie die Registerkarte „Package Dependencies“. Klicken Sie auf die Schaltfläche +.

- Fügen Sie die URL
https://github.com/awesomemotive/pushengage-ios-sdkin die Suchleiste ein. Klicken Sie auf „Add Package“.

- 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
PushEngageInAppEnabledin Info.plist auf YES an, dann wird die URL innerhalb der Anwendung mit WKWebview geladen. - Geben Sie
PushEngageInAppEnabledin Info.plist auf NO an, wenn Sie möchten, dass Ihr Abonnent zu Safari weitergeleitet wird, um die URL zu laden. - Geben Sie
PushEngageAutoHandleDeeplinkURLin Info.plist auf YES an, dann wird der Deep-Link gemäß derPushEngageInAppEnabled-Konfiguration vom SDK verarbeitet. - Geben Sie
PushEngageAutoHandleDeeplinkURLin 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
setNotificationOpenHandlerin derAppDelegateinnerhalb der MethodedidFinishLaunchingWithOptionskonfigurieren. 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.

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
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.
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.