Objective-C Projede Swift SDK'yı Kullanma
Swift SDK’mızı Objective-C projenizde kullanabilmek için öncelikle Swift SDKlarımız Cocoapods aracılığıyla yükleyin.
pod "Euromsg"
pod "VisilabsIOS"
Projeniz içerisinde Xcode menüsünde File > New > File adımlarını izleyerek yeni bir Swift File oluşturun. Bu dosyanın ismini RelatedDigitalAdapter olarak girin ve Create butonuna tıklayın.
Ardından size bir Bridging Header oluşturmak isteyip istemediğinizi soracak burada oluşturmak istediğinizi seçin.
Oluşturduğunuz RelatedDigitalAdapter.swift dosyasını açın ve aşağıdaki kodları kopyalayıp bu dosyaya yapıştırın.
import Euromsg
import Foundation
import VisilabsIOS
public class RelatedDigitalAdapter: NSObject {
@objc public class func initEuromsg(appAlias: String, launchOptions: [UIApplication.LaunchOptionsKey: Any]?, enableLog: Bool, appGroupsKey: String?) {
Euromsg.configure(appAlias: appAlias, launchOptions: launchOptions, enableLog: enableLog, appGroupsKey: appGroupsKey)
}
@objc public class func initVisilabs(organizationId: String, profileId: String, dataSource: String, inAppNotificationsEnabled: Bool, channel: String, requestTimeoutInSeconds: Int, geofenceEnabled: Bool, askLocationPermmissionAtStart: Bool, maxGeofenceCount: Int, isIDFAEnabled: Bool, loggingEnabled: Bool) {
Visilabs.createAPI(organizationId: organizationId, profileId: profileId, dataSource: dataSource, inAppNotificationsEnabled: inAppNotificationsEnabled, channel: channel, requestTimeoutInSeconds: requestTimeoutInSeconds, geofenceEnabled: geofenceEnabled, askLocationPermmissionAtStart: askLocationPermmissionAtStart, maxGeofenceCount: maxGeofenceCount, isIDFAEnabled: isIDFAEnabled, loggingEnabled: loggingEnabled)
Visilabs.callAPI().loggingEnabled = loggingEnabled
}
@objc public class func askForPushPermission(isProvisional: Bool) {
if isProvisional {
Euromsg.askForNotificationPermission(register: true)
} else {
Euromsg.askForNotificationPermissionProvisional(register: true)
}
}
@objc public class func registerToken(deviceToken: Data) {
Euromsg.registerToken(tokenData: deviceToken)
}
@objc public class func handlePush(pushDictionary: [AnyHashable: Any]) {
Euromsg.handlePush(pushDictionary: pushDictionary)
}
@objc public class func setEuroUserId(userId: String) {
Euromsg.setEuroUserId(userKey: userId)
Euromsg.sync()
}
@objc public class func setEmailWithPermission(email: String, permission: Bool) {
Euromsg.setEmail(email: email, permission: permission)
Euromsg.sync()
}
@objc public class func setEmail(email: String) {
Euromsg.setEmail(email: email)
Euromsg.sync()
}
@objc public class func setUserProperty(key: String, value: String) {
Euromsg.setUserProperty(key: key, value: value)
Euromsg.sync()
}
@objc public class func removeUserProperty(key: String) {
Euromsg.removeUserProperty(key: key)
Euromsg.sync()
}
@objc public class func setAppVersion(appVersion: String) {
Euromsg.setAppVersion(appVersion: appVersion)
Euromsg.sync()
}
@objc public class func setPushNotificationPermission(permission: Bool) {
Euromsg.setPushNotification(permission: permission)
}
@objc public class func setEmailPermission(permission: Bool) {
Euromsg.setEmail(permission: permission)
Euromsg.sync()
}
@objc public class func setPhoneNumberPermission(permission: Bool) {
Euromsg.setPhoneNumber(permission: permission)
Euromsg.sync()
}
@objc public class func setBadgeCount(badgeCount: Int) {
Euromsg.setBadge(count: badgeCount)
}
@objc public class func setAdvertisingIdentifier(identifier: String?) {
Euromsg.setAdvertisingIdentifier(adIdentifier: identifier)
Euromsg.sync()
}
@objc public class func setTwitterId(twitterId: String?) {
Euromsg.setTwitterId(twitterId: twitterId)
Euromsg.sync()
}
@objc public class func setFacebookId(facebookId: String?) {
Euromsg.setFacebook(facebookId: facebookId)
Euromsg.sync()
}
@objc public class func customEvent(pageName: String, properties: [String: String]) {
Visilabs.callAPI().customEvent(pageName, properties: properties)
}
@objc public class func recommend(zoneID: String,
productCode: String? = nil,
filters: [VisilabsRecommendationFilter] = [],
properties: [String: String] = [:],
completion: @escaping ((_ response: VisilabsRecommendationResponse) -> Void)) {
Visilabs.callAPI().recommend(zoneID: zoneID, productCode: productCode, filters: filters, properties: properties, completion: completion)
}
@objc public class func logout() {
Euromsg.logout()
Visilabs.callAPI().logout()
}
@objc public class func login(exVisitorId: String, properties: [String: String]) {
if properties.isEmpty {
Visilabs.callAPI().login(exVisitorId: exVisitorId)
} else {
Visilabs.callAPI().login(exVisitorId: exVisitorId, properties: properties)
}
}
@objc public class func signUp(exVisitorId: String, properties: [String: String]) {
if properties.isEmpty {
Visilabs.callAPI().signUp(exVisitorId: exVisitorId)
} else {
Visilabs.callAPI().signUp(exVisitorId: exVisitorId, properties: properties)
}
}
@objc public class func getExVisitorID() -> String {
return Visilabs.callAPI().getExVisitorId() ?? ""
}
@objc public class func getPushMessages(completion: @escaping ((_ payloads: [RDMessage]) -> Void)) {
Euromsg.getPushMessages() { ps in
var mes = [RDMessage]()
for p in ps {
let m = RDMessage()
m.altURL = p.altURL
m.aps = RDMessage.Aps()
m.aps.alert = RDMessage.Alert()
m.aps.contentAvailable = p.aps?.contentAvailable ?? -1
m.aps.sound = p.aps?.sound
m.aps.category = p.aps?.category
m.cid = p.cid
m.url = p.url
m.settings = p.settings
m.pushType = p.pushType
m.altUrl = p.altUrl
m.mediaUrl = p.mediaUrl
m.fcmOptions = RDMessage.FcmOptions()
m.fcmOptions?.image = p.fcmOptions?.image
m.deeplink = p.deeplink
m.pushId = p.pushId
m.emPushSp = p.emPushSp
m.elements = [RDMessage.Element]()
m.deliver = p.deliver
m.silent = p.silent ?? false
mes.append(m)
}
completion(mes)
}
}
@objc public class func requestIDFA() {
Visilabs.callAPI().requestIDFA()
}
@objc public class func sendLocationPermission() {
Visilabs.callAPI().sendLocationPermission()
}
}
@objc public class RDMessage: NSObject {
@objc public var formattedDateString: String?
@objc public var aps: Aps = Aps()
@objc public var altURL: String? = nil
@objc public var cid: String? = nil
@objc public var url: String? = nil
@objc public var settings: String? = nil
@objc public var pushType: String? = nil
@objc public var altUrl: String? = nil
@objc public var mediaUrl: String? = nil
@objc public var fcmOptions: FcmOptions? = nil
@objc public var deeplink: String? = nil
@objc public var pushId: String? = nil
@objc public var emPushSp: String? = nil
@objc public var elements: [Element]? = nil
@objc public var deliver: String? = nil
@objc public var silent: Bool = false
// MARK: - Aps
@objc public class Aps: NSObject {
@objc public var alert: Alert? = nil
@objc public var category: String? = nil
@objc public var sound: String? = nil
@objc public var contentAvailable: Int = -1
}
// MARK: - Alert
@objc public class Alert: NSObject {
@objc public let title: String? = nil
@objc public let body: String? = nil
}
// MARK: - FcmOptions
@objc public class FcmOptions: NSObject {
@objc public var image: String? = nil
}
// MARK: - Element
@objc public class Element: NSObject {
// public let id: Int?
@objc public let title: String? = nil
@objc public let content: String? = nil
@objc public let url: String? = nil
@objc public let picture: String? = nil
}
}
Visilabs ve Euromsg'ı kullanmak istediğiniz her sayfada Adapter-Swift import etmelisiniz
#import "Adapter-Swift.h"
Visilabs ve Euromsg'ı init etmek
AppDelegate.m dosyanız didFinishLaunchingWithOptions içerisine aşağıdaki kodları ekleyin.
App Groups Key oluşturmayı BU SAYFADA App Groups Ekleme başlığından inceleyebilirsiniz.
Eğer uygulamanız içerisinde Pop-Up, Çarkıfelek, Kazı Kazan gibi aksiyonlar göstermeyecekseniz inAppNotificationsEnabled parametresini NO geçin.
Eğer uygulamanızda lokasyon bazlı push gönderimi kullanmayacaksanız geofenceEnabled ve askLocationPermissionAtStart parametrelerini NO geçin.
Eğer geofence kullanacaksanız ama lokasyon bildirimini siz kendiniz istediğiniz bir sayfada almak istiyorsanız askLocationPermissionAtStart parametresini NO geçin.
Eğer uygulamanızda Takip İzni Sormayacaksanız isIDFAEnabled parametresini NO geçin.
Event Gönderimi
Kaydolma
Oturum Açma
Sayfa Görüntüleme
Ürün Görüntüleme
Sepet İşlemleri
Kullanıcı sepete ürün eklediğinde veya ürün çıkardığında aşağıdaki customEvent uygulamasını kullanın. Sepette bulunan son üründe kullanıcı tarafından silindiğinde OM.pb, OM.pu ve OM.ppr parametrelerini boş string olarak göndermelisiniz.
Satın Alma
Kategori Görüntüleme
Arama
Banner Tıklaması
Favorilere Ekleme
Favorilerden Çıkarma
Kampanya Parametresi Yollama
Copyright 2020 Related Digital