ym88659208ym87991671
Подключение SDK - IOS | Документация SmartMarket
Skip to main content

Подключение SDK

Подключение SDK состоит из следующих шагов:

  1. Установка SDK.
  2. Привязка SDK к таргету.
  3. Добавление ресурсов.
  4. Настройка доступа к дополнительным функциям.

Шаг 1. Установите SDK

Чтобы установить SDK:

  1. Напишите на developer@sberdevices.ru и запросите архив с фреймворками SDK.
  2. Скопируйте фреймворки в папку с проектом (далее path/to/frameworks).

При наличии таргета в xcodeproj (это может быть фреймворк, библиотека, виджет и пр.) и интеграции SDK в приложение, необходимо привязать SDK к этому таргету.

Обратите внимание: фреймворки собраны статически, поэтому их не нужно добавлять в секцию Embeded Binaries.

Шаг 3. Добавьте в таргет ресурсы

Ресурсы — это картинки, звуковые файлы, анимации и сертификаты для проверки достоверности сервера. Эти ресурсы представляют собой отдельные фреймворки, которые входят в SDK.

Скопируйте или сделайте символьные ссылки на следующие русурсы из фреймворков:

  • AssistantSDK.xcframework/AssistantSDK.bundle/AssistantSDK.xcassets
  • AssistantSDK.xcframework/AssistantSDK.bundle/MappingModelV6.xcmappingmodel
  • AssistantSDK.xcframework/AssistantSDK.bundle/AssistantSDK.xcdatamodeld
  • AssistantSDK.xcframework/AssistantEarcons.bundle
  • AssistantSDK.xcframework/GlobalSign_RSA_OV_SSL_CA_2018.der
  • AssistantSDK.xcframework/sberca-root-ext-web.cer
  • AssistantSDK.xcframework/sberca-ext-web.cer
  • DevicesDesignSystem.xcframework/DevicesDesignSystem.xcassets

Добавлять ресурсы в таргет рекомендуется с помощью символьных ссылок. Это позволит автоматически обновлять ресурсы при добавлении новых.

В скрипте ниже представлены примеры символьных ссылок, которые необходимо добавлять в соответствующую директорию.

// Ресурсы AssistantSDK
ln -s "path/to/frameworks/dir/AssistantSDK.framework/AssistantSDK.bundle/AssistantSDK.xcassets" "@AssistantSDK.xcassets"
ln -s "path/to/frameworks/dir/AssistantSDK.framework/AssistantSDK.bundle/AssistantSDK.xcdatamodeld" "@AssistantSDK.xcdatamodeld"
ln -s "path/to/frameworks/dir/AssistantSDK.framework/AssistantEarcons.bundle" "@AssistantEarcons.bundle"

// Ресурсы DevicesDesignSystem
ln -s "path/to/frameworks/dir/DevicesDesignSystem.framework/DevicesDesignSystem.bundle/DevicesDesignSystem.xcassets" "@DevicesDesignSystem.xcassets"

Добавьте все созданные ссылки на ресурсы в нужный таргет проекта и проверьте, что они есть в секции Copy Bundle Resources во вкладке Builds Phases.

Шаг 4. Добавьте ресурсы для ОКНИКС (шар-логотип ассистента)

Чтобы добавить ресурсы для ОКНИНКС:

  1. Сделайте ссылки для:
    • OKNIKS.framework/OKNIKSAnimations.bundle/OKNIKSFullAnimations.xcassets, если хотите добавить все анимации сразу в bundle приложения. Это действие сильно увеличит итоговый размер приложения.
    • OKNIKS.framework/OKNIKSAnimations.bundle/OKNIKSReducedAnimations.xcassets, если хотите загружать большую часть анимаций с CDN.
  2. В AppAssistantGraph в качестве значения okniksResourcesParams задайте путь до вашего CDN и папки ресурсов, в которой лежит конфигурационный файл. Подробности можно узнать в чате поддержки.
  3. Выключите флаг okniksResourcesNormal:
case .okniksResourcesNormal: return .disabled
okniksResourcesParams: ResourceLoaderParams(
host: "https://test.stat.online.sberbank.ru",
resourePath: "VA/okniks_resources"
)
  1. Добавьте все созданные ссылки на ресурсы в нужный таргет проекта.
  2. Проверьте, что все созданные ссылки на ресурсы в есть в секции Copy Bundle Resources во вкладке Builds Phases.

Шаг 5. Обновите Info.plist вашего приложения

Приложение может запрашивать разрешение на получение доступа к дополнительным функциям, например, к микрофону и геолокации.

Чтобы получить доступ к этим функциям, необходимо подготовить текст, который будет показан пользователю, и запрашивать у него доступ к данным. Текст необходимо вставить в качестве значения элемента <string>.

Получение доступа к функциям регулируется по следующим ключам:

  • NSMicrophoneUsageDescription — для доступа к микрофону и использования голосового ассистента;
  • NSContactsUsageDescription — для поиска контактов в контактной книге клиента;
  • NSLocationWhenInUseUsageDescription — для доступа к геопозиции клиента.

Примеры использования функций:

<key>NSMicrophoneUsageDescription</key>
<string>Необходим для работы голосового помощника</string>
<key>NSContactsUsageDescription</key>
<string>Необходим для работы переводов в голосовом помощнике</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Необходим для выполнения запросов, связанных с метонахождением пользователя</string>

Шаг 6 (опционально). Добавьте скрипт fixprotobufmodule_stability.sh

Выполняйте этот шаг, если ваша версия Xcode выше, чем 12.4.

Скрипт необходим для стабильной работы фреймворка Protobuf. Его необходимо добавить в Build Phase таргета, к которому линкуется Assistant SDK.

Теперь Apple не поддерживает перенаправление GCC-флагов во фреймворки, собранные с Module Stability. Поэтому модуль Protobuf не может импортировать необходимые заголовочные файлы, и флаг GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS не обрабатывается. Скрипт позволяет модифицировать эти заголовочные файлы прямо в папке с фреймворками.

fix_protobuf_module_stability.sh:

#!/usr/bin/env bash

# Скрипт изменяет Header Protobuf, т.к. Module Stability игнорирует GCC флаги типа -D.

set -euo pipefail

# Замена PREDEFFINED MACROS GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS = 0, на 1 для нормальной компиляции Protobuf.

find "${PROJECT_DIR}/Sberthage/Build/Protobuf.xcframework/" \
-name "*.pbobjc.h" \
-exec sed \
-i \
"" \
"s/GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0/GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 1/" \
{} \;
find "${PROJECT_DIR}/Sberthage/Build/VoiceProcessingServiceSDK.xcframework/" \
-name "*.pbobjc.h"\
-exec sed \
-i \
"" \
"s/GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0/GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 1/" \
{} \;

Шаг 7 (опционально). Добавьте скрипт remove_unused_archs.sh

Выполняйте этот шаг, если ваша версия Xcode выше, чем 12.4.

Шаг необходимо выполнить, если вы получили следующую ошибку:

Building for iOS Simulator, but the linked and embedded framework 'Protobuf.framework' was built for iOS + iOS Simulator.

Добавьте настройку XCODE в xcconfig или в Build Settings проекта:

VALIDATE_WORKSPACE = YES

remove_unused_archs.sh:

#!/usr/bin/env bash

# Скрипт удаляет ненужные архитектуры из итогового приложения.

set -euo pipefail

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"

# This script loops through the frameworks embedded in the application and
# removes unused architectures.

FRAMEWORK_NAME=$1

if [ -z "$FRAMEWORK_NAME" ]; then
echo "Framework name for removing unused archs is required!" && exit 1
fi

find "$APP_PATH" -name "$FRAMEWORK_NAME" -type d | while read -r FRAMEWORK; do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"

EXTRACTED_ARCHS=()

for ARCH in $ARCHS; do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done

echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"

echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"

done
Обновлено 21 июня 2022

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

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