Другие API Android

Важно!

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

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

Настройка уровня журнала

Вы можете управлять количеством сообщений журнала, отображаемых в LogCat, с помощью Центра приложений. Используйте API, AppCenter.setLogLevel() чтобы включить дополнительное ведение журнала во время отладки. Уровни журнала соответствуют уровням, определенным в 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 центра приложений поддерживает настройку идентификатора пользователя , который используется для дополнения отчетов о сбоях. Чтобы использовать эту возможность, выполните следующие действия.

  1. Настройте пакет SDK центра приложений, вызвав метод AppCenter.start(...) , как описано в руководстве по началу работы с пакетом SDK центра приложений.
  2. 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 центра приложений журналы хранятся локально на устройстве. Большие журналы могут занимать много места, поэтому вы можете ограничить размер локальной базы данных. Это также полезно в сочетании pause с API и 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()