クイックスタート
このガイドでは、AIBuds SDK iOS の基本設定から、よく使う操作までを順に説明します。
AI を活用して実装
AI で実装
AI でこのワークフローを実装
公式の「AIBuds SDK を統合」スキルを使い、アプリに合わせて実装します。
https://docs-aibuds.github.io/ja/skills/integrate-aibuds-sdk を読み、その指示に従ってください。このスキルで「AIBuds SDK を統合」をこの iOS プロジェクトに実装し、検証してください。ステップ 1:SDK をインポートする
SDK を使用するファイルで、必要なモジュールをインポートします:
- Swift
- Objective-C
import AIBuds
import ABMate
import AIBudsLog
import AIBudsAIFoundation
import AIBudsAI
import AIBudsStarBurst
import AIBudsMagicHelper
import AIBudsVoiceAssistant
import AIBudsXLFacility
import AIBudsLiveStream
import AIBudsCrashReporter
import AIBudsAllInOne#import <ABMate/ABMate-Swift.h>
#import <AIBuds/AIBuds-Swift.h>
#import <AIBuds/AIBuds.h>
#import <AIBudsAI/AIBudsAI-Swift.h>
#import <AIBudsAIFoundation/AIBudsAIFoundation-Swift.h>
#import <AIBudsAllInOne/AIBudsAllInOne-Swift.h>
#import <AIBudsCrashReporter/AIBudsCrashReporter-Swift.h>
#import <AIBudsCrashReporter/AIBudsCrashReporter.h>
#import <AIBudsLiveStream/AIBudsLiveStream-Swift.h>
#import <AIBudsLog/AIBudsLog-Swift.h>
#import <AIBudsMagicHelper/AIBudsMagicHelper-Swift.h>
#import <AIBudsStarBurst/AIBudsStarBurst-Swift.h>
#import <AIBudsVoiceAssistant/AIBudsVoiceAssistant-Swift.h>
#import <AIBudsXLFacility/AIBudsXLFacility-Swift.h>ステップ 2:SDK を初期化する
アプリの起動時に AIBuds SDK を初期化します。通常は AppDelegate または SceneDelegate で行います:
- Swift
- Objective-C
// AppDelegate.swift
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// Initialize AIBuds SDK with Full Installation
initWithFullInstallation()
// Initialize AIBuds SDK with Custom Installation
//initWithCustomInstallation()
return true
}
/// Initialize AIBuds SDK with Full Installation
private func initWithFullInstallation() {
// Initialize AIBuds SDK
if !AllInOneSDK.init(withDelegate: self) {
print("Failed to initialize AIBuds AllInOne SDK.")
}
// Install crash reporter
AllInOneSDK.installCrashReporter { reportFilePath in
print("Last crash report path: \(reportFilePath ?? "")")
} reportListUpdateCallback: {
print("Crash report list updated")
}
// Set user info for crash reporter
CrashReporterSDK.setUserInfo("Tom", forKey: "User Name")
CrashReporterSDK.setUserInfo("199", forKey: "User ID")
// Start AI dashboard
AllInOneSDK.startAIDashboard()
}
/// Initialize AIBuds SDK with Custom Installation
private func initWithCustomInstallation() {
// Set XLFacility plugin
AIBudsLogSDK.setXLFacilityPlugin(XLFacilitySDK.shared())
// Initialize AIBuds SDK with all Ble SDKs you would like to integrate into your app
let sdkConfiguration = SDKConfiguration.default()
// Set log level to verbose
sdkConfiguration.logLevel = .verbose
let success = AIBudsSDK.initialize(
[ABMateSDK.shared()],
configuration: sdkConfiguration,
delegate: self)
if !success {
print("AIBudsSDK initialize failed.")
}
// Install StarBurst AI plugin
AIBudsSDK.setStarBurstAIPlugin(StarBurstAuthPlugin.shared())
// Install MltCloud AI plugin
AIBudsSDK.setMltCloudAIPlugin(MltCloudAuthPlugin.shared())
// Install OnDeviceVoiceAssistant plugin
AIBudsSDK.setOnDeviceVoiceAssistantPlugin(OnDeviceVoiceAssistantPlugin.shared())
// Initialize AI SDK with all AI SDKs you would like to integrate into your app
let aiSuccess = AIBudsAISDK.initialize([
StarBurstSDK.shared(),
MagicHelperSDK.shared(),
])
if !aiSuccess {
print("AIBudsAISDK initialize failed.")
}
// Install crash reporter
CrashReporterSDK.installCrashReporter { reportFilePath in
print("Last crash report path: \(reportFilePath ?? "")")
} reportListUpdateCallback: {
print("Crash report list updated")
}
// Set user info for crash reporter
CrashReporterSDK.setUserInfo("Tom", forKey: "User Name")
CrashReporterSDK.setUserInfo("199", forKey: "User ID")
// Start AI dashboard
AIDashboardSDK.start()
}// AppDelegate.m
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Initialize AIBuds SDK with Full Installation
[self initWithFullInstallation];
// Initialize AIBuds SDK with Custom Installation
//[self initWithCustomInstallation];
return YES;
}
/// Initialize AIBuds SDK with Full Installation
- (void)initWithFullInstallation {
// Initialize AIBuds SDK
if (![AIBudsAllInOneSDK initWithDelegate:self]) {
NSLog(@"%@", @"Failed to initialize AIBuds AllInOne SDK.");
}
// Install crash reporter
[AIBudsAllInOneSDK
installCrashReporterWithLastCrashReportCallback:^(NSString *_Nullable reportFilePath) {
NSLog(@"Last crash report path: %@", reportFilePath);
}
reportListUpdateCallback:^{
NSLog(@"Crash report list updated");
}];
// Set user info for crash reporter
[AIBudsCrashReporterSDK setUserInfo:@"Tom" forKey:@"User Name"];
[AIBudsCrashReporterSDK setUserInfo:@"199" forKey:@"User ID"];
// Start AI dashboard
[AIBudsAllInOneSDK startAIDashboard];
}
/// Initialize AIBuds SDK with Custom Installation
- (void)initWithCustomInstallation {
// Set XLFacility plugin
[AIBudsLogSDK setXLFacilityPlugin:[AIBudsXLFacilitySDK shared]];
// Initialize AIBuds SDK with all Ble SDKs you would like to integrate into your app
AIBudsSDKConfiguration *sdkConfiguration = [AIBudsSDKConfiguration defaultConfiguration];
// Set log level to verbose
sdkConfiguration.logLevel = AIBudsLogLevelVerbose;
BOOL success = [AIBudsSDK initWithBleSDKs:@[ [ABMateSDK shared] ]
configuration:sdkConfiguration
delegate:self];
if (!success) {
NSLog(@"%@", @"AIBudsSDK initialize failed.");
}
// Install StarBurst AI plugin
[AIBudsSDK setStarBurstAIPlugin:[AIBudsStarBurstAuthPlugin shared]];
// Install MltCloud AI plugin
[AIBudsSDK setMltCloudAIPlugin:[AIBudsMltCloudAuthPlugin shared]];
// Install OnDeviceVoiceAssistant plugin
[AIBudsSDK setOnDeviceVoiceAssistantPlugin:[AIBudsOnDeviceVoiceAssistantPlugin shared]];
// Initialize AI SDK with all AI SDKs you would like to integrate into your app
success = [AIBudsAISDK
initWithAISDKs:@[ [AIBudsStarBurstSDK shared], [AIBudsMagicHelperSDK shared] ]];
if (!success) {
NSLog(@"%@", @"AIBudsAISDK initialize failed.");
}
// Install crash reporter
[AIBudsCrashReporterSDK
installCrashReporterWithLastCrashReportCallback:^(NSString *_Nullable reportFilePath) {
NSLog(@"Last crash report path: %@", reportFilePath);
}
reportListUpdateCallback:^{
NSLog(@"Crash report list updated");
}];
// Set user info for crash reporter
[AIBudsCrashReporterSDK setUserInfo:@"Tom" forKey:@"User Name"];
[AIBudsCrashReporterSDK setUserInfo:@"199" forKey:@"User ID"];
// Start AI dashboard
[AIDashboardSDK start];
}ステップ 3:デバイスを検索する
接続可能な AIBuds デバイスを検索します:
- Swift
- Objective-C
// Start scanning for devices
AIBudsSDK.startScanning(
deviceFoundHandler: { device, isExistingDevice in
print("Found device: \(device.name), RSSI: \(device.rssi)")
print(isExistingDevice ? "Already stored" : "New device")
},
completion: {
print("Scanning stopped")
}
)// Start scanning for devices
[AIBudsSDK startScanningWithTimeout:nil
deviceFoundHandler:^(id<AIBudsFoundDeviceConvertible> _Nonnull device,
BOOL isExistingDevice) {
NSLog(@"Found device: %@, RSSI: %@", device.name, device.rssi);
}
completion:^{
}];ステップ 4:デバイスを追加する
検索で見つかったデバイスを「マイデバイス」に追加すると、次回のアプリ起動後も利用できます。検索結果の FoundDeviceConvertible を makeStorableDeviceFromDiscovered(_:) で保存可能な形式に変換し、StoredDevicesMgr に保存します:
- Swift
- Objective-C
func store(_ discoveredDevice: FoundDeviceConvertible) {
// Convert the SDK scan result into a persistent device.
guard let device = AIBudsSDK.makeStorableDeviceFromDiscovered(discoveredDevice) else {
return
}
// Optional app-owned display information.
device.screenName = device.name
device.thumbnail = UIImage(named: "icon.glasses")
device.customContent = "Smart Glasses"
if StoredDevicesMgr.addDevice(device) {
AIBudsSDK.stopScanning()
navigationController?.popViewController(animated: true)
}
}- (void)storeDiscoveredDevice:(id<AIBudsFoundDeviceConvertible>)discoveredDevice {
// Convert the SDK scan result into a persistent device.
id<AIBudsDeviceConvertible> device =
[AIBudsSDK makeStorableDeviceFromDiscovered:discoveredDevice];
if (device == nil) {
return;
}
// Optional app-owned display information.
device.screenName = device.name;
device.thumbnail = [UIImage imageNamed:@"icon.glasses"];
device.customContent = @"Smart Glasses";
if ([AIBudsStoredDevicesMgr addDevice:device]) {
[AIBudsSDK stopScanning];
[self.navigationController popViewControllerAnimated:YES];
}
}ステップ 5:デバイスに接続する
保存済みデバイスに ConnectParams を指定して接続します。AI 認証パラメータを渡すと、接続時に SDK が利用する AI サービスの認証も行います:
- Swift
- Objective-C
let device = devices[indexPath.item]
let param = ConnectParams()
let aiAuthParams = AIAuthParams()
// StarBurst AI auth
let starBurstAuthParams = StarBurstAIAuthParams()
starBurstAuthParams.productId = configs["STARBURST_PRODUCTID"]
if let ppeEnv = configs["STARBURST_PPEENV"] as? String, !ppeEnv.isEmpty {
starBurstAuthParams.ppeEnv = ppeEnv
}
aiAuthParams.starburst = starBurstAuthParams
// MltCloud AI auth
let mltCloudAuthParams = MltCloudAIAuthParams()
mltCloudAuthParams.channelId = configs["MLTCLOUD_CHANNELID"]
aiAuthParams.mltcloud = mltCloudAuthParams
param.aiAuthParams = aiAuthParams
param.userId = "199"
// Connect to the device
device.connect(param)id<AIBudsDeviceConvertible> device = self.devices[indexPath.item];
AIBudsConnectParams *param = [AIBudsConnectParams new];
AIBudsAIAuthParams *aiAuthParams = [AIBudsAIAuthParams new];
// StarBurst AI auth
AIBudsStarBurstAIAuthParams *starBurstAuthParams = [AIBudsStarBurstAIAuthParams new];
starBurstAuthParams.productId = configs[@"STARBURST_PRODUCTID"];
NSString *ppeEnv = configs[@"STARBURST_PPEENV"];
if ([ppeEnv isKindOfClass:[NSString class]] && [ppeEnv length] > 0) {
starBurstAuthParams.ppeEnv = ppeEnv;
}
aiAuthParams.starburst = starBurstAuthParams;
// MltCloud AI auth
AIBudsMltCloudAIAuthParams *mltCloudAuthParams = [AIBudsMltCloudAIAuthParams new];
mltCloudAuthParams.channelId = configs[@"MLTCLOUD_CHANNELID"];
aiAuthParams.mltcloud = mltCloudAuthParams;
param.aiAuthParams = aiAuthParams;
param.userId = @"199";
// Connect to the device
[device connectWithParams:param];ステップ 6:コマンドを送信する
接続後は、デバイスにコマンドを送信できます:
- Swift
- Objective-C
// Example: Set device time
guard let device = device as? DeviceInfoAPI else { return }
let date = Date()
device.setDeviceTime(date) { success, statusCode, error in
if success {
print("Device time set successfully")
} else {
print("Failed to set device time: \(error?.localizedDescription ?? "Unknown error")")
}
}// Example: Set device time
id<AIBudsDeviceInfoAPI> device = (id<AIBudsDeviceInfoAPI>)self.device;
if ([device conformsToProtocol:@protocol(AIBudsDeviceInfoAPI)]) {
NSDate *date = [NSDate date];
[device
setDeviceTime:date
completion:^(BOOL success, NSNumber *_Nullable statusCode, NSError *_Nullable error) {
if (success) {
NSLog(@"Device time set successfully");
} else {
NSLog(@"Failed to set device time: %@", error.localizedDescription);
}
}];
}ステップ 7:デバイスデリゲートを処理する
DeviceDelegate に準拠すると、接続ライフサイクルのイベントを受け取れます。すべてのメソッドは @objc optional なので、必要なコールバックだけを実装してください:
- Swift
- Objective-C
// Mark your class as the device's delegate
device.delegate = self
// Implement the optional delegate methods
extension YourViewController: DeviceDelegate {
func didStartConnectingDevice(_ device: DeviceConvertible) {
print("Connecting to \(device.name)…")
}
func didConnectedToDevice(_ device: DeviceConvertible) {
print("Connected to \(device.name)")
}
func didFailToConnectDevice(_ device: DeviceConvertible?, error: NSError?) {
print("Failed to connect: \(error?.localizedDescription ?? "Unknown error")")
}
func device(_ device: DeviceConvertible?, didDisconnectWithError error: NSError?) {
if let error {
print("Disconnected with error: \(error.localizedDescription)")
} else {
print("Disconnected")
}
}
func deviceDidReady(_ device: DeviceConvertible) {
print("Device ready: \(device.name)")
}
/// ... other delegate methods...
}// YourViewController.h — declare conformance to AIBudsDeviceDelegate
@interface YourViewController : UIViewController <AIBudsDeviceDelegate>
@end
// YourViewController.m
@implementation YourViewController
// Mark your class as the device's delegate
self.device.delegate = self;
// Implement the optional delegate methods
- (void)didStartConnectingDevice:(id<AIBudsDeviceConvertible>)device {
NSLog(@"Connecting to %@…", device.name);
}
- (void)didConnectedToDevice:(id<AIBudsDeviceConvertible>)device {
NSLog(@"Connected to %@", device.name);
}
- (void)didFailToConnectDevice:(id<AIBudsDeviceConvertible>)device error:(NSError *)error {
NSLog(@"Failed to connect: %@", error.localizedDescription);
}
- (void)device:(id<AIBudsDeviceConvertible>)device didDisconnectWithError:(NSError *)error {
if (error) {
NSLog(@"Disconnected with error: %@", error.localizedDescription);
} else {
NSLog(@"Disconnected");
}
}
- (void)deviceDidReady:(id<AIBudsDeviceConvertible>)device {
NSLog(@"Device ready: %@", device.name);
}
/// ... other delegate methods...
@endステップ 8:デバイスを切断する
デバイスの利用を終えたら、接続を解除します:
- Swift
- Objective-C
// Disconnect from a device
device.disconnect()// Disconnect from a device
id<AIBudsDeviceConvertible> device = self.device;
[device disconnect];サンプルアプリ
実際のアプリでの SDK の使い方は、AIBudsSDK-Demo で確認できます。
次のステップ
基本的な使い方を確認したら、SDK の各機能へ進んでください: