PushEngage ile iOS Uygulaması Anlık Bildirimlerini Ayarlama

Artık iOS uygulamalarınız için anlık bildirimleri iOS App SDK'mızı kullanarak uygulayabilirsiniz. Geliştiricinizin yardımına ihtiyacınız olacaktır, çünkü PushEngage kontrol panelini kullanarak onlara anlık bildirim gönderebilmeniz için tek seferlik bir entegrasyon olacaktır.

Başlamadan Önce

  • Sisteminizde Xcode'un yüklü olması gerekir.
  • Apple Developer Portal'da geçerli bir geliştirici hesabı ve Uygulama Kimliği yapılandırılmış olmalıdır.

iOS Uygulamanız için anlık bildirimleri etkinleştirmek üzere bu adımları izleyeceğiz.

Uygulamanızı Yapılandırma

Uzak Bildirimleri Etkinleştir

1. Xcode projenizi açın ve Proje Gezgini'nde kök projeyi seçin. Ana uygulama hedefinizi seçin.

2. Signing & Capabilities (İmzalam ve Yetenekler) bölümüne gidin. Arka Plan Modları yeteneğinin eklendiğinden emin olun. Değilse, “+ Capability” (Yetenek Ekle) düğmesine tıklayarak ekleyin.

3. Benzer şekilde, Anlık Bildirimler yeteneğinin eklendiğinden emin olun. Değilse, “+ Capability” (Yetenek Ekle) düğmesini kullanarak ekleyin.

Xcode'da Anlık Bildirimler yeteneği görünmüyorsa. Aşağıdaki adımları izlemeniz gerekir:

1. Apple Geliştirici hesabınıza gidin.

2. Sertifikalar, Kimlikler ve Profiller bölümüne gidin.

3. Uygulama kimliğinizi seçin. Uygulama Kimliğinizin yapılandırmasını düzenleyin ve Anlık Bildirimler'in etkinleştirildiğinden emin olun.

4. Xcode'a geri dönün ve “Anlık Bildirimler” yeteneğini tekrar eklemeyi deneyin.

Arka Plan Modlarını Etkinleştir

1. Xcode projenizde Signing & Capabilities (İmzalam ve Yetenekler) bölümüne gidin.

2. Background Modes (Arka Plan Modları) içinde hem Remote notifications (Uzak bildirimler) hem de Background Fetch (Arka Plan Getirme) seçeneklerini etkinleştirin.

Bu adım, uygulamanızın uzak bildirimleri ve arka plan getirmeleri verimli bir şekilde işlemesini sağlar.

APNs sertifikanızı oluşturmak için buraya tıklayın.

PushEngage iOS SDK'sını Entegre Etme

PushEngage iOS SDK'sı Swift paketi ve CocoaPods pod'u olarak mevcuttur. Her iki yöntemi de incelemenizi, ancak kurulumunuzu tamamlarken yalnızca birini kullanmanızı rica ediyoruz.

PushEngage iOS SDK'sını SPM ile Entegre Etme

PushEngage iOS SDK'sını Swift Package Manager kullanarak entegre etmek için şu adımları izleyin:

  1. XCode'u açın ve projenize gidin. Paket bağımlılıkları sekmesini seçin. + düğmesine tıklayın.
  1. URL'yi https://github.com/awesomemotive/pushengage-ios-sdk arama çubuğuna yapıştırın. "Paket Ekle"ye tıklayın.
  1. "Hedefe Ekle" altında ana uygulama hedefinizi seçin ve "Paket Ekle"ye tıklayın.

PushEngage iOS SDK'sını CocoaPods ile Entegre Etme

PushEngage iOS SDK'yı CocoaPods kullanarak entegre etmek için şu adımları izlemeniz gerekir:

CocoaPods yüklü değilse, mevcut Xcode projenizi kapatın ve projenizin kök dizininde aşağıdaki komutu çalıştırın

sudo gem install cocoapods

Projenizde bir Podfile başlatmak için aşağıdaki komutu çalıştırın

pod init

Yeni oluşturulan Podfile'ı bir metin düzenleyici kullanarak veya terminalinizdeki kök proje dizinindeki komutu izleyerek açın.

open Podfile

Projenizin hedefi altına PushEngage bağımlılığını ekleyin. Podfile'ınızın aşağıdaki örneğe benzer olduğundan emin olun

# 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

Podfile'ı kaydedin ve terminalde aşağıdaki komutları çalıştırın.

pod repo update
pod install

Yeni oluşturulan <project-name>.xcworkspace dosyasını Xcode'da açın.

PushEngage iOS SDK'sını Başlatma

SDK'yı entegre ettikten sonra, iOS SDK'yı AppDelegate'imizde başlatmamız gerekecek.

Swift dilini kullanarak, bunu nasıl yapabileceğiniz aşağıdadır

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

Objective-C dilini kullanarak, bunu nasıl yapabileceğiniz aşağıdadır

#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

Bazen SwiftUI kullanırken, AppDelegate varsayılan olarak mevcut olmayabilir. Bu gibi durumlarda, PushEngage SDK'yı ana Uygulama Dosyanızda başlatabilirsiniz. İşte SwiftUI'de bir örnek

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

Not: Uygulamanızı geliştirirken, hata ayıklama amacıyla PushEngage SDK'dan gelen günlükleri etkinleştirmek faydalı olabilir. Ancak, hassas bilgilerin açığa çıkmasını önlemek için üretim derlemesinde günlükleri devre dışı bırakmak önemlidir.

Bildirim Hizmeti Uzantısı Oluşturma

Notification Service Extension, iOS uygulamanızın bildirim alma yeteneğini geliştirir. Bu, bildirim içeriğini değiştirmek veya bildirim alırken herhangi bir veriyi almak/işlemek için kullanılır. Bir Bildirim Hizmeti Uzantısı oluşturmak için aşağıdaki adımları izleyebilirsiniz:

1. Xcode'u açın ve projenize gidin. Menüden Dosya » Yeni » Hedef'i seçin.

2. Şablon seçim penceresinde, Bildirim Hizmeti Uzantısı'nı seçin ve İleri'ye tıklayın.

3. Uzantınız için bir ad sağlayın, örneğin, PushEngageNotificationServiceExtension ve Son'a tıklayın.

4. Bildirim Hizmeti Uzantısı'nı oluşturmayı bitirdiğinizde, etkinleştirmeniz istenebilir. Hemen etkinleştirmeyin.

Uzantıyı etkinleştirmek, Xcode'un hata ayıklama odağını uygulamanızdan uzantıya kaydıracaktır. Yanlışlıkla etkinleştirirseniz, endişelenmeyin; Xcode içinde uygulamanızın hata ayıklamasına geri dönebilirsiniz.

Bildirim Hizmeti Uzantısı için PushEngage SDK'sını Başlatma

iOS Bildirim Hizmeti Uzantınızda PushEngage SDK'nın düzgün çalışmasını sağlamak için şu adımları izlemeniz gerekir:

1. Projenizle ilişkili Podfile'ı açın.

2. Ardından Bağımlılık eklemeniz gerekir. Aşağıdaki kod parçasını Podfile'ınıza ekleyin:

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. Kök proje dizininizdeki terminalde aşağıdaki komutları çalıştırın:

pod repo update
pod install

4. Bildirim Hizmeti Uzantısı hedefinizde, PushEngage çerçevesini içe aktarın ve gerekli başlatma kodunu ekleyin. İşte nasıl yapabileceğiniz.

Swift Kullanarak

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)
        }
    }

}

Objective-C Kullanarak

#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

Bildirim İçeriği Uzantısı Oluşturma

Özel kullanıcı arayüzü ekleyerek iyileştirmek için bir Bildirim İçeriği Uzantısı oluşturmanız gerekecektir. Uzantıyı ayarlamak için aşağıdaki adımları izleyin:

1. Xcode'da Dosya » Yeni » Hedef'e gidin.

2. Bildirim İçeriği Uzantısı'nı seçin ve İleri'ye tıklayın.

3. Bitir'e tıkladıktan sonra görünen iletişim kutusunda “Etkinleştir” seçeneğini işaretlemeyin. İptal etmek, Xcode'un uygulamanızın hata ayıklamasını uzantı yerine uygulamanız için yapmasını sağlar. Yanlışlıkla etkinleştirirseniz, Xcode içinde uygulamanızın hata ayıklamasına geri dönün (çalıştırma düğmesinin yanında).

4. Proje gezgininde, en üst düzey proje dizinini seçin ve 2 numaralı adımdaki oluşturulan hedef listesinden projede NotificationContentExtension hedefini seçin.

5. Dağıtım Hedefini iOS 10 veya üstü olarak ayarlayın; bu, Apple'ın bu uzantı desteğini yayınladığı iOS sürümüdür. 

Bildirim İçeriği Uzantısı için PushEngage SDK'sını Başlatma

PushEngage SDK'nın iOS Bildirim İçeriği Uzantınızda düzgün çalışmasını sağlamak için şu adımları izlemeniz gerekir:

1. Projenizle ilişkili Podfile'ı açın.

2. Bağımlılık Ekle, Podfile'ınıza aşağıdaki kod parçasını ekleyin:

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

3. Kök proje dizininizdeki terminalde aşağıdaki komutları çalıştırın:

pod repo update

pod install

4. Bildirim İçeriği Uzantısı hedefinizde, PushEngage çerçevesini içe aktarın ve gerekli başlatma kodunu ekleyin. İşte UI öğeleri örnekleriyle bunu nasıl yapabileceğiniz:

Swift Kullanarak

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

Uygulama Grupları Ekle

Uygulama Grupları, ana uygulama, bildirim hizmeti uzantısı ve içerik uzantısı arasındaki iletişim için esastır. Uygulama Gruplarını iOS projenize eklemek için şu adımları izleyebilirsiniz:

Mevcut bir uygulama grubunuz varsa ve yalnızca onu kullanmak istiyorsanız, 5 numaralı adıma atlayın.

1. Xcode projenizde, proje gezgininde, üst düzey proje dizinini seçin ve uygulamanın ana hedefini seçin.

2. İmzalama ve Yetenekler sekmesine gidin.

3. "+ Yetenek" düğmesine tıklayın ve listeden Uygulama Grupları'nı seçin.

4. Bir Uygulama Grubu eklemek için + düğmesine tıklayın. Uygulama Grubunuza benzersiz bir ad ekleyin ve Tamam'a tıklayın.

5. Ana düzenleyici alanında, uygulamanızın ana hedefini seçin ve bir uygulama grubu oluşturun. Lütfen grubun adını uygulamanızın Info.plist dosyasına PushEngage_App_Group_Key anahtarıyla sağlayın.

6. Aynı anahtarı ve değeri Bildirim Hizmeti Uzantısının Info.plist dosyasına ekleyin.

7. Ana Uygulama Hedefinde ve Bildirim Hizmeti Uzantınızda aynı uygulama grubunu seçin.

Yukarıdaki adımda bildirim hizmeti uzantınızı seçtiğinizden emin olun.

Derin Bağlantı

Derin bağlantı, abonelerinizin anlık bildirimlerle etkileşim kurduğunda doğrudan uygulamanın içindeki belirli bir ekrana veya belirlenmiş bir web sayfasına gitmelerini sağlar. Varsayılan olarak, geçerli bir URL sağlarsanız, abone o web sayfasına yönlendirilecektir.

Web URL'lerini İşleme:

  • URL, WKWebview kullanarak uygulama içinde yüklenecekse, Info.plist'te PushEngageInAppEnabled değerini YES olarak ayarlayın.
  • Abonenin URL'yi yüklemek için safari'ye yönlendirilmesini istiyorsanız, Info.plist'te PushEngageInAppEnabled değerini NO olarak ayarlayın. 
  • SDK, PushEngageInAppEnabled yapılandırmasına göre derin bağlantıyı işleyecekse, Info.plist'te PushEngageAutoHandleDeeplinkURL değerini YES olarak ayarlayın.
  • SDK'dan derin bağlantıyı işleme kontrolünü istemiyorsanız, Info.plist'te PushEngageAutoHandleDeeplinkURL değerini NO olarak ayarlayın.
  • Derin bağlantı geçerli bir URL değilse, didFinishLaunchingWithOptions yöntemi içindeki AppDelegate'de setNotificationOpenHandler kullanarak gezinmeyi yapılandırmanız gerekir. Bu, aşağıda gösterildiği gibi sağlanan dizeye göre belirli bir ekrana gitmenizi sağlar. Yapılandırılmazsa, SDK yalnızca uygulamayı açacaktır.
ios-deeplink

Swift Kullanarak:

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 Kullanarak :

@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

Bildirimleri Ön Planda İşleme

Bildirimler ön plandayken, cihaza bildirim uyarısı gösterip göstermeyeceğinize karar vermeniz gerekir. Ön planda bildirimleri işlemek için setNotificationWillShowInForgroundHandler kullanın

Tamamlama bloğu sizin tarafınızdan hiç çağrılmazsa, SDK tamamlama bloğunu 29 saniye sonra çağıracaktır. Her durumda, uygulama ön plandayken sessiz veya uyarı bildirimi.

Swift Kullanarak

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


Objective-C Kullanarak

@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

Sorun Giderme

Kapsüllemeyle İlgili Derleme Sorunlarını Çözme

Sorun:

Kapsüllemeyle ilgili derleme sorunları yaşıyorsunuz.

Çözüm:

  • Projenizi Xcode'da açın.
  • Derleme Ayarları'na gidin.
  • Kullanıcı Betik Kapsüllemesi seçeneğini bulun.
  • Bunu Hayır olarak ayarlayın.
Firebase ve PushEngage SDK'larında Yöntem Değiştirme ile İlgili Sorunlar

Sorun:

Hem Firebase SDK'sını hem de PushEngage SDK'sını ikisi için de etkinleştirilmiş yöntem değiştirme ile kullanıyorsunuz ve bu sorunlara neden oluyor.

Çözüm:

PushEngage SDK'sı için yöntem değiştirmeyi devre dışı bırakın ve PushEngage yöntemlerini işlemek için manuel adımları izleyin. Ayrıntılı talimatları şurada bulabilirsiniz:
PushEngage iOS SDK Belgeleri

iOS SDK'nın yeteneklerini daha fazla keşfetmek isterseniz, ayrıntılı API belgelerimize göz atabilirsiniz.

Sorun yaşamanız durumunda, lütfen buraya tıklayarak bizimle iletişime geçin. Destek ekibimiz size yardımcı olabilecektir.

Hala takıldınız mı? Nasıl yardımcı olabiliriz?
Son güncelleme: 9 Mart 2026

Web Sitenizden Ayrıldıktan Sonra Ziyaretçileri Etkileşimde Tutun ve Elde Tutun

Gözden kaçması zor Anlık Bildirimlerle her web ziyaretinin değerini artırın.

  • Sonsuza Kadar Ücretsiz Plan
  • Kolay Kurulum
  • 5 Yıldız Destek