기타 Android API

중요

Visual Studio App Center는 2025년 3월 31일에 사용 중지될 예정입니다. Visual Studio App Center가 완전히 사용 중지될 때까지 계속 사용할 수 있지만 마이그레이션을 고려할 수 있는 몇 가지 권장 대안이 있습니다.

지원 타임라인 및 대안에 대해 자세히 알아보세요.

로그 수준 조정

LogCat에 표시되는 App Center에서 로그 메시지의 양을 제어할 수 있습니다. API를 AppCenter.setLogLevel() 사용하여 디버깅하는 동안 추가 로깅을 사용하도록 설정합니다. 로그 수준은 에 android.util.Log정의된 수준에 해당합니다. 기본적으로 디버깅할 수 없는 애플리케이션 및 WARN 디버깅할 수 있는 애플리케이션의 경우 로 설정 ASSERT 됩니다. 언제든지 로그 수준을 설정할 수 있습니다.

가능한 한 많은 로그 메시지를 사용하려면 를 사용합니다 Log.Verbose.

AppCenter.setLogLevel(Log.VERBOSE);
AppCenter.setLogLevel(Log.VERBOSE)

설치 식별

App Center SDK는 앱이 설치되면 각 디바이스에 대한 UUID를 만듭니다. 이 식별자는 앱이 업데이트되고 앱이 다시 설치되거나 사용자가 모든 앱 데이터를 수동으로 삭제할 때만 새 식별자가 생성될 때 디바이스에 대해 동일하게 유지됩니다. 다음 API는 디버깅 목적으로 유용합니다.

AppCenter.getInstallId();
AppCenter.getInstallId()

이 API는 비동기입니다. 자세한 내용은 App Center 비동기 API 가이드에서 확인할 수 있습니다.

참고

이 메서드는 가 시작된 후에 AppCenter 만 사용해야 하며, 시작 전에 항상 반환 null 됩니다.

사용자 식별

App Center SDK는 크래시 보고서를 보강하는 데 사용되는 사용자 ID 설정을 지원합니다. 이 기능을 사용하려면 다음을 수행합니다.

  1. App Center SDK 시작 가이드에 설명된 대로 를 호출 AppCenter.start(...) 하여 App Center SDK를 구성합니다.
  2. userID 다음 코드를 사용하여 SDK에서 를 설정합니다.
AppCenter.setUserId("your-user-id");
AppCenter.setUserId("your-user-id")

사용자 ID를 설정한 후 App Center의 검색 기능을 사용하여 ID에 대한 특정 크래시 보고서를 검색할 수 있습니다. App Center의 검색 설명서에서 자세히 알아보세요.

참고

사용자 ID의 값은 256자로 제한됩니다. 충돌 보고서와 함께 표시되지만 영향을 받는 사용자의 집계 또는 수에는 사용되지 않습니다. 사용자 ID를 여러 번 설정하는 경우 마지막 사용자 ID만 사용됩니다. 이 값은 시작 사이에 SDK에 의해 저장되지 않으므로 각 애플리케이션을 시작하기 전에 사용자 ID를 직접 설정해야 합니다.

런타임에 모든 서비스 사용 안 함

모든 App Center 서비스를 한 번에 사용하지 않도록 설정하려면 API를 setEnabled() 사용합니다. 사용하지 않도록 설정하면 SDK는 App Center에 정보를 전달하지 않습니다.

AppCenter.setEnabled(false);
AppCenter.setEnabled(false)

모든 서비스를 한 번에 사용하도록 설정하려면 동일한 API를 사용하지만 매개 변수로 전달 true 합니다.

AppCenter.setEnabled(true);
AppCenter.setEnabled(true)

상태는 애플리케이션이 시작되는 동안 디바이스의 스토리지에 유지됩니다.

이 API는 비동기입니다. 자세한 내용은 App Center 비동기 API 가이드에서 확인할 수 있습니다.

참고

이 메서드는 가 시작된 후에 AppCenter 만 사용해야 합니다.

네트워크 요청 허용 불허

App Center SDK에서 네트워크 요청은 기본적으로 허용됩니다. App Center SDK가 사용자 우려로 수집하는 데이터를 보내려면 자동 전송 데이터를 허용하지 않습니다.

AppCenter.setNetworkRequestsAllowed(false);
AppCenter.setNetworkRequestsAllowed(false)

이 경우 App Center SDK는 계속해서 데이터를 수집하지만 네트워크 요청이 허용되는 경우에만 전송됩니다.

AppCenter.setNetworkRequestsAllowed(true);
AppCenter.setNetworkRequestsAllowed(true)

참고

이 값은 시작 사이에 유지됩니다.

언제든지 App Center SDK에서 데이터를 보낼 수 있는지 여부를 검사 수 있습니다.

AppCenter.isNetworkRequestsAllowed();
AppCenter.isNetworkRequestsAllowed()

참고

에 이전에 SharedPreferences 저장된 값은 가 시작될 때까지 AppCenter 무시됩니다. AppCenter가 시작되기 전에 값이 변경되지 않은 경우 또는 true 를 사용하여 setNetworkRequestsAllowed 설정된 마지막 값을 반환합니다.

런타임에서 서비스 상태 변경

다음 코드를 사용하여 런타임에 서비스를 사용하거나 사용하지 않도록 설정합니다.

Analytics.setEnabled(false);
Analytics.setEnabled(false)

참고

이 메서드는 가 시작된 후에 Analytics 만 사용해야 합니다.

App Center가 사용하도록 설정되어 있는지 확인

App Center를 사용할지 여부를 검사 수도 있습니다.

AppCenter.isEnabled();
AppCenter.isEnabled()

이 API는 비동기입니다. 자세한 내용은 App Center 비동기 API 가이드에서 확인할 수 있습니다.

참고

이 메서드는 가 시작된 후에 AppCenter 만 사용해야 하며, 시작 전에 항상 반환 false 됩니다.

런타임 시 App Center SDK 버전 확인

현재 사용 중인 App Center SDK 버전을 가져올 수 있습니다.

AppCenter.getSdkVersion();
AppCenter.getSdkVersion()

스토리지 크기

App Center SDK를 사용하는 경우 로그는 디바이스에 로컬로 저장됩니다. 큰 로그는 많은 공간을 차지할 수 있으므로 로컬 데이터베이스의 크기를 제한하도록 선택할 수 있습니다. 또한 및 resume API와 함께 pause 유용합니다. 오랫동안 일시 중지될 것으로 예상되는 경우 더 큰 데이터베이스 크기를 사용하여 더 많은 이벤트를 저장할 수 있습니다.

API를 setMaxStorageSize 사용하여 로컬 DB의 크기를 설정할 수 있습니다. API는 비동기적이며 App Center 서비스를 시작할 때 콜백이 호출됩니다. 따라서 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는 기본 최대 크기인 10MB를 사용합니다. 설정할 수 있는 최소 크기는 20KB입니다.

참고

실제 최대 스토리지 크기는 선택한 값보다 클 수 있습니다. SQLite는 크기를 페이지 크기의 다음 배수로 반올림합니다. App Center SDK는 4KB의 페이지 크기를 사용합니다.

참고

25일보다 오래된 로그는 삭제됩니다.

배포 저장소 추가

기본적으로 앱 내 업데이트는 정의된 저장소 목록에서 설치된 앱에 대해 작동합니다. 미리 정의된 저장소 목록에 포함되지 않은 저장소를 통해 애플리케이션을 배포하려는 경우 App Center를 시작하기 전에 아래 API를 사용하여 필요한 패키지 설치 관리자를 추가할 수 있습니다.

    Set<String> stores = new HashSet<String>();
    stores.add("com.store1.packageinstaller");
    stores.add("com.store2.packageinstaller");
    Distribute.addStores(stores);

참고

제한을 피하기 위해 Google Play와 같은 스토어를 추가하지 마세요.

실패한 API 호출

콜백이 실패할 수 있는 여러 가지 이유가 있습니다.

  • 지정된 크기가 잘못된 값입니다(20KB 미만 또는 140TB보다 큼).
  • 현재 데이터베이스 크기가 지정된 최대 크기보다 큽니다.
  • API가 이미 호출되었습니다. 프로세스당 한 번만 구성할 수 있습니다.
  • API는 이후에 AppCenter.start(...)호출되었습니다.

로그 태그를 사용하여 AppCenter 콘솔에서 경고 및 오류를 검사 구성 문제를 해결할 수 있습니다.

Android SDK의 비동기 API

비동기 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.
    }
})

애플리케이션의 속도를 저하시키는 UI 스레드를 차단하지 않도록 하려면 항상 콜백과 함께 를 사용하는 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()