Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Центр приложений Visual Studio был прекращен 31 марта 2025 г., за исключением функций аналитики и диагностики, которые будут поддерживаться до 30 июня 2026 г. Подробнее.
Настройте уровень журнала
Вы можете контролировать количество сообщений журнала, создаваемых App Center, которые отображаются в LogCat. Используйте AppCenter.setLogLevel() API для включения дополнительного ведения логов во время отладки. Уровни логов соответствуют тем, которые определены в android.util.Log. По умолчанию оно устанавливается ASSERT для приложений, не отлаживаемых и WARN для отлаживаемых приложений. Уровень журнала можно задать в любое время.
Чтобы иметь максимально возможное количество сообщений журнала, используйте Log.Verbose.
AppCenter.setLogLevel(Log.VERBOSE);
AppCenter.setLogLevel(Log.VERBOSE)
Определение установок
Пакет SDK центра приложений создает идентификатор UUID для каждого устройства после установки приложения. Этот идентификатор остается неизменным для устройства при обновлении приложения, а новый создается только при повторной установке приложения или пользователь вручную удаляет все данные приложения. Следующий API полезен для отладки.
AppCenter.getInstallId();
AppCenter.getInstallId()
Этот API является асинхронным, см. дополнительные сведения об этом в руководстве по асинхронным API Центра приложений .
Замечание
Этот метод должен использоваться только после AppCenter запуска, он всегда будет возвращать null до запуска.
Идентификация пользователей
Пакет SDK центра приложений поддерживает настройку идентификатора пользователя , который используется для расширения отчетов о сбоях. Чтобы использовать эту возможность, выполните следующие действия.
- Настройте SDK для Центра приложений, вызвав
AppCenter.start(...), как указано в Руководстве по быстрому началу работы с SDK App Center. - Установите
userIDв SDK, используя следующий код:
AppCenter.setUserId("your-user-id");
AppCenter.setUserId("your-user-id")
После задания идентификатора пользователя можно воспользоваться функцией поиска Центра приложений, чтобы найти конкретные отчеты о сбоях для этого идентификатора. Дополнительные сведения см. в документации по поиску в Центре приложений.
Замечание
Значение идентификатора пользователя ограничено 256 символами. Он будет отображаться с отчетами о сбоях, но не используется для агрегирования или подсчета затронутых пользователей. Если вы несколько раз задали идентификатор пользователя, будет использоваться только последний идентификатор пользователя. Перед каждым запуском приложения необходимо задать идентификатор пользователя, так как это значение не хранится пакетом SDK между запусками.
Отключите все службы во время выполнения
Если вы хотите отключить все службы Центра приложений setEnabled() одновременно, используйте API. При отключении пакет SDK не перенаправит какие-либо сведения в Центр приложений.
AppCenter.setEnabled(false);
AppCenter.setEnabled(false)
Чтобы включить все службы снова, используйте один и тот же API, но передайте true в качестве параметра.
AppCenter.setEnabled(true);
AppCenter.setEnabled(true)
Состояние сохраняется в хранилище устройства во время запуска приложения.
Этот API является асинхронным, см. дополнительные сведения об этом в руководстве по асинхронным API Центра приложений .
Замечание
Этот метод должен использоваться только после того, как AppCenter был запущен.
Запретить сетевые запросы
В пакете SDK центра приложений сетевые запросы разрешены по умолчанию. Если вы хотите отправить данные, собираемые SDK Центра приложений с согласия пользователя, вы можете запретить автоматическую отправку данных.
AppCenter.setNetworkRequestsAllowed(false);
AppCenter.setNetworkRequestsAllowed(false)
В этом случае пакет SDK центра приложений продолжает собирать данные, но он будет отправляться только в том случае, если будут разрешены сетевые запросы.
AppCenter.setNetworkRequestsAllowed(true);
AppCenter.setNetworkRequestsAllowed(true)
Замечание
Это значение сохраняется между запусками.
В любое время можно проверить, разрешена ли отправка данных в пакете SDK центра приложений.
AppCenter.isNetworkRequestsAllowed();
AppCenter.isNetworkRequestsAllowed()
Замечание
Значение, сохраненное ранее в SharedPreferences, игнорируется до тех пор, пока AppCenter не будет запущено.
Он вернет последний набор значений, используя setNetworkRequestsAllowed или true если значение не было изменено до запуска AppCenter.
Изменение состояния службы в режиме реального времени
Включите или отключите службы во время выполнения с помощью следующего кода:
Analytics.setEnabled(false);
Analytics.setEnabled(false)
Замечание
Этот метод должен использоваться только после того, как Analytics был запущен.
Проверьте, включен ли Центр приложений
Вы также можете проверить, включен ли Центр приложений или нет.
AppCenter.isEnabled();
AppCenter.isEnabled()
Этот API является асинхронным, см. дополнительные сведения об этом в руководстве по асинхронным API Центра приложений .
Замечание
Этот метод должен использоваться только после AppCenter запуска, он всегда будет возвращать false до запуска.
Проверка версии пакета SDK для Центра приложений во время выполнения
Вы можете получить версию пакета SDK центра приложений, которую вы используете в настоящее время.
AppCenter.getSdkVersion();
AppCenter.getSdkVersion()
Размер хранилища
При использовании пакета SDK Центра приложений журналы хранятся локально на устройстве. Большие журналы могут занять много места, поэтому вы можете ограничить размер локальной базы данных. Это также полезно в сочетании с API pause и resume. Если вы ожидаете, что они будут приостановлены в течение длительного времени, можно использовать больший размер базы данных для хранения дополнительных событий.
С помощью setMaxStorageSize API можно задать размер локальной базы данных. API является асинхронным, а обратный вызов вызывается при запуске служб Центра приложений. По этой причине setMaxStorageSize необходимо вызвать перед вызовом AppCenter.start(...). Вы можете вызывать API только один раз.
// Use 20 MB for storage.
AppCenter.setMaxStorageSize(20 * 1024 * 1024L).thenAccept(new AppCenterConsumer<Boolean>() {
@Override
public void accept(Boolean success) {
// The success parameter is false when the size can't be honored.
}
});
AppCenter.start("{Your App Secret}", Analytics.class);
// Use 20 MB for storage.
AppCenter.setMaxStorageSize(20 * 1024 * 1024).thenAccept {
// The success parameter (it) is false when the size can't be honored.
}
AppCenter.start(application, "{Your App Secret}", Analytics::class.java)
Если максимальный размер хранилища не задан, пакет SDK использует максимальный размер по умолчанию размером 10 МБ. Минимальный размер, который можно задать, составляет 20 КБ.
Замечание
Фактический максимальный размер хранилища может быть выше выбранного значения. SQLite округляет размер до следующего кратного размера страницы. Пакет SDK Центра приложений использует размер страницы 4 КБ.
Замечание
Журналы старше 25 дней будут удалены.
Добавление хранилищ рассылки
По умолчанию обновления в приложении работают для приложений, установленных из определенного списка магазинов. Если вы хотите распространить приложение через магазины, которые не включены в предопределенный список магазинов, вы можете добавить необходимый установщик пакетов с помощью API ниже перед запуском Центра приложений:
Set<String> stores = new HashSet<String>();
stores.add("com.store1.packageinstaller");
stores.add("com.store2.packageinstaller");
Distribute.addStores(stores);
Замечание
Не добавляйте магазины, такие как Google Play, чтобы избежать каких-либо ограничений.
Неудачные вызовы API
Существует множество причин, по которым обратный вызов может завершиться ошибкой.
- Указанный размер является недопустимым значением (менее 20 КБ или больше 140 ТБ).
- Текущий размер базы данных превышает указанный максимальный размер.
- API уже был вызван. Его можно настроить только один раз на каждый процесс.
- API был вызван после
AppCenter.start(...).
Вы можете проверить предупреждения и ошибки в консоли с помощью журнального тега AppCenter для решения проблем конфигурации.
Асинхронные API в пакете SDK для Android
Асинхронные API возвращают AppCenterFuture объект, а не возвращают результат напрямую.
Вы можете либо вызвать get() на объекте будущего, чтобы синхронно ожидать результата, либо предоставить обратный вызов, заполнив соответствующие типы возвращаемых данных при вызове API.
AppCenterFuture<{ReturnType}> future = {AnyAsyncApi}();
future.thenAccept(new AppCenterConsumer<{ReturnType}>() {
@Override
public void accept({ReturnType} result) {
// do something with result, this is called back in UI thread.
}
});
val future = {AnyAsyncApi}()
future.thenAccept(object : AppCenterConsumer<{ReturnType}> {
override fun accept(t: {ReturnType}?) {
// do something with result, this is called back in UI thread.
}
})
Чтобы избежать блокировки потока пользовательского интерфейса, который приводит к замедлению работы приложения, рекомендуется использовать thenAccept с обратным вызовом все время.
В рабочем потоке можно вызвать {AnyAsyncApi}().get().
Пример обратного вызова:
AppCenter.isEnabled().thenAccept(new AppCenterConsumer<Boolean>() {
@Override
public void accept(Boolean enabled) {
Log.d("MyApp", "AppCenter.isEnabled=" + enabled);
}
});
AppCenter.isEnabled().thenAccept { enabled ->
Log.d("MyApp", "AppCenter.isEnabled=$enabled")
}
Синхронный пример:
boolean enabled = AppCenter.isEnabled().get();
val enabled = AppCenter.isEnabled().get()