/
In App Notifications Modülü

In App Notifications Modülü

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 RelatedDigital.initialize metodundan hemen sonra aşağıdaki kodu ekleyin.

RelatedDigital.inAppNotificationsEnabled = 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

Kulakçık

 

 

 

 

 

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.

RelatedDigital.inappButtonDelegate = self

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

extension YOUR_VIEW_CONTROLLER: RDInappButtonDelegate { func didTapButton(_ notification: RDInAppNotification) { 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.

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

İsterseniz Target Aksiyonun ID’sini belirterek favori özellik aksiyonunun özelliklerine erişebilirsiniz.

 

RelatedDigital.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 RDStoryHomeView örneğini döndürür.

let storyView = RelatedDigital.getStoryView() view.addSubview(storyView)

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

let storyView = RelatedDigital.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 RDStoryURLDelegate’e uyan classlara aşağıdaki kodu eklemeniz gereklidir.

extension YOUR_VIEW_CONTROLLER: RDStoryURLDelegate { func urlClicked(_ url: URL) { print("You can handle url as you like!") } }

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

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

RDStoryURLDelegate 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 (Spin To Win)

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

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

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

Çarkıfelek’te slice’dan gelen linki almak için aşağıdaki adımı izleyebilirsiniz ve kullanıcılarınız istediğiniz sayfaya yönlendirebilirsiniz.

func sliceListener() { NotificationCenter.default.addObserver(forName: Notification.Name("InAppLink"), object: nil, queue: .main) { notification in if let userInfo = notification.userInfo, let link = userInfo["link"] as? String { print("Received InAppLink: \(link)") } } }

Kazı Kazan (Scratch To Win)

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.

 

Hediye Yağmuru (Gift Rain)

RMC panel üzerinden oluşturduğunuz kazı-kazan aksiyonunu aşağıdaki gibi tetikleyebilirsiniz.

 

App Banner

App Banner aksiyonunu kullanmak için öncelikle uygulamanızda istediğiniz bir alanda UIView oluşturup eklemeniz gerekmektedir. Ardından getBannerView metodunu çağırarak bannerları bu UIView içerisinde gösterebilirsiniz. Aşağıda örnek olarak bir UIView oluşturma ve bu UIView içerisinde bannerları göstermeyi bulabilirsiniz.

let bannerView = UIView() bannerView.translatesAutoresizingMaskIntoConstraints = false self.view.addSubview(bannerView) NSLayoutConstraint.activate([bannerView.topAnchor.constraint(equalTo: self.view.topAnchor,constant: 80), bannerView.heightAnchor.constraint(equalToConstant: 80), bannerView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor), bannerView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor)]) bannerView.backgroundColor = .black var props = [String:String]() props["OM.inapptype"] = "banner_carousel" RelatedDigital.getBannerView(properties: props) { banner in if let banner = banner { banner.delegate = self banner.translatesAutoresizingMaskIntoConstraints = false bannerView.addSubview(banner) NSLayoutConstraint.activate([banner.topAnchor.constraint(equalTo: bannerView.topAnchor), banner.bottomAnchor.constraint(equalTo: bannerView.bottomAnchor), banner.leadingAnchor.constraint(equalTo: bannerView.leadingAnchor), banner.trailingAnchor.constraint(equalTo: bannerView.trailingAnchor)]) } }

Dilerseniz properties parametresi ile ekstra query parametreleri gönderebilirsiniz. Eğer kullanmak istemezseniz properties parametresini properties: [String:String] olarak değiştirebilirsiniz.

Kullanıcılarınız bannera click işlemini gerçekleştirdiğinde deeplinklerin sizin tarafınızdan handle edilip yönlendirme yapılması gerekmektedir. Bunun için ilgili class’a BannerDelegate’i eklemelisiniz.

class ViewController: UIViewController, BannerDelegate

Ardından aşağıdaki fonksiyonu ekleyerek kendinize göre düzenleyebilirsiniz.

func bannerItemClickListener(url: String) { print(url) }

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

Recommendation

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

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

Property

Type

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.

RelatedDigital.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 = [RDRecommendationFilter]() let filter = RDRecommendationFilter(attribute: .PRODUCTNAME, filterType: .like, value: "laptop") filters.append(filter) var properties = [String: String]() properties["key"] = "value" RelatedDigital.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)") } } }

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.

RelatedDigital.trackRecommendationClick(qs: product.qs)

 

Copyright 2020 Related Digital