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 33 Next »

In-App Message

In-App Messages, doğrudan mobil uygulamanızda etkin olduklarında kullanıcılarınıza gösterilen bildirimlerdir. In-App Message özelliğini etkinleştirmek için createAPI'yi çağırırken inAppNotificationsEnabled parametresinin değerini ayarlamanız gerekir.

import VisilabsIOS

func application(_ application: UIApplication, didFinishLaunchingWithOptions 
        launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        Visilabs.createAPI(organizationId: "YOUR_ORGANIZATION_ID", profileId: "YOUR_PROFILE_ID"
        , dataSource: "YOUR_DATASOURCE", inAppNotificationsEnabled: true, channel: "IOS"
        , requestTimeoutInSeconds: 30, geofenceEnabled: false, maxGeofenceCount: 20)
        return true
    }                                        

Her customEvent çağrısından sonra In-App Message olup olmadığı kontrol edilir. RMC yönetim panelinin https://intelligence.relateddigital.com/#Target/TargetingAction/TAList sayfasında In-App Message oluşturabilir ve özelleştirebilirsiniz.

12 farklı In-App Message tasarımı mevcut:

Pop-up - Görsel, Başlık, Yazı & Buton

Mini - İkon & Yazı

Tam Ekran Görsel

Tam Ekran Görsel ve Buton

Pop-up - Görsel, Başlık, Yazı ve Buton

Pop-up Anket

Pop-up - Yazı ve Butonlu NPS

Native Alert & Action Sheet

1-10 Puanlama NPS

Yıldızlı Anket & İkinci Popup

Yarım Ekran Görsel

Carousel

Video In-App

Eğer inappler için eklediğiniz linkleri kendiniz yönetmek isterseniz aşağıdaki adımı uygulayabilirsiniz.

Öncelikle delegate metodunu çağırmalısınız.

Visilabs.callAPI().inappButtonDelegate = self                                 

Ardından extension bloğunu ekleyip aşağıdaki kodu kendinize göre düzenleyebilirsiniz.

extension EventViewController: VisilabsInappButtonDelegate {
    func didTapButton(_ notification: VisilabsInAppNotification) {
        print("notification did tapped...")
        print(notification)
    }
}

In-App Custom Font Kullanımı

Öncelikle In-App’te kullanmak istediğiniz fontu projenizin root dizinine atın.

Ardından root dizine attığınız fontu Info.plist’te uzantısı (.ttf veya .otf) ile beraber tanımlamanız gerekmektedir. Örn: Sydney.ttf

<key>UIAppFonts</key>
	<array>
		<string>FONT_NAME</string>
	</array>

Favori Özellikler Aksiyonu

RMC panelindeki https://intelligence.relateddigital.com/#Target/TargetingAction/TAList/ bölümünden tanımladığınız Favori Özellik Aksiyonu türündeki Target Aksiyonu favori özelliklerine aşağıdaki gibi mobil uygulama üzerinden erişebilirsiniz.

Visilabs.callAPI().getFavoriteAttributeActions { (response) in
    if let error = response.error {
        print(error)
    } else {
        if let favoriteBrands = response.favorites[.brand] {
            for brand in favoriteBrands {
                print(brand)
            }
        }
        if let favoriteCategories = response.favorites[.category] {
            for category in favoriteCategories {
                print(category)
            }
        }
    }
}

Target Aksiyonun ID’sini belirterekte favori özellik aksiyonunun özelliklerine erişebilirsiniz.

Visilabs.callAPI().getFavoriteAttributeActions(actionId: 188) { (response) in
    if let error = response.error {
        print(error)
    } else {
        if let favoriteBrands = response.favorites[.brand] {
            for brand in favoriteBrands {
                print(brand)
            }
        }
        if let favoriteCategories = response.favorites[.category] {
            for category in favoriteCategories {
                print(category)
            }
        }
    }
}

Favori Özellikler Aksiyonu enum olarak aşağıdaki değerleri döner.

public enum VisilabsFavoriteAttribute: String {
    case ageGroup
    case attr1
    case attr2
    case attr3
    case attr4
    case attr5
    case attr6
    case attr7
    case attr8
    case attr9
    case attr10
    case brand
    case category
    case color
    case gender
    case material
    case title
}

Story Manager

Story Banner ve Story Aksiyonu

Hikaye Aksiyonu, uygulamanız içerisinde iOS cihazlarda görüntülenebilecek “Story” widgetları eklemenize olanak sağlar. getStoryView metodu, UIView altsınıfı olan VisilabsStoryHomeView örneğini döndürür.

let storyView = Visilabs.callAPI().getStoryView()
view.addSubview(storyView)

Ayrıca Target Aksiyonu ID’sine göre de istediğiniz bir Hikaye Aksiyonunu çağırabilirsiniz.

let storyView = Visilabs.callAPI().getStoryView(actionId: 67)
view.addSubview(storyView)

Tıklanabilir bir URL eklerseniz, bunu tarayıcıda açmak için framework veya direkt deeplink ile yönetebilirsiniz. Ancak kendi tarafınızda yönetebilmek için VisilabsStoryURLDelegate'e uyan classlara aşağıdaki kodu eklemeniz gereklidir.

extension StoryViewController: VisilabsStoryURLDelegate {
    func urlClicked(_ url: URL) {
        //TO DO
    }
}

Bu eklenti sonrasında urlDelegate self ayarlaması yapın.

let storyView = Visilabs.callAPI().getStoryView(actionId: 67, urlDelegate: self)
view.addSubview(storyHomeView)

VisilabsStoryURLDelegate eklenmesi sonrasında tıklanabilir URL SDK tarafından işlenmez!

Mail Üyelik Formu

RMC panelden in-app message’da olduğu gibi mail üyelik formunu oluşturduktan sonra her customEvent çağırdığınız zaman mail üyelik formu olup olmadığı kontrol edilir ardından mail üyelik formu gösterilir.

Çarkıfelek

RMC panelden in-app message’da olduğu gibi çarkıfelek oluşturduktan sonra her customEvent çağırdığınız zaman çarkıfelek olup olmadığı kontrol edilir ardından çarkıfelek gösterilir.

Çarkıfelek Yarım Görünüm

Çarkıfelek Tam Görünüm

Kazı Kazan

RMC panelden in-app message’da olduğu gibi kazı kazan oluşturduktan sonra her customEvent çağırdığınız zaman kazı kazan olup olmadığı kontrol edilir ardından kazı kazan gösterilir.

Inline Nps With Numbers

To display an Inline Nps with Numbers view, you can call the getNpsWithNumbersView method, which takes a properties parameter of type [String: String], a delegate parameter containing the npsItemClicked method, and a completionHandler that receives an optional VisilabsNpsWithNumbersContainerView object.

The delegate parameter is used to handle button click event, and contains a method called npsItemClicked that is triggered when the user taps on a button.

The completionHandler receives an optional VisilabsNpsWithNumbersContainerView object, which is only returned if there is an action matching the given criteria. If there is no matching action, the completionHandler will return nil.

Visilabs.callAPI().getNpsWithNumbersView(properties: props, delegate: self){ npsView in
    DispatchQueue.main.async {
        if let npsView = npsView {
            self.npsView = npsView
            self.npsView = npsView
            self.view.addSubview(npsView)
            npsView.translatesAutoresizingMaskIntoConstraints = false
            npsView.topAnchor.constraint(equalTo: self.npsWithNumbersButton.bottomAnchor, constant: -50).isActive = true
            npsView.widthAnchor.constraint(equalTo: self.view.saferAreaLayoutGuide.widthAnchor).isActive = true
            npsView.heightAnchor.constraint(equalToConstant: 550).isActive = true
        } else {
            print("There is no nps action matching your criteria.")
        }
    }
}
extension NpsViewController: VisilabsNpsWithNumbersDelegate {
    func npsItemClicked(npsLink: String?) {
        print(npsLink)
    }
}

Ürün Durum Bilgisi

RMC Panelde tanımladığınız Ürün Durum Bilgisi aksiyonu Ürün Görüntüleme, Sepete Ekleme ve Favoriye Ekleme/Çıkarma eventlerinde çalışmaktadır. Bu eventlerde ürün idnin gönderildiğinden emin olmalısınız.

Geofencing

Uygulamanızda konum hizmetlerini etkinleştirmek için öncelikle aşağıdaki anahtarları Info.plist dosyanıza eklemeniz gerekir.

  • NSLocationAlwaysAndWhenInUseUsageDescription

  • NSLocationWhenInUseUsageDescription

Bu izinlerin örnek uygulaması aşağıdaki gibidir:

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>We need access to your location for better user experience.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>We need access to your location for better user experience.</string>

Ayrıca bölgeleri izlemek, bölge listesini yenilemek ve push bildirimlerini almak için Info.plist dosyanızda UIBackgroundModes altına aşağıdaki anahtarları eklemeniz gerekir.

<array>
    <string>fetch</string>
    <string>location</string>
    <string>remote-notification</string>
</array>

Visilabs SDK'yı başlatırken createAPI yönteminin geofenceEnabled parametresini true olarak ayarlamanız gerekir. Ayrıca maxGeofenceCount değerini 20'den daha düşük bir değerle değiştirebilirsiniz. Apple, herhangi bir uygulamanın aynı anda 20'den fazla bölgeyi izlemesini engeller. Visilabs tüm bu yuvaları kullanabilir.

import VisilabsIOS

func application(_ application: UIApplication, didFinishLaunchingWithOptions 
        launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        Visilabs.createAPI(organizationId: "YOUR_ORGANIZATION_ID", profileId: "YOUR_PROFILE_ID"
        , dataSource: "YOUR_DATASOURCE", inAppNotificationsEnabled: false, channel: "IOS"
        , requestTimeoutInSeconds: 30, geofenceEnabled: true, maxGeofenceCount: 20)
        return true
    }                                        

Recommendation

Ürün önerileri, SDK’nın recommend metoduyla elde edilir. Ürün önerilerini almak için zoneId, productCode ve complete olan 3 zorunlu argümanı iletmelisiniz.

completion parametresi, bir VisilabsRecommendationResponse örneğini girdi olarak alan ve hiçbir şey döndürmeyen bir kapatma ifadesidir. VisilabsRecommendationResponse'un yapısı aşağıda gösterilmiştir:

public class VisilabsRecommendationResponse {
    public var products: [VisilabsProduct]
    public var error: VisilabsError?
    public var widgetTitle: String = ""
    
    internal init(products: [VisilabsProduct], widgetTitle: String = "", error: VisilabsError? = nil) {
        self.products = products
        self.widgetTitle = widgetTitle
        self.error = error
    }
}

VisilabsProduct sınıfı aşağıdaki özelliklere bakar:

Property

Type

code

String

title

String

img

String

dest_url

String

brand

String

price

Double

dprice

Double

cur

String

dcur

String

freeshipping

Bool

samedayshipping

Bool

rating

Int

comment

Int

discount

Double

attr1

String

attr2

String

attr3

String

attr4

String

attr5

String

Completion yönteminde verilen argümanlar için önerilen ürünler mevcutsa, ürün dizisini işlemeniz gerekir.

Visilabs.callAPI().recommend(zoneID: "6", productCode: "pc", filters: []){ response in
    if let error = response.error {
        print(error)
    }else{
        print("Recommended Products")
        for product in response.products{
            print("product code: \(product.code) title: \(product.title)")
        }
    }
}

Recommend metodu için bir dizi filtre de iletebilirsiniz. Örneğin, aşağıdaki uygulama yalnızca başlıkta laptop içeren ürünleri döndürür.

var filters = [VisilabsRecommendationFilter]()
let filter = VisilabsRecommendationFilter(attribute: .PRODUCTNAME, filterType: .like, value: "laptop")
filters.append(filter)
var properties = [String: String]()
properties["key"] = "value"
Visilabs.callAPI().recommend(zoneID: "6", productCode: "pc", filters: filters, properties: properties){ response in
    if let error = response.error{
        print(error)
    }else{
        print("Widget Title: \(response.widgetTitle)")
        print("Recommended Products")
        for product in response.products{
            print("product code: \(product.code) title: \(product.title)")
        }
    }
}

Attribute

Fonksiyon

Açıklama

.PRODUCTCODE

Ürün koduna göre filtreleme yapar

.PRODUCTNAME

Ürün ismine göre filtreleme yapar

.COLOR

Ürün rengine göre filtreleme yapar

.AGEGROUP

Ürün yaş grubuna göre filtreleme yapar

.BRAND

Ürün markasına göre filtreleme yapar

.CATEGORY

Ürün kategorisine göre filtreleme yapar

.GENDER

Ürün cinsiyetine göre filtreleme yapar

.MATERIAL

Ürün material kolonuna göre filtreleme yapar

.ATTRIBUTE1

Ürün attribute1 kolonuna göre filtreleme yapar

.ATTRIBUTE2

Ürün attribute2 kolonuna göre filtreleme yapar

.ATTRIBUTE3

Ürün attribute3 kolonuna göre filtreleme yapar

.ATTRIBUTE4

Ürün attribute4 kolonuna göre filtreleme yapar

.ATTRIBUTE5

Ürün attribute5 kolonuna göre filtreleme yapar

.SHIPPINGONSAMEDAY

Ürünün aynı gün kargo kolonuna göre filtreler

.FREESHIPPING

Ürünün ücretsiz kargo durumuna göre filtreler

.ISDISCOUNTED

Ürün indirim durumuna göre filtreleme yapar

Filter Type

Fonksiyon

Açıklama

.like

Verilen değer, seçilen kolonun içerisinde geçiyor mu kontrolü yapar.

.notLike

Verilen değer, seçilen kolonun içerisinde geçmiyor mu kontrolü yapar.

.equals

Verilen değer, seçilen kolondaki değere tam eşit mi kontrolü yapar.

.notEquals

Verilen değer, seçilen kolondaki değere tam eşit değil mi kontrolü yapar.

.greaterThan

Verilen değer, seçilen kolondaki değerden daha büyük mü kontrolü yapar.

.lessThan

Verilen değer, seçilen kolondaki değerden daha küçük mü kontrolü yapar.

.greaterOrEquals

Verilen değer, seçilen kolondaki değerden daha büyük veya eşit mi kontrolü yapar.

.lessOrEquals

Verilen değer, seçilen kolondaki değerden daha küçük veya eşit mi kontrolü yapar.

Recommendation Click Raporları

Widgetta bulunan ürünlere tıklama sonrası panelde raporları görüntüleyebilmek için aşağıdaki kodu recommend metodu içerisinde çağırmanız gerekmektedir.

Visilabs.callAPI().trackRecommendationClick(qs: product.qs)
  • No labels