Mimeda bidding platformu için geliştirilmiş, event ve performance tracking özellikleri sunan iOS kütüphanesi ile mobil uygulamalarınızdaki verileri toplayabilir ve analiz edebilirsiniz. Bu sayede, kullanıcıların uygulamanızdaki etkileşimlerini ölçebilir ve reklam kampanyalarınızı optimize edebilirsiniz.
SDK kullanılmasının bir başka avantajı ise reklam alanlarının entegrasyonu için gereken işlemlerin çok daha kolay ve hızlı yapılmasına olanak sağlamasıdır.
iOS Versiyonu: iOS 15.0 ve üzeri
Swift: 5.7 ve üzeri
Xcode: 14.0 ve üzeri
İzinler: Internet bağlantısı için gerekli network izinleri otomatik olarak yönetilir
Package URL: https://github.com/Mimeda/bidding-mobile-ios-sdk-release.git
Xcode'da projenizi açın ve aşağıdaki adımları izleyin:
Tüm ayarlar ve kurulumlar tamamlandıktan sonra, uygulamanızın ilk çalıştırılması anında MimedaSDK.shared.initialize metodu kullanılarak SDK'nin çalıştırılması sağlanmalıdır. Bu metoda sağlanması gereken bazı bilgiler bulunmaktadır. Bu bilgiler Mimeda Yayıncı İlişkileri ekibi tarafından size iletilecektir.
Mlink SDK'nin Initialize metodunu kullanmak için aşağıda belirtilen şekilde main class'ınızın init methodu içinde örnekteki gibi kodları eklemeniz önerilir.
import SwiftUI
import bidding_mobile_ios_sdk
@main
struct bidding_mobile_ios_sdk_testerApp: App {
init() {
MimedaSDK.shared.initialize(
apiKey: "test-api-key"
)
MimedaSDK.shared.setDebugLogging(true)
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
| Parametre | Zorunlu | Açıklama |
|---|---|---|
apiKey
|
Evet | Mimeda tarafından sağlanan key'dir. |
environment
|
Hayır |
Uygulamanın çalıştığı ortamı belirleyen parametredir. Test ortamına erişim kısıtlı olduğundan kullanılamamaktadır. Varsayılan değer |
errorCallback
|
Hayır |
Network hatası / gönderim hatası gibi durumları yakalamak için initialize sırasında MimedaSDKErrorCallback protokolünü implement eden bir obje tanımlayarak, hataları gözlemlemeyi kolaylaştıran parametredir. |
import bidding_mobile_ios_sdk
if !MimedaSDK.shared.isInitialized() {
MimedaSDK.shared.initialize(
apiKey: "YOUR_API_KEY",
environment: .production
)
}
setDebugLogging metodunu kullanarak geliştirme sırasında logları detaylı olarak görüntüleyebilirsiniz. Loglar Xcode Console'da [MIMEDA][INFO] ve [MIMEDA][ERROR] formatında görünür.
import bidding_mobile_ios_sdk
MimedaSDK.shared.setDebugLogging(true)
import UIKit
import bidding_mobile_ios_sdk
import os.log
class MyErrorCallback: MimedaSDKErrorCallback {
private let logger = Logger(subsystem: "com.mimeda.bidding-mobile-ios-sdk-tester", category: "ErrorCallback")
func onEventTrackingFailed(
eventName: EventName,
eventParameter: EventParameter,
error: Error
) {
logger.error("Event tracking failed: \(eventName.rawValue, privacy: .public)/\(eventParameter.rawValue, privacy: .public) - \(error.localizedDescription, privacy: .public)")
}
func onPerformanceEventTrackingFailed(
eventType: PerformanceEventType,
error: Error
) {
logger.error("Performance event failed: \(String(describing: eventType), privacy: .public) - \(error.localizedDescription, privacy: .public)")
}
func onValidationFailed(
eventName: EventName?,
errors: [String]
) {
logger.error("Validation failed for event: \(eventName?.rawValue ?? "unknown", privacy: .public) - Errors: \(errors.joined(separator: ", "), privacy: .public)")
}
}
// AppDelegate içinde kullanımı
MimedaSDK.shared.initialize(
apiKey: "YOUR_API_KEY",
environment: .production,
errorCallback: MyErrorCallback()
)
Event tracking için MimedaSDK.shared.trackEvent kullanılır. Eventler EventName + EventParameter ikilisiyle tanımlanır.
import bidding_mobile_ios_sdk
MimedaSDK.shared.trackEvent(
eventName: .home,
eventParameter: .view,
params: EventParams(
app: "sanalmarket"
)
)
Eventlerde kullanılan parametreler ve bu parametrelerin zorunluluk bilgileri değişiklik gösterebilir. İlgili bilgiler eventlerin açıklamalarında yer almaktadır.
| Parametre | Zorunlu | Açıklama |
|---|---|---|
userId
|
Hayır | Mobil uygulamaya login olmuş kullanıcının sizin sisteminizdeki Id bilgisidir. Eğer kullanıcı login olmuş ise tüm eventlerde user Id bilgisi gönderilmelidir. |
categoryId
|
Hayır | Kullanıcı eğer bir kategori listeleme sayfasını görüntülüyor ise, görüntülediği kategorinin Id bilgisidir. Sadece listing eventlerinde zorunlu olarak gönderilmelidir. |
keyword
|
Hayır | Kullanıcı eğer bir arama yaptıysa ve bunun sonucunu görüntülüyorsa, arama yaptığı kelimeyi gönderir. Sadece search eventlerinde zorunlu olarak gönderilmelidir. |
transactionId
|
Hayır | Kullanıcı bir alışverişi tamamladıysa, sizin sisteminizde tanımlı olan transaction Id bilgisidir. Sadece purchase eventinde zorunlu olarak gönderilmelidir. |
loyaltyCard
|
Hayır | Kullanıcı eğer bir loyalty card kullandıysa onun bilgileri gönderilir. Kullanıcı login olmuşsa ve loyalty card bilgisi varsa gönderilmelidir. |
productList
|
Hayır |
Kullanıcının etkileşime girdiği ürünlerin bilgilerini içeren listedir. Home/View eventi dışındaki tüm eventlerde zorunlu olarak gönderilmelidir. Her bir ürün için aşağıdaki bilgiler gönderilmelidir. sku:qty:prc;sku2:qty2:prc2;...;skun:qtyn;prcn formatında gönderilir.
|
totalRowCount
|
Hayır | Listeleme ekranlarında kullanıcılara gösterilen ürün sayısıdır. Sadece search ve listing eventlerinde zorunlu olarak gönderilmelidir. |
lineItemIds
|
Hayır | Event gönderildiğinde ekranda gözüken line item'ların Id'leri, aralarına virgül konularak (li1,li2,...,lin) gönderilir. |
app
|
Evet |
Eventin gönderildiği platformun adıdır.
|
Aşağıda iOS uygulamanızda Mimeda SDK'yı nasıl kullanacağınıza dair tam bir kod örneği bulunmaktadır.
import UIKit
import bidding_mobile_ios_sdk
@main
struct bidding_mobile_ios_sdk_testerApp: App {
init() {
MimedaSDK.shared.initialize(
apiKey: "test-api-key"
)
MimedaSDK.shared.setDebugLogging(true)
}
}
// ViewController örneği
class HomeViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Ana sayfa görüntülendiğinde event gönder
MimedaSDK.shared.trackEvent(
eventName: .home,
eventParameter: .view,
params: EventParams(
userId: "123",
loyaltyCard: "111222333444",
app: "sanalmarket"
)
)
}
func addProductToCart(productSku: String, quantity: Int, price: Double) {
// Ürün sepete eklendiğinde event gönder
let productList = "\(productSku):\(quantity):\(price)"
MimedaSDK.shared.trackEvent(
eventName: .home,
eventParameter: .addToCart,
params: EventParams(
userId: "123",
loyaltyCard: "111222333444",
productList: productList,
app: "sanalmarket"
)
)
}
}
// Product Detail ViewController örneği
class ProductDetailViewController: UIViewController {
var productSku: String?
override func viewDidLoad() {
super.viewDidLoad()
guard let sku = productSku else { return }
// Ürün detay sayfası görüntülendiğinde event gönder
MimedaSDK.shared.trackEvent(
eventName: .pdp,
eventParameter: .view,
params: EventParams(
userId: "123",
loyaltyCard: "111222333444",
productList: "\(sku):1:99.99",
app: "sanalmarket"
)
)
}
func purchaseCompleted(transactionId: String, products: [(sku: String, qty: Int, price: Double)]) {
// Alışveriş tamamlandığında event gönder
let productList = products.map { "\($0.sku):\($0.qty):\($0.price)" }.joined(separator: ";")
MimedaSDK.shared.trackEvent(
eventName: .purchase,
eventParameter: .success,
params: EventParams(
userId: "123",
loyaltyCard: "111222333444",
productList: productList,
transactionId: transactionId,
app: "sanalmarket"
)
)
}
}
Mimeda'nın yayıncıları için geliştirdiği bir Sponsorlu Ürün reklam modelinin Frontend tarafında iki farklı entegrasyon adımı bulunmaktadır. Gönderilebilecek parametreler ve açıklamaları aşağıda tanımlanmıştır.
| Parametre | Zorunlu | Açıklama |
|---|---|---|
userId
|
Hayır | Bu değer, mobil uygulamaya login olmuş kullanıcının sizin sisteminizdeki Id bilgisidir. Eğer kullanıcı login olmuş ise tüm eventlerde user Id bilgisi gönderilmelidir. |
loyaltyCard
|
Hayır | Kullanıcı eğer bir loyalty card kullandıysa onun bilgisi gönderilir. Login olmuş kullanıcı için varsa gönderilmelidir. |
lineItemId
|
Evet | İlgili slota ait sponsorlu ürün sorgusunun cevabında bulunan line item Id'sidir. |
creativeId
|
Evet | İlgili slota ait sponsorlu ürün sorgusunun cevabında bulunan kreatif Id'sidir. |
adUnit
|
Evet | Sponsorlu ürünün bulunduğu ad unit bilgisidir. |
productSku
|
Evet | Tıklanan veya görüntülenen ürünün SKU numarasıdır. |
payload
|
Evet | İlgili slota ait sponsorlu ürün sorgusunun cevabında bulunan payload değeridir. |
keyword
|
Evet | Kullanıcı tarafından search edilen değerdir. |
app
|
Evet |
Eventin gönderildiği platformun adıdır.
|
Impression eventleri, sponsorlu ürünün görüntülendiği bilgisini Mimeda'ya bildirmek amacıyla gönderilir.
MimedaSDK.shared.trackPerformanceImpression(
params: PerformanceEventParams(
app: "sanalmarket",
lineItemId: "line123",
creativeId: "creative456",
adUnit: "banner_top",
productSku: "SKU789",
payload: "custom_data",
keyword: "electronics",
userId: "user123",
loyaltyCard: "111222333444"
)
)
Click eventleri ise, sponsorlu ürüne tıklandığı bilgisini Mimeda'ya bildirmek amacıyla gönderilir.
MimedaSDK.shared.trackPerformanceClick(
params: PerformanceEventParams(
app: "sanalmarket",
lineItemId: "line123",
creativeId: "creative456",
adUnit: "banner_top",
productSku: "SKU789",
payload: "custom_data",
keyword: "electronics",
userId: "user123",
loyaltyCard: "111222333444"
)
)