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.
AIBuds SDK iOS Mimarisi
AIBuds cihazına bağlanacak iOS uygulamanız
İsteğe bağlı entegrasyon katmanı
Audio · VoiceAssistant · LiveStream · CrashReporter · AIBudsAIDashboard
Cihaz çekirdeği
AI çekirdeği
Core Bluetooth İletişim Protokolü Katmanı
Üçüncü taraf AI hizmeti entegrasyon katmanı
- StarBurst AI (ByteDance)
- MltCloud AI (Meilc)
Cihaz veri modelleri
AI veri modelleri
Tüm katmanlarda kullanılan günlükleme modülü
İsteğe bağlı günlük eklentisi
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.
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:
| Protokol | Yetenek |
|---|---|
DeviceInfoAPI | Pil, cihaz yetenekleri, donanım yapılandırması, dil, depolama, medya sayısı, saat eşitleme/ayarlama |
DeviceCommonAPI | Fabrika ayarlarına sıfırlama, kapatma |
DeviceFindAPI | Cihazı bulma / bulmayı durdurma |
DeviceWorkModeAPI / DeviceWorkStateAPI | Çalışma modu / çalışma durumu |
DeviceVolumeControlAPI | Ses düzeyini alma / ayarlama |
DeviceEqualizerAPI | Ekolayzır ayarları |
DeviceANCAPI | ANC modu, kazanç, şeffaflık, kademeli geçiş |
DeviceWearDetectionAPI | Takma algılama yeteneği ve durumu |
DeviceTWSAPI | TWS bağlantı durumu |
DeviceMusicControlAPI | Oynatma / duraklatma / sonraki / önceki / ses düzeyi |
DeviceAudioRecordingAPI | Normal ve AI ses kaydı, maksimum süre |
DeviceCameraAPI | Fotoğraf / video çekimi, kamera firmware’i |
DeviceRemoteShutterAPI | Uzaktan deklanşör eşitlemesi |
DeviceFileImportAPI | Medya dosyası alma / içe aktarma / silme |
DeviceOtaAPI / DeviceCameraOtaAPI | Firmware güncellemesi |
DeviceAppsAPI | Cihaz uygulamalarını başlatma / durdurma |
DeviceServiceAuthAPI | Servis yetkilendirmesini yeniden deneme ve sonuç bildirme |
DevicePhysicalOperationsAPI | Fiziksel işlem tuşu eşleme |
LiveStreamingAPI | RTSP / 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
- Objective-C
if let info = device as? DeviceInfoAPI {
info.setDeviceTime(Date()) { success, statusCode, error in
// ...
}
}
if let anc = device as? DeviceANCAPI {
anc.setAncMode(.ancOn) { _ in }
}if ([device conformsToProtocol:@protocol(AIBudsDeviceInfoAPI)]) {
id<AIBudsDeviceInfoAPI> info = (id<AIBudsDeviceInfoAPI>)device;
[info setDeviceTime:[NSDate date]
completion:^(BOOL success, NSNumber *statusCode, NSError *error){
// ...
}];
}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 = selfile 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 optionalolduğundan yalnızca gereksinim duyduğunuz callback’leri uygulayın.SDKDelegate(AIBudsSDKDelegate) — genel. Bu delegateAIBudsSDK.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
| Singleton | Kapsam | Başlıca giriş noktaları |
|---|---|---|
AIBudsSDK | Cihaz tarafı | initialize(bleSDKs:configuration:delegate:), startScanning, stopScanning, isScanning(), makeStorableDeviceFromDiscovered(_:), AI/ses eklentisi ayarlayıcıları |
AIBudsAISDK | AI 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:
| Case | Servis Sağlayıcısı |
|---|---|
.none | Sağlayıcı seçilmedi |
.starBurst | StarBurst AI — ByteDance |
.mltcloud | MltCloud 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ıppeEnvmltcloud(MltCloudAIAuthParams):channelId
- Swift
- Objective-C
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)AIBudsConnectParams *params = [AIBudsConnectParams new];
AIBudsAIAuthParams *auth = [AIBudsAIAuthParams new];
AIBudsStarBurstAIAuthParams *starBurst = [AIBudsStarBurstAIAuthParams new];
starBurst.productId = configs[@"STARBURST_PRODUCTID"];
auth.starburst = starBurst;
AIBudsMltCloudAIAuthParams *mltCloud = [AIBudsMltCloudAIAuthParams new];
mltCloud.channelId = configs[@"MLTCLOUD_CHANNELID"];
auth.mltcloud = mltCloud;
params.aiAuthParams = auth;
params.userId = @"199";
[device connectWithParams: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ü | Protokol | Yükleyen | Örnek |
|---|---|---|---|
| BLE protokolü | BleConnectSDK | AIBudsSDK.initialize(bleSDKs:...) | ABMateSDK |
| AI sağlayıcısı | AIConnectSDK | AIBudsAISDK.initialize(aiSDKs:...) | StarBurstSDK, MagicHelperSDK |
| AI / ses köprüsü | StarBurstBridgePlugin, MltCloudBridgePlugin, OnDeviceVoiceAssistantBridgePlugin | AIBudsSDK.setStarBurstAIPlugin(...) / setMltCloudAIPlugin(...) / setOnDeviceVoiceAssistantPlugin(...) | Yetkilendirme eklentisi uygulamanız |
| Günlük arka ucu | LogService | AIBudsLogSDK.setXLFacilityPlugin(...) | AIBudsXLFacility |