Интеграция в проект

При редактировании и добавлении новой версии в AssistantSDK.xcdatamodeld необходимо обновить ссылку на неё в таргете, в который интегрируется SDK.

После подключения SDK в приложение, необходимо интегрировать его в код прикладного проекта.

SDK iOS состоит из следующих модулей:

  • AssistantSDK.framework;
  • VoiceProcessingServiceSDK.framework;
  • DeviceDesignSystem.framework;
  • DevicesCore.framework;
  • OKNIKS.framework;
  • SpotterAPI.framework;
  • PaylibAPI.framework;

Ознакомиться с кодом интеграции можно в демо-приложении в файле AssistantGraph.swift.

Далее требуется привязать фреймворки к нужному таргету и отключить Embedded, т. к. они собраны статически.

Установить Build Setting: Frameworks Search Path на директорию, в которой размещены фреймворки SDK в проекте.   

Ниже приведен пример кода базовой интеграции, в соответствии с которым рекомендуется интегрировать SDK в приложение. 

import AssistantSDK
import VoiceProcessingServiceSDK
import OKNIKS
import Foundation
import DevicesCore

final class AppAssistantGraph {

    // Отобразить экран с ВА на устройстве под управлением iOS
	func makeViewController() -> UIViewController {
		let assistantGraph = AssistantGraph(
			configuration: VoiceServiceConfiguration(
				host: "wss://vpstest2.online.sberbank.ru:443/vpsdemo2/",
				channelName: "iOSDemoApp",
				channelVersion: "appInfo.version",
				connectionTimeout: 10,
				sslPinningConfiguration: .disabled,
				userChannel: "FEBRUARY",
				surface: VPSSurface(
					name: VPSSurface.Name(value: "DEMO_APP"),
					version: "0.0.1"
				)
			),
			remoteImageHostPolicy: .allGranted,
			okniksResourcesParams: ResourceLoaderParams(
				host: "some",
				resourePath: "path"
			), spotterResourcesParams: nil,
			audioSettings: .init(bufferingDuration: 0.3),
			dependencies: AssistantGraph.Dependencies(
				featureFlagProvider: AssistantFeatureFlagsProvider(),
				bankDataProvider: AssistantBankDataProvider(),
				smartAppConfiguration: SmartAppConfiguration(requestTimeout: 20),
				deeplinkService: DeeplinkService,
				logger: nil
			)
		)
		return assistantGraph.makeViewController()
	}
}

final class AssistantBankDataProvider: BankDataProvider {
	func loadToken(for system: String, callback: @escaping AssistantBankDataProvider.Completion) {
		callback(.success(""))
	}

	func getMobileSDKData() -> MobileSDKData {
		return ""
	}
}

final class AssistantFeatureFlagsProvider: FeatureFlagsProvider {
	func isEnabled(_ flag: FeatureFlag) -> FeatureFlagsStatus {
		switch flag {
		default:
			return .enabled
		}
	}
}

Авторизация приложения в службе обработки голоса

Для авторизации приложения в службе обработки голоса нужно указать обязательные параметры в VoiceServiceConfiguration

  • user_id — Уникальный UUID установки. При первом запуске на клиенте генерируется идентификатор, который потом сохраняется локально и используется при последующих запусках.
  • user_channel — Название канала. Значение, которое было настроено при получении архива с SDK.
  • token – Токен авторизации для канала приложения, который был настроен при получении архива с SDK.
  • device — Сведения об устройстве клиента. Включает следующее:

    • client_type — Тип клиента. Передается значение "SDK".
    • channel — Идентификатор приложения-хоста. Передается значение "MP_SBOL_IOS".
    • channel_version — Версия приложения. Например: "1", "8.1.0.2932_RC", "8.9.1.8".
    • platform_name — Название платформы. Передается значение "iOS".
    • platform_version — Версия платформы устройства. Передается значение из системы. Например: "8.3.0.42", "11.4".

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней