Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

Eğer Euromsg SDK 2.0.0 versiyonundan düşük bir versiyon kullanıyorsanız buraya gidin.

Adım 1 - Gerekenler

iOS Mobil Uygulaması & Xcode

P12 dosyası & şifresi. P12 Dosyası oluşturmak için tıklayın

AppAlias (RMC Panelinden alınacak) Eğer bir hesabınız bulunmuyorsa satış temsilcimizle iletişime geçebilirsiniz. Buraya tıklayın.

Adım 2 - Kurulum

2.1 Euromsg SDK’sı Cocoapods aracılığıyla kurulmaktadır. Aşağıdaki kodu Podfile dosyanıza ekledikten sonra pod install diyerek kurabilirsiniz.

pod 'Euromsg', '>= 2.0.0'

Adım 3 - Uygulamanızı RMC Panele Ekleme

İlk olarak, RMC Panelde sağ üstteki çark ikonu üzerine gelerek Kampanya Yönetimi > Kampanya Ayarları > Push Uygulamaları menüsünden Yeni iOS Uygulaması butonuna tıklayın. RMC uygulamanızı App Alias üzerinden tanır burada uygulamanız için sadece size ait olacak bir App Alias belirleyin.

Adım 4 - Kullanım

Notification Service Extension Ekleme

Notification Service Extension zengin push mesajları(görsel, video) almanıza yardımcı olur.

  1. Xcode’u açın ve File > New > Target adımını izleyin

  2. Notification Service Extension'ı seçin ve Next butonuna tıklayın.

  3. Product Name alanına NotificationService yazın ve Finish butonuna tıklayın.

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

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

  6. NotificationService.swift dosyasını açın ve içerisindeki kodları aşağıdaki kodlarla değiştirin.

import UserNotifications
import Euromsg

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)
        Euromsg.didReceive(bestAttemptContent, withContentHandler: contentHandler)
    }
    
    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 bestAttemptContent =  bestAttemptContent {
            Euromsg.didReceive(bestAttemptContent, withContentHandler: contentHandler)
        }
    }
}

Notification Content Extension Ekleme

Not: Eğer push mesajı gönderimlerinizde Carousel Push kullanacaksanız bunu eklemeniz zorunludur.

  1. Xcode’u açın ve File > New > Target adımını izleyin

  2. Notification Content Extension'ı seçin ve Next butonuna tıklayın.

  3. Pproduct Name alanına NotificationContent yazın ve Finish butonuna tıklayın.

  4. Finish butonuna tıkladıktan sonra açılacak diyalog penceresinde Cancel butonuna tıklayın.

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

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

  6. MainInterface.storyboard ve NotificationContent.swift dosyalarını silin. Ardından NotificationContent klasörü altına EMNotificationViewController isminde swift dosyası oluşturun.

    Objective-C Bridging Header oluşturma sorulursa Don’t Create butonuna tıklayın.

  7. EMNotificationViewController.swift açın ve içerisindeki kodları aşağıdaki ile değiştirin.

import UIKit
import UserNotifications
import UserNotificationsUI
import Euromsg

@available(iOS 10.0, *)
@objc(EMNotificationViewController)
class EMNotificationViewController: UIViewController, UNNotificationContentExtension {

    let appUrl = URL(string: "euromsgExample://")
    let carouselView = EMNotificationCarousel.initView()
    var completion: ((_ url: URL?, _ userInfo: [AnyHashable: Any]?) -> Void)?
    func didReceive(_ notification: UNNotification) {
        carouselView.didReceive(notification)
    }
    func didReceive(_ response: UNNotificationResponse,
                    completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void) {
        carouselView.didReceive(response, completionHandler: completion)
    }
    override func loadView() {
        completion = { [weak self] url, userInfo in
            if let url = url {
                self?.extensionContext?.open(url)
                if url.scheme != self?.appUrl?.scheme, let userInfo = userInfo {
                    Euromsg.handlePush(pushDictionary: userInfo)
                }
            }
            else if let url = self?.appUrl {
                self?.extensionContext?.open(url)
            }
        }
        carouselView.completion = completion
        self.view = carouselView
    }
}

NotificationContent ve NotificationService için Euromsg SDK’sını eklemeliyiz. Podfile dosyanızı aşağıdaki şekilde düzenleyin ve tekrar terminalden proje dizininize giderek pod install yazarak enter tuşuna basın.

AppDelegate.swift

İlk olarak Euromsg ve UserNotifications'ı AppDelegeta’e eklemeliyiz

import Euromsg
import UserNotifications

class AppDelegate’in sonuna UNUserNotificationCenterDelegate eklemelisiniz. Alt satırda örneğini görebilirsiniz.

class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate

Aşağıdaki kod didFinishLaunchingWithOptions fonksiyonunun içerisine ekleyin.

        UNUserNotificationCenter.current().delegate = self
        
        Euromsg.configure(appAlias: "YOUR_APP_ALIAS", enableLog: true)
        Euromsg.registerForPushNotifications()
        Euromsg.askForNotificationPermission()
        if #available(iOS 13, *) {
            // handle push for iOS 13 and later in sceneDelegate
        }
        else if let userInfo = launchOptions?[UIApplication.LaunchOptionsKey.remoteNotification] as? [String: Any] {
            Euromsg.handlePush(pushDictionary: userInfo)
        }
        return true

Eğer kullanıcılar bildirim göndermeye izin verirse aşağıdaki metod çalışır ve APNS’ten token alınarak Euromessage sistemlerine kaydolur.

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        Euromsg.registerToken(tokenData: deviceToken)
    }

RMC paneli üzerinden kullanıcılarınızın push mesajlarına tıklayıp tıklamadıklarını raporlayabilmek için aşağıdaki kodları ekleyin.

 func application(_ application: UIApplication,
                     didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
        Euromsg.handlePush(pushDictionary: userInfo)
    }

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

    func userNotificationCenter(_ center: UNUserNotificationCenter,
                                willPresent notification: UNNotification,
                                withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler([.alert, .badge, .sound])
    }
    
    func userNotificationCenter(_ center: UNUserNotificationCenter,
                                didReceive response: UNNotificationResponse,
                                withCompletionHandler completionHandler: @escaping () -> Void) {
        Euromsg.handlePush(pushDictionary: response.notification.request.content.userInfo)
        completionHandler()
    }

SceneDelegate.swift

willConnectTo fonksiyonun içerisine aşağıdaki kod bloğunu ekleyin.

if #available(iOS 13, *),
    let userInfo = connectionOptions.notificationResponse?.notification.request.content.userInfo {
    Euromsg.handlePush(pushDictionary: userInfo)
}    

RMC’ye bilgi gönderme

Aşağıdaki kodu kullanıcı uygulamanıza üye olduğunda, üye girişi yaptığında ve uygulama ilk açılırken çalıştırın.

Not. : Hesabınızın referansına göre setEmail veya setEuroUserId metodlarından birini kullanmak zorundasınız.

Euromsg.setEmail(email: "test@relateddigital.com", permission: true)
        Euromsg.setEuroUserId(userKey: "1234567890")
        Euromsg.sync()

IYS E-Posta Kaydı

IYS kodunu Euromsg.sync() kodundan hemen önce ekleyiniz.

Euromsg.registerEmail(email: "example@email.com", permission: true)
//TICARI hesaplar için aşağıdaki kodu kullanınız
Euromsg.registerEmail(email: "example@commercial.com, permission: True, isCommercial: true)

İsteğe bağlı parametreler

setUserProperty: Kullanıcının demografik alanlarını doldurmanıza yardımcı olur.

setAppVersion: Kullanıcılarını uygulama versiyonunuza göre segmente etmenize ve raporlamaya yardımcı olur.

checkConfiguration: Kullanıcıların izin bilgilerini kontrol edebilirsiniz.

setPushNotification, setEmail, setPhoneNumber: Kullanıcıların izin durumlarını RMC’ye gönderebilirsiniz.

Euromsg.setUserProperty(key: "Key", value: "Value")
Euromsg.setAppVersion(appVersion: "1.0.0")
let conf = Euromsg.checkConfiguration()
conf.properties?.pushPermit
conf.properties?.emailPermit
conf.properties?.gsmPermit
Euromsg.setPushNotification(permission: true)
Euromsg.setEmail(permission: true)
Euromsg.setPhoneNumber(permission: true)

Push Kampanyası Cirolarının Panele Yansıması

Gelen push bildirimine tıkladıktan sonra yapılan satın almanın RMC panelinde Ciro alanına yansıması için aşağıdaki metodu kullanmanız gerekmektedir.

  1. Push ekranında bulunan Özel Parametreler alanına utm parametrelerini girmelisiniz.
    Örn: utm_medium=apppush;utm_source=related;utm_campaign=campaign_name
    Not: utm_campaign her seferinde farklı olması gerektiği için oluşturduğunuz push kampanyasının ID’sini değişken olarak kullanabilirsiniz. Bunun için <##CAMP_ID##> değişkenini isteğe bağlı bir şekilde kullanabilirsiniz.

  2. Push bildirimi tıklandıktan sonra size aşağıdaki gibi bir data dönecektir.

    Örnek Data:

    "pushId": df73706e-1138-40f2-b687-c10c43ee8138,
    "aps": {
        alert =     {
            body = Test;
            title = Test;
        };
        badge = 0;
        "content-available" = 0;
        "mutable-content" = 1;
         sound = "";
    },
    "pushType": Text,
    "url": ,
    "mediaUrl": ,
    "deepLink": ,
    "altUrl": ,
    "utm_campaign": campaign_name,
    "utm_medium": apppush,
    "utm_source": related
  3. Bu datayı aynı deeplink kullanımında olduğu gibi handle ederek utm parametrelerini pusha tıklandığında Visilabs’e event olarak göndermelisiniz. Örnek Visilabs event kodlarını alt satırda bulabilirsiniz.

    Objective-C

    NSMutableDictionary *properties = [[NSMutableDictionary alloc] init];
    [properties setObject:@"utm_campaign" forKey:@"campaign_name"];
    [properties setObject:@"utm_source" forKey:@"related"];
    [properties setObject:@"utm_medium" forKey:@"apppush"];
    [properties setObject:@"KeyID veya Email" forKey:@"OM.exVisitorID"]; //RMC sistemindeki referansınız
    [properties setObject:@"Kullanıcı Push Mesaj Tokenı" forKey:@"OM.sys.TokenID"];
    [properties setObject:@"AppAlias" forKey:@"OM.sys.AppID"];
    [[Visilabs callAPI] customEvent:@"Campaign" withProperties:properties];


    Swift

    var properties = [String:String]()
    properties["utm_campaign"] = "campaign_name"
    properties["utm_source"] = "related"
    properties["utm_medium"] = "apppush"
    properties["OM.exVisitorID "] = "KeyID veya Email" //RMC sistemindeki referansınız
    properties["OM.sys.TokenID"] = "Kullanıcı Push Mesaj Tokenı"
    properties["OM.sys.AppID"] = "AppAlias"
    Visilabs.callAPI().customEvent("Campaign", withProperties: NSMutableDictionary(dictionary: properties))

 

  • No labels