Notification Service Extension Ekleme
Notification Service Extension zengin push mesajları(görsel, video) almanıza yardımcı olur.
Xcode’u açın ve File > New > Target adımını izleyin
Notification Service Extension'ı seçin ve Next butonuna tıklayın.
Product Name alanına NotificationService yazın ve Finish butonuna tıklayın.
Finish butonuna tıkladıktan sonra açılacak diyalog penceresinde Cancel butonuna basın.
Eğer Activate butonuna tıklarsanız uygulama Target'ı NotificationService olacaktır. Bu bir sorun değildir. Scheme alanından uygulamanızı seçerek düzeltebilirsiniz.
Sol menüden projenizi seçin açılan alanda TARGETS altından NotificationService’i seçin. Deployment Info bölümünde Target alanını iOS 11.0 yapın.
NotificationService.swift dosyasını açın ve içerisindeki kodları aşağıdaki kodlarla değiştirin.
Code Block | ||
---|---|---|
| ||
import UserNotificationsRelatedDigitalIOS import RelatedDigitalIOSUserNotifications class NotificationService: UNNotificationServiceExtension { var contentHandler: ((UNNotificationContent) -> Void)? var bestAttemptContent: UNMutableNotificationContent? override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) { self.contentHandler = contentHandler bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent) DispatchQueue.main.async { RelatedDigital.initialize(organizationId: "YOUR_ORGANIZATION_ID"urlConstant.shared.organizationId, profileId: "YOUR_PROFILE_ID"urlConstant.shared.profileId, dataSource: "YOUR_DATA_SOURCEvisistore", launchOptions: nil) RelatedDigital.enablePushNotifications(appAlias: "YOUR_APP_ALIASRDIOSExample", launchOptions: nil, appGroupsKey: "YOUR_APP_GROUPS_KEY")group.com.relateddigital.RelatedDigitalExample.relateddigital") RDPush.didReceive(self.bestAttemptContent, withContentHandler: contentHandler) } } override func serviceExtensionTimeWillExpire() { guard let contentHandler = self.contentHandler else { return; } guard let bestAttemptContent = self.bestAttemptContent else { return; } contentHandler(bestAttemptContent) } } |
Notification Content Extension Ekleme
Not: Eğer push mesajı gönderimlerinizde Carousel Push kullanacaksanız bunu eklemeniz zorunludur.
Xcode’u açın ve File > New > Target adımını izleyin
Notification Content Extension'ı seçin ve Next butonuna tıklayın.
Pproduct Name alanına NotificationContent yazın ve Finish butonuna tıklayın.
Finish butonuna tıkladıktan sonra açılacak diyalog penceresinde Cancel butonuna tıklayın.
Eğer Activate butonuna tıklarsanız uygulama Target'ı NotificationContent olacaktır. Bu bir sorun değildir. Scheme alanından uygulamanızı seçerek düzeltebilirsiniz.
Sol menüden projenizi seçin açılan alanda TARGETS altından NotificationContent’i seçin. Deployment Info bölümünde Target alanını iOS 11.0 yapın.
MainInterface.storyboard ve NotificationContent.swift dosyalarını silin. Ardından NotificationContent klasörü altına RDNotificationViewController isminde swift dosyası oluşturun. Info.plist dosyasını bu linkteki ile aynı olduğuna dikkat ediniz.
Objective-C Bridging Header oluşturma sorulursa Don’t Create butonuna tıklayın.
EMNotificationViewController.swift açın ve içerisindeki kodları aşağıdaki ile değiştirin.
Code Block | ||
---|---|---|
| ||
import UIKit import UserNotifications import UserNotificationsUI import RelatedDigitalIOS @objc(RDNotificationViewController) class RDNotificationViewController: UIViewController, UNNotificationContentExtension { let carouselView = PushNotificationCarousel.initView() var completion: ((_ url: URL?, _ bestAttemptContent: UNMutableNotificationContent?) -> Void)? var notificationRequestIdentifier = "" func didReceive(_ notification: UNNotification) { notificationRequestIdentifier = notification.request.identifier RelatedDigital.initialize(organizationId: "YOUR_ORGANIZATION_ID", profileId: "YOUR_PROFILE_ID", dataSource: "YOUR_DATA_SOURCE", launchOptions: nil) RelatedDigital.enablePushNotifications(appAlias: "YOUR_APP_ALIAS", launchOptions: nil, appGroupsKey: "YOUR_APP_GROUPS_KEY") carouselView.didReceive(notification) } func didReceive(_ response: UNNotificationResponse, completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void) { carouselView.didReceive(response, completionHandler: completion) } override func loadView() { completion = { [weak self] url, bestAttemptContent in if let identifier = self?.notificationRequestIdentifier { UNUserNotificationCenter.current().removeDeliveredNotifications(withIdentifiers: [identifier]) UNUserNotificationCenter.current().getDeliveredNotifications(completionHandler: { notifications in bestAttemptContent?.badge = NSNumber(value: notifications.count) }) } if let url = url { if #available(iOSApplicationExtension 12.0, *) { self?.extensionContext?.dismissNotificationContentExtension() } self?.extensionContext?.open(url) } else { if #available(iOSApplicationExtension 12.0, *) { self?.extensionContext?.performNotificationDefaultAction() } } } carouselView.completion = completion carouselView.delegate = self self.view = carouselView } } /** Add if you want to track which carousel element has been selected */ extension RDNotificationViewController: PushCarouselDelegate { func selectedItem(_ element: RDPushMessage.Element) { // Add your work... print("Selected element is => \(element)") } } |
...
Code Block | ||
---|---|---|
| ||
RelatedDigital.setEmail(email: "test@relateddigital.com", permission: true) RelatedDigital.setEuroUserId(userKey: "1234567890") RelatedDigital.sync() |
Mobil kanaldan gelen datalarınızın RMC'ye yüklenebilmesi için, aktif RMC hesabınızda kullanmış olduğunuz referans değeriniz ne ise (KEY_ID* veya E-Mail) mobil kanaldan gelen dataların da bu referans ile gelmesine dikkat ediniz."
*KEY_ID: Uygulama sahibi tarafından müşterisinin tekilleştirilmesi için kullanılan id değerleridir. Bunlar CRM id, userid, customerid, accountid gibi farklı isimlerle ifade ediliyor olabilir.
...