Ana içeriğe geç

Mimari

AIBuds SDK iOS, her biri açıkça tanımlanmış bir sorumluluğa sahip modüler bileşenlerden oluşur. Bu modüllerin birlikte nasıl çalıştığını anlamak, yalnızca gereksinim duyduklarınızı kurmanıza ve SDK’yı kendi eklentilerinizle genişletmenize yardımcı olur.

Genel Mimari

SDK katmanlar hâlinde düzenlenmiştir: üst katmanlar alt katmanlara bağlıdır ve çoğu düzeyde cihaz tarafı (sol), AI tarafını (sağ) yansıtır.

Sistem haritası

AIBuds SDK iOS Mimarisi

Uygulamanız

AIBuds cihazına bağlanacak iOS uygulamanız

AIBudsAllInOneİsteğe bağlı

İsteğe bağlı entegrasyon katmanı

Özellik Modülleri

Audio · VoiceAssistant · LiveStream · CrashReporter · AIBudsAIDashboard

AIBudsSDK

Cihaz çekirdeği

AIBudsAISDK

AI çekirdeği

ABMateSDK(BLE)

Core Bluetooth İletişim Protokolü Katmanı

StarBurst / MagicHelper

Üçüncü taraf AI hizmeti entegrasyon katmanı

  • StarBurst AI (ByteDance)
  • MltCloud AI (Meilc)
AIBudsFoundation

Cihaz veri modelleri

AIBudsAIFoundation

AI veri modelleri

AIBudsLog

Tüm katmanlarda kullanılan günlükleme modülü

AIBudsXLFacilityİsteğe bağlı

İsteğe bağlı günlük eklentisi

AIBuds SDK iOS mimarisini inceleyin.

Katmanlar yukarıdan aşağıya şöyledir: uygulamanız → kolaylık katmanı → özellik modülleri → çekirdek SDK (cihaz tarafı + AI tarafı) → protokol eklentileri → temel veri modelleri → tüm katmanlarda kullanılan günlükleme.

Cihaz Temsili

SDK’nın etkileşim kurduğu her cihaz tek bir protokolle temsil edilir: DeviceConvertible (Objective-C’de AIBudsDeviceConvertible). Uygulamanız cihaz kimliğini ve durumunu bu tek temsil üzerinden okur; yaşam döngüsü işlemlerini de (connect, disconnect, unpair, save) yine bunun üzerinden gerçekleştirir. İşlemler bir yönetici singleton üzerinden değil, doğrudan cihaz örneği üzerinde çağrılır. DeviceConvertible, NSSecureCoding protokolüne uyduğu için arşivlenebilir ve uygulama başlatmaları arasında geri yüklenebilir.

Ayrı bir protokol olan FoundDeviceConvertible (AIBudsFoundDeviceConvertible), tarama sırasında yeni keşfedilmiş cihazı tanımlar. Core Bluetooth bileşenlerini (central + peripheral + advertisementData + RSSI) kapsar, ancak henüz saklanabilir değildir. AIBudsSDK.makeStorableDeviceFromDiscovered(_:) ile dönüştürerek kalıcı olarak saklayabileceğiniz bir DeviceConvertible elde edin.

Cihaz yaşam döngüsü

Cihaz yaşam döngüsü

Bluetooth keşfinden komut almaya hazır cihaza.

TaraBluetooth keşfi
Yakında

Keşfedildi

Tarayıcı yayın yapan bir cihaz buldu.

AIBudsSDK.makeStorableDeviceFromDiscovered(_:)Kalıcı bir temsil oluştur
Yerel

Kaydedilebilir

Cihaz, yerel depolama için standartlaştırıldı.

StoredDevicesMgr.addDevice
Kaydedildi

Kaydedildi

Cihaz bilgileri uygulama yeniden başlatıldığında da korunur.

device.connect(ConnectParams)
Sürüyor

Bağlanıyor

Kimlik doğrulama ve bağlantı görüşmesi sürüyor.

deviceDidReadyDelege geri çağrısı
Çevrimiçi

Hazır

Cihaz artık komut alabilir.

KullanılabilirKomutlara hazır

Cihaz beş durumdan geçer: taramayla keşfedildi → saklanabilir cihaza dönüştürüldü → depolamaya kaydedildi → bağlanıyor → bağlı ve hazır.

StoredDevicesMgr (AIBudsStoredDevicesMgr) kalıcı cihaz listesinin sahibidir: addDevice, removeDevice, allDevices, findDevice(byMacAddr:), findDevice(byPeripheral:). Önceden kaydedilen cihazları (otomatik yeniden bağlantı adayları dâhil) geri yüklemek için uygulama başlatılırken loadDevicesInBackground çağırın.

Yetenek Protokolleri

Her cihaz her özelliği desteklemez. Bu nedenle yetenekler tek ve büyük bir cihaz arayüzü yerine ayrı protokoller olarak modellenmiştir. Bunların tümü ortak işaretleyici DeviceAPI (AIBudsDeviceAPI) protokolüne uyar:

ProtokolYetenek
DeviceInfoAPIPil, cihaz yetenekleri, donanım yapılandırması, dil, depolama, medya sayısı, saat eşitleme/ayarlama
DeviceCommonAPIFabrika ayarlarına sıfırlama, kapatma
DeviceFindAPICihazı bulma / bulmayı durdurma
DeviceWorkModeAPI / DeviceWorkStateAPIÇalışma modu / çalışma durumu
DeviceVolumeControlAPISes düzeyini alma / ayarlama
DeviceEqualizerAPIEkolayzır ayarları
DeviceANCAPIANC modu, kazanç, şeffaflık, kademeli geçiş
DeviceWearDetectionAPITakma algılama yeteneği ve durumu
DeviceTWSAPITWS bağlantı durumu
DeviceMusicControlAPIOynatma / duraklatma / sonraki / önceki / ses düzeyi
DeviceAudioRecordingAPINormal ve AI ses kaydı, maksimum süre
DeviceCameraAPIFotoğraf / video çekimi, kamera firmware’i
DeviceRemoteShutterAPIUzaktan deklanşör eşitlemesi
DeviceFileImportAPIMedya dosyası alma / içe aktarma / silme
DeviceOtaAPI / DeviceCameraOtaAPIFirmware güncellemesi
DeviceAppsAPICihaz uygulamalarını başlatma / durdurma
DeviceServiceAuthAPIServis yetkilendirmesini yeniden deneme ve sonuç bildirme
DevicePhysicalOperationsAPIFiziksel işlem tuşu eşleme
LiveStreamingAPIRTSP / JPEG canlı yayını
OnDeviceVoiceAssistantAPIÇevrimdışı sesli asistan

Bir yeteneği çağırmak için cihazı ilgili protokole cast edin ve protokole uyduğunu denetleyin. Gerekli donanıma sahip olmayan cihazda cast işlemi başarısız olur:

Swift
if let info = device as? DeviceInfoAPI {
    info.setDeviceTime(Date()) { success, statusCode, error in
        // ...
    }
}

if let anc = device as? DeviceANCAPI {
    anc.setAncMode(.ancOn) { _ in }
}

Delegate’ler

SDK iki delegate katmanı sunar. Gereksinim duyduğunuz olayların kapsamına uygun olanı seçin.

  • DeviceDelegate (AIBudsDeviceDelegate) — cihaz başına. device.delegate = self ile atayarak belirli cihazın bağlantı yaşam döngüsü olaylarını (didStartConnectingDevice, didConnectedToDevice, didFailToConnectDevice, device:didDisconnectWithError:, deviceDidReady) ve durum değişikliği olaylarını (pil, çalışma modu, ANC, EQ, takma durumu, TWS, ses düzeyleri, depolama, medya sayısı ve daha fazlası) alın. Tüm yöntemler @objc optional olduğundan yalnızca gereksinim duyduğunuz callback’leri uygulayın.
  • SDKDelegate (AIBudsSDKDelegate) — genel. Bu delegate AIBudsSDK.initialize(...delegate:) çağrısına verilir; tüm cihazlardaki bağlantı olaylarını yansıtır ve tarama durumunu da (onScanningStatusChanged:) bildirir.

Yaygın yaklaşım, uygulama düzeyindeki konular (tarama, genel bağlantı arayüzü) için SDKDelegate, belirli bir cihazı yöneten ekran için DeviceDelegate kullanmaktır.

Çekirdek Singleton’lar

SingletonKapsamBaşlıca giriş noktaları
AIBudsSDKCihaz tarafıinitialize(bleSDKs:configuration:delegate:), startScanning, stopScanning, isScanning(), makeStorableDeviceFromDiscovered(_:), AI/ses eklentisi ayarlayıcıları
AIBudsAISDKAI tarafıinitialize(aiSDKs:), setAIServiceVendor(_:), startAIChat, startAIAudioRecording, startSimultaneousInterpretation, translateText, summary, recognizeVoice, synthesizeText

Cihaz işlemleri (bağlanma, bağlantıyı kesme, komut gönderme) bu singleton’lar üzerinde değildir; doğrudan DeviceConvertible örneğinde çağrılır.

AI Servis Sağlayıcısı

AI yetenekleri takılabilir bir servis sağlayıcısı tarafından sunulur. Seçilen sağlayıcı AIServiceVendor (AIBudsAIServiceVendor) enum’u ile temsil edilir:

CaseServis Sağlayıcısı
.noneSağlayıcı seçilmedi
.starBurstStarBurst AI — ByteDance
.mltcloudMltCloud AI — Meilc

Case yazımı genel Swift API’sini aynen izler: .starBurst büyük B kullanırken .mltcloud tamamen küçük harflidir.

Çalışma zamanında sağlayıcı değiştirmek için AIBudsAISDK.setAIServiceVendor(_:) çağırın. Bu çağrı herhangi bir AI servisi kullanılmadan önce yapılmalıdır.

Bağlantı Parametreleri

ConnectParams (AIBudsConnectParams), device.connect(_:) için gereken her şeyi paketler. Bunların başında, bağlantı el sıkışması sırasında SDK’nın AI sağlayıcılarınızla kimlik doğrulamasına olanak veren AI yetkilendirme parametreleri gelir:

  • userId — AI sağlayıcısı tarafında son kullanıcıyı tanımlar.
  • aiAuthParams (AIAuthParams / AIBudsAIAuthParams) — sağlayıcı başına kimlik bilgilerini tutar:
    • starburst (StarBurstAIAuthParams): productId, isteğe bağlı ppeEnv
    • mltcloud (MltCloudAIAuthParams): channelId
Swift
let params = ConnectParams()
let auth = AIAuthParams()

let starBurst = StarBurstAIAuthParams()
starBurst.productId = configs["STARBURST_PRODUCTID"]
auth.starburst = starBurst

let mltCloud = MltCloudAIAuthParams()
mltCloud.channelId = configs["MLTCLOUD_CHANNELID"]
auth.mltcloud = mltCloud

params.aiAuthParams = auth
params.userId = "199"

device.connect(params)

Modül Referansı

Temel Katman

AIBudsLog

Tüm AIBuds SDK boyunca kullanılan günlükleme çekirdeğidir. Diğer tüm modüller günlüklerini bunun üzerinden kaydeder. LogService, tüm günlük uygulamalarının uyduğu protokoldür; varsayılanlar gereksiniminizi karşılamıyorsa kendi LogService uygulamanızı takabilirsiniz.

Varsayılan günlük servisi dört çıkış hedefini destekler: console, oslogger, file ve xlfacility (sonuncusu ek eklenti gerektirir).

AIBudsXLFacility

Günlük çıktısını XLFacility üzerinden yönlendiren isteğe bağlı eklentidir. Düz dosya hedefiyle karşılaştırıldığında XLFacility, günlükleri dışa aktarmayı, sorgulamayı ve süresi dolanları temizlemeyi çok daha kolaylaştırır. Üretim için önerilen günlük hedefi budur.

AIBudsFoundation

Cihaz iletişimiyle ilgili veri modellerini, tür tanımlarını ve yardımcı veri yapılarını içerir. Bunu cihaz SDK’sı ile uygulamanızın birlikte kullandığı ortak sözlük olarak düşünebilirsiniz.

AIBudsAIFoundation

AIBudsFoundation ile benzer kapsamdadır, ancak AI işlerine odaklanır; tüm AI sağlayıcılarında kullanılan temel veri modellerini ve tür tanımlarını içerir.

Çekirdek SDK Katmanı

AIBudsSDK

Cihaz iletişiminin çekirdek SDK’sıdır. Tarama, bağlanma, komut gönderme ve olay alma gibi cihazla ilgili işlevlerin çoğu bu modül üzerinden çağrılır.

ABMateSDK

AIBudsSDK tarafından kullanılan güncel BLE iletişim protokolü eklentisidir. Protokoller eklenti olarak yüklendiğinden BLE iletişimine gereksinim duyduğunuzda ABMateSDK kurarsınız. Gelecekte ek protokoller desteklendiğinde cihazınızla eşleşeni yükleyebilirsiniz.

AIBudsAISDK

AI işlevlerinin çekirdek SDK’sıdır. Birden çok AI servis sağlayıcısını eklenti sistemi üzerinden koordine eder; çalışma zamanında sağlayıcı değiştirdiğinizde temel çağrılar ilgili sağlayıcının yeteneklerine yönlendirilir.

AI Sağlayıcı Eklentileri

AIBudsStarBurst

StarBurst AI (ByteDance) için ara katman eklentisidir. Sağlayıcının AI yeteneklerini sarar ve AIBudsAISDK arayüzü üzerinden sunar.

AIBudsMagicHelper

MltCloud AI (Meilc) için ara katman eklentisidir. Sağlayıcının AI yeteneklerini sarar ve AIBudsAISDK arayüzü üzerinden sunar.

Özellik Modülleri

AIBudsAudio

Kayıt, oynatma ve Voice Activity Detection (VAD) dâhil sesle ilgili işlevleri sağlar.

AIBudsVoiceAssistant

Çevrimdışı sesli asistan yetkilendirme eklentisidir. Cihazdaki uyandırma sözcüğünü ve sesli komut tanımayı yönetir. Bu ara katman üzerinden yürütülen servis yetkilendirmesini gerektirir.

AIBudsLiveStream

Cihaz canlı yayın SDK’sıdır. Cihazdan RTSP yayını alır, buna uygun video oynatıcısı sağlar ve yayın için akışı bir RTMP uç noktasına gönderir.

AIBudsCrashReporter

App çökme günlüklerini toplar. Çökmeleri yakalar, yerel bir dizine kaydeder ve çökme dosyasının yolunu callback ile uygulamanıza iletir; böylece dosyayı sunucunuza yükleyebilir veya gereksiniminize göre işleyebilirsiniz.

AIBudsAIDashboard

AI servisleri için tanılama panosudur. Yerel ağ üzerinden görüntülenir ve AI kayıtları, eşzamanlı çeviri oturumları, AI görüşmeleri gibi AI ile ilgili kayıtları incelemenizi sağlar. Her kayıtta ilgili cihaz bilgisini, başlangıç parametrelerini, işlem sırasındaki ses verilerini, oturum olaylarını ve önemli hataları görebilir; anormallikleri daha kolay analiz edebilirsiniz.

Kolaylık Katmanı

AIBudsAllInOne

Modüler mimari SDK başlatma yapılandırmasını bir miktar ayrıntılı hâle getirdiğinden AIBudsAllInOne makul bir varsayılan yapılandırmayı paketler. Böylece her şeyi tek çağrıda başlatabilirsiniz; özel kurulum gerektirmeyen durumlar için uygundur.

Eklenti Modeli

SDK’nın genişletilebilirliğini dört tür eklenti sağlar. Her biri açıkça tanımlanmış bir protokole uyar; dolayısıyla özel BLE protokolü eklentisi veya kuruma özel AI sağlayıcısı gibi kendi eklentinizi yazabilir ve yerleşik eklentilerle birlikte ya da onların yerine yükleyebilirsiniz:

Eklenti türüProtokolYükleyenÖrnek
BLE protokolüBleConnectSDKAIBudsSDK.initialize(bleSDKs:...)ABMateSDK
AI sağlayıcısıAIConnectSDKAIBudsAISDK.initialize(aiSDKs:...)StarBurstSDK, MagicHelperSDK
AI / ses köprüsüStarBurstBridgePlugin, MltCloudBridgePlugin, OnDeviceVoiceAssistantBridgePluginAIBudsSDK.setStarBurstAIPlugin(...) / setMltCloudAIPlugin(...) / setOnDeviceVoiceAssistantPlugin(...)Yetkilendirme eklentisi uygulamanız
Günlük arka ucuLogServiceAIBudsLogSDK.setXLFacilityPlugin(...)AIBudsXLFacility