Menü
Logo

Mlink Yardım 1.3.32

Mlink iOS SDK

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.

Ön Gereksinimler

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

Konfigürasyon

Package URL: https://github.com/Mimeda/bidding-mobile-ios-sdk-release.git

Swift Package Manager ile dependency ekleyin

Xcode ile Package Ekleme:

Xcode'da projenizi açın ve aşağıdaki adımları izleyin:

  1. Xcode menüsünden FileAdd Package Dependencies... seçeneğini seçin
  2. Package URL alanına paket URL'sini girin
  3. Version kuralını seçin (Up to Next Major Version önerilir)
  4. Add Package butonuna tıklayın

SDK'nin Başlatılması

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 .production'dır.

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.

isInitialized methodu ile SDK'nin durumunu sorgulayabilirsiniz


import bidding_mobile_ios_sdk

if !MimedaSDK.shared.isInitialized() {
    MimedaSDK.shared.initialize(
        apiKey: "YOUR_API_KEY",
        environment: .production
    )
}

Loglama

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)

Error Callback Örneği


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 Gönderimi

Event nedir?

Kullanıcılarınızın uygulamanızı kullanırken analitik verisi oluşturacak şekilde yaptığı davranışlardır. Örneğin bir kullanıcının uygulamanın ana sayfasındaki bir ürünü sepete eklemesi veya bir satış işlemini tamamlaması olarak örneklenebilir.

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.

  • sku: Ürünün SKU numarası
  • qty: Ürünün adedi
  • prc: Ürünün fiyatı
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.

  • sanalmarket
  • ekstra
  • hemen
  • yemek
  • tazedirekt
  • macrocenter
  • mion
  • petimo

Event Listesi

Aşağıdaki listede her bir event için ayrı ayrı olacak şekilde bilgileri bulabilirsiniz. Her bir eventin ne zaman tetiklenmesi gerektiği ve hangi bilgilerin gönderilmesi gerektiği belirtilmiştir.
Kullanıcı ana sayfayı görüntülediğinde tetiklenir.

MimedaSDK.shared.trackEvent(
    eventName: .home,
    eventParameter: .view,
    params: EventParams(
        userId: "123",
        loyaltyCard: "111222333444",
        app: "sanalmarket"
    )
)
Kullanıcı ana sayfayı görüntüledikten sonra bir ürünü sepete eklediğinde tetiklenir.

MimedaSDK.shared.trackEvent(
    eventName: .home,
    eventParameter: .addToCart,
    params: EventParams(
        userId: "123",
        loyaltyCard: "111222333444",
        productList: "869111111111111:2:76.45;469141151111111:1:92.55",
        app: "sanalmarket"
    )
)
Kullanıcı ana sayfayı görüntüledikten sonra bir ürünü favorilere eklediğinde tetiklenir.

MimedaSDK.shared.trackEvent(
    eventName: .home,
    eventParameter: .addToFavorites,
    params: EventParams(
        userId: "123",
        loyaltyCard: "111222333444",
        productList: "869111111111111:2:76.45;469141151111111:1:92.55",
        app: "sanalmarket"
    )
)
Kullanıcı bir listeleme işlemi yaptığında tetiklenir. Örneğin ana menüden bir kategoriye tıkladığında veya özel bir alışveriş listesine tıkladığında karşısına çıkan ürün listesi olduğunda tetiklenir. Arama işlemleri dahil değildir.

MimedaSDK.shared.trackEvent(
    eventName: .listing,
    eventParameter: .view,
    params: EventParams(
        userId: "123",
        loyaltyCard: "111222333444",
        categoryId: "123abc",
        totalRowCount: 463,
        productList: "869111111111111:2:76.45;469141151111111:1:92.55",
        app: "sanalmarket"
    )
)
Kullanıcı bir listeleme ekranında bir ürünü sepete eklediğinde tetiklenir.

MimedaSDK.shared.trackEvent(
    eventName: .listing,
    eventParameter: .addToCart,
    params: EventParams(
        userId: "123",
        loyaltyCard: "111222333444",
        categoryId: "123abc",
        productList: "869111111111111:2:76.45;469141151111111:1:92.55",
        totalRowCount: 463,
        app: "sanalmarket"
    )
)
Kullanıcı bir listeleme ekranında bir ürünü favorilere eklediğinde tetiklenir.

MimedaSDK.shared.trackEvent(
    eventName: .listing,
    eventParameter: .addToFavorites,
    params: EventParams(
        userId: "123",
        loyaltyCard: "111222333444",
        categoryId: "123abc",
        productList: "869111111111111:2:76.45;469141151111111:1:92.55",
        totalRowCount: 463,
        app: "sanalmarket"
    )
)
Kullanıcı bir arama yaptığında tetiklenir.

MimedaSDK.shared.trackEvent(
    eventName: .search,
    eventParameter: .view,
    params: EventParams(
        userId: "123",
        loyaltyCard: "111222333444",
        keyword: "süt",
        productList: "869111111111111:2:76.45;469141151111111:1:92.55",
        totalRowCount: 463,
        app: "sanalmarket"
    )
)
Kullanıcı bir arama yaptıktan sonra, karşısına çıkan listeden bir ürünü sepete eklediğinde tetiklenir.

MimedaSDK.shared.trackEvent(
    eventName: .search,
    eventParameter: .addToCart,
    params: EventParams(
        userId: "123",
        keyword: "süt",
        loyaltyCard: "111222333444",
        productList: "869111111111111:2:76.45;469141151111111:1:92.55",
        totalRowCount: 463,
        app: "sanalmarket"
    )
)
Kullanıcı bir arama yaptıktan sonra, karşısına çıkan listeden bir ürünü favorilere eklediğinde tetiklenir.

MimedaSDK.shared.trackEvent(
    eventName: .search,
    eventParameter: .addToFavorites,
    params: EventParams(
        userId: "123",
        loyaltyCard: "111222333444",
        keyword: "süt",
        productList: "869111111111111:2:76.45;469141151111111:1:92.55",
        totalRowCount: 463,
        app: "sanalmarket"
    )
)
Kullanıcı ürünün detay ekranını görüntülediğinde tetiklenir.

MimedaSDK.shared.trackEvent(
    eventName: .pdp,
    eventParameter: .view,
    params: EventParams(
        userId: "123",
        loyaltyCard: "111222333444",
        productList: "869111111111111:2:76.45;469141151111111:1:92.55",
        app: "sanalmarket"
    )
)
Kullanıcı ürünü, ürün detay ekranında sepete eklediğinde tetiklenir.

MimedaSDK.shared.trackEvent(
    eventName: .pdp,
    eventParameter: .addToCart,
    params: EventParams(
        userId: "123",
        loyaltyCard: "111222333444",
        productList: "869111111111111:2:76.45;469141151111111:1:92.55",
        app: "sanalmarket"
    )
)
Kullanıcı ürünü, ürün detay ekranında favorilere eklediğinde tetiklenir.

MimedaSDK.shared.trackEvent(
    eventName: .pdp,
    eventParameter: .addToFavorites,
    params: EventParams(
        userId: "123",
        loyaltyCard: "111222333444",
        productList: "869111111111111:2:76.45;469141151111111:1:92.55",
        app: "sanalmarket"
    )
)
Kullanıcı sepeti görüntülediğinde tetiklenir.

MimedaSDK.shared.trackEvent(
    eventName: .cart,
    eventParameter: .view,
    params: EventParams(
        userId: "123",
        loyaltyCard: "111222333444",
        productList: "869111111111111:2:76.45;469141151111111:1:92.55",
        app: "sanalmarket"
    )
)
Kullanıcı bir alışveriş işlemini tamamladığında tetiklenir.

MimedaSDK.shared.trackEvent(
    eventName: .purchase,
    eventParameter: .success,
    params: EventParams(
        userId: "123",
        loyaltyCard: "111222333444",
        productList: "869111111111111:2:76.45;469141151111111:1:92.55",
        transactionId: "123129321",
        app: "sanalmarket"
    )
)

Tam Kod Örneği

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"
            )
        )
    }
}

Sponsorlu Ürün Entegrasyonu

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.

  • sanalmarket
  • ekstra
  • hemen
  • yemek
  • tazedirekt
  • macrocenter
  • mion
  • petimo

Impression

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

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"
    )
)
Son Güncelleme: 13.02.2026