Устранение неполадок пакета SDK для iOS

Важно!

Прекращение поддержки Центра приложений Visual Studio запланировано на 31 марта 2025 г. Хотя вы можете продолжать использовать Центр приложений Visual Studio до полного прекращения его использования, существует несколько рекомендуемых вариантов, на которые можно перейти.

Узнайте больше о сроках поддержки и альтернативных вариантах.

Проблемы во время установки

  1. В консоли найдите журнал утверждений с сообщением "Пакет SDK центра приложений настроен успешно". Сообщение подразумевает, что пакет SDK успешно настроен.
  2. Если вы используете Cocoapods для интеграции Центра приложений в приложение iOS и вызываете ошибку с сообщением " , CocoaPods - Unable to find a specification for AppCenterвыполните команду pod repo update , чтобы обновить локальный репозиторий Cocoapods, а затем снова запустить pod install .
  3. Если вы используете CocoaPods для интеграции Центра приложений в приложение для iOS и во время компиляции проекта возникает ошибка с сообщением о том, что framework not found AppCenter.xcframework необходимо обновить Cocoapods до последней версии, выполнив команду [sudo] gem install cocoapods.
  4. Если вы интегрируете двоичные файлы пакета SDK вручную, убедитесь, что для проекта включены модули.

Данные аналитики не отображаются на портале

  1. Убедитесь, что модули SDK интегрированы правильно.

  2. Убедитесь, что вместе с вызовом метода включен правильный start:withServices: секрет приложения. Вы можете скопировать точный start:withServices:код, открыв приложение на портале и перейдя на страницу начало работы.

  3. Если вы хотите просмотреть журналы, отправляемые на серверную часть, измените уровень журнала на Подробный в приложении. Затем пакет SDK выведет журналы на консоль. Вставьте следующий вызов перед запуском пакета SDK:

    [MSACAppCenter setLogLevel:MSACLogLevelVerbose]
    
    AppCenter.logLevel = .verbose
    

    Убедитесь, что в журналах отображается сообщение "Пакет SDK центра приложений настроен успешно" (на уровне журнала INFO), а затем проверка, если отображаются журналы HTTPS-запросов.

  4. Убедитесь, что устройство подключено к сети.

  5. Иногда для отображения журналов на портале может потребоваться несколько минут. Подождите некоторое время, если это так.

  6. Чтобы проверка, получила ли серверная часть Центра приложений ваши данные, перейдите в раздел Поток журнала в службе Аналитики. События должны отображаться после отправки.

Сбои не отображаются на портале

  1. Убедитесь, что модули SDK интегрированы правильно.

  2. Убедитесь, что вместе с вызовом метода включен правильный start:withServices: секрет приложения. Вы можете скопировать точный start:withServices: код, открыв приложение на портале и перейдя на начало работы страницу.

  3. При сбоях центра приложений журнал сбоев будет пересылаться только после перезапуска приложения. Кроме того, пакет SDK не будет пересылать журналы сбоев, если вы подключены к отладчику. Убедитесь, что отладчик не подключен при сбое приложения.

  4. Если вы хотите просмотреть журналы, отправляемые на серверную часть, измените уровень журнала на Подробный в приложении. Затем пакет SDK выведет журналы на консоль. Вставьте следующий вызов перед запуском пакета SDK:

    [MSACAppCenter setLogLevel:MSACLogLevelVerbose]
    
    AppCenter.logLevel = .verbose
    

    Убедитесь, что в журналах отображается сообщение "Пакет SDK центра приложений настроен успешно" (на уровне журнала INFO), а затем проверка, если отображаются журналы HTTPS-запросов.

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

  6. Убедитесь, что устройство подключено к сети.

  7. Иногда для отображения журналов на портале может потребоваться несколько минут. Подождите некоторое время, если это так.

  8. Проверьте, обнаружил ли пакет SDK сбой при следующем запуске приложения. Вы можете вызвать API, чтобы проверка, произошел ли сбой приложения в последнем сеансе и отображается ли оповещение. Вы также можете расширить обратный вызов, didSucceedSendingErrorReport чтобы узнать, был ли он успешно отправлен на сервер.

  9. Чтобы проверка, что серверная часть Центра приложений получила сбой, перейдите в раздел Поток журнала в службе Аналитики. Ваши сбои должны появиться там после отправки.

Оповещение, которое запрашивает обновление, содержит не строки, а только ключи для них.

Это означает, что AppCenterDistributeResources.bundle объект не был добавлен в проект. Убедитесь, что файл удален в проект Xcode, и он отображается на этапе сборки целевого Copy Bundle Resources объекта приложения. Он должен появиться там, если вы добавили файл с помощью перетаскивания . Xcode делает это автоматически. Если файл отсутствует на этапе сборки, добавьте его, чтобы он скомпилировался в пакет приложения.

Если вы используете Cocoapods, он автоматически позаботится о ресурсах. Попробуйте переустановить модуль pod.

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

Начиная с версии 0.11.0 пакета SDK для iOS, Центр приложений использует SQLite для сохранения журналов перед их отправкой в серверную часть. Если вы обобщаете приложение с собственной библиотекой SQLite, а не с помощью библиотеки, предоставляемой ОПЕРАЦИОННОй системой, в консоли [AppCenter] ERROR: -[MSACDBStorage executeSelectionQuery:]/147 Failed to open database могут появиться ошибки, подобные этой, и в серверной части не будут отображаться аналитические сведения или сведения о сбоях. Обновите пакет SDK до версии 0.13.0 или более поздней.

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

Если обновления из приложения включены, они заблокируют автоматические тесты пользовательского интерфейса. Процесс обновления будет пытаться пройти проверку подлинности в серверной части Центра приложений. Не рекомендуется включать распространение в Центре приложений для целевого объекта теста пользовательского интерфейса.

Почему пакет SDK распространяется как "статическая библиотека"

Основными целями проектирования пакета SDK центра приложений являются минимальное влияние на приложение, использующий Центр приложений, и наличие модульного пакета SDK. Это приведет к распространению пакета SDK в виде нескольких динамических связанных общих библиотек.

Исторически сложилось так, что iOS не поддерживала динамические связанные общие библиотеки, но была добавлена в iOS 8, как описано в этой записи блога Лэндона Фуллера.

Однако Центр приложений распространяется как статически связанная общая библиотека, заключенная в «жирную» поддельную платформу. Это означает, что пакет SDK связан во время компиляции , а не во время запуска для повышения производительности. Загрузка нескольких динамически связанных общих библиотек требует времени.

Apple рекомендует оптимизировать запуск приложения, чтобы занять не более 400 мс в сеансе WWDC. Они специально рекомендуют статические общие библиотеки вместо динамических общих библиотек для достижения этой цели. Распространение пакета SDK центра приложений для iOS в виде статической общей библиотеки соответствует рекомендациям Apple, чтобы обеспечить оптимальную производительность и минимальное влияние на приложение, включающее пакет SDK.

Чтобы узнать больше о статически связанных общих библиотеках и динамических связанных общих библиотеках, рекомендуем ознакомиться с общей документацией Apple по этой теме.

Почему двоичные файлы пакета SDK так велики? Меня беспокоит размер моего приложения

Двоичные файлы AppCenter распространяются как "жирные" платформы, содержащие срезы для всех архитектур iPhone и симулятора iPhone. Вот почему, например , AppCenter.framework требуется скачать 10,5 МБ.

Скомпилированный размер двоичных файлов пакета SDK будет гораздо меньше, чем .framework размер, добавляемый в приложение в Xcode. Кроме того, имейте в виду, что сборки выпуска также будут меньше, чем отладочные сборки.

Чтобы проиллюстрировать это, мы создали пустое приложение Objective-C с Xcode 9.2, добавили в приложение двоичные файлы Центра приложений и распространили сборки выпусков на iPhone 7 под управлением iOS 11.3.

Мы выполнили тесты без включения bitcode и не использовали App Thinning. Вы можете использовать эти методы, чтобы еще больше уменьшить двоичный размер приложения.

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

Используемые модули Центра приложений Экспортируемый размер IPA Размер установки
Нет (пустое приложение) 24 КБ 132 КБ
Аналитика Центра приложений 120 КБ 377 КБ
Сбой Центра приложений 239 КБ 705 КБ
Распространение через Центр приложений 163 КБ 528 КБ
Все модули Центра приложений 314 КБ 930 КБ

Защита значения секрета Центра приложений

app_secret это идентификатор вашего приложения. Необходимо знать, к какому приложению применяется трафик, и его нельзя использовать для извлечения или изменения существующих данных. Если вы app_secret подвергаетесь риску, самый большой риск заключается в отправке плохих данных в приложение, но это не повлияет на безопасность данных.

Чтобы получить конфиденциальные данные, необходимо предоставить маркер приложения или пользователя, который создается на стороне клиента. Невозможно сделать данные на стороне клиента полностью безопасными.

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