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) } } |
Ö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> |
1-10 Puanlama NPS - Inline özelliğini kullanmak için, [String: String] özelliğinde npsItemClicked
yöntemini içeren bir delegate
parametresi ve isteğe bağlı bir VisilabsNpsWithNumbersContainerView
nesnesi alan completionHandler
getNpsWithNumbersView
yöntemini çağırabilirsiniz.
delegate
parametresi, buton tıklamalarını işlemek için kullanılır ve kullanıcı butona tıkladığında tetiklenen npsItemClicked
adlı bir yöntem içerir.
completionHandler
ise yalnızca belirli ölçütlerle eşleşen bir eylem varsa döndürülen isteğe bağlı olarak VisilabsNpsWithNumbersContainerView
nesnesini içerir. Eşleşen bir eylem yoksa, completionHandler
sıfır döner.
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) } } |
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 } |
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.
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 |
---|---|
![]() | ![]() |
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.
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" Visilabs.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) } |
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.