0

https://github.com/firebase/quickstart-android/tree/master/messaging에서 제공되는 Firebase Cloud Messaging 빠른 시작 샘플 프로젝트를 구현 중입니다.이를 내 앱에 통합합니다.Firebase Cloud Messaging 샘플 프로젝트의 "if (Build.VERSION.SDK_INT> = Build.VERSION_CODES.O) {"조건의 목적은 무엇입니까?

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 
    // Create channel to show notifications. 
    String channelId = getString(R.string.default_notification_channel_id); 
    String channelName = getString(R.string.default_notification_channel_name); 
    NotificationManager notificationManager = 
      getSystemService(NotificationManager.class); 
    notificationManager.createNotificationChannel(new NotificationChannel(channelId, 
      channelName, NotificationManager.IMPORTANCE_LOW)); 
} 

조건 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){}를 사용하는 목적은 무엇인가 : https://github.com/firebase/quickstart-android/blob/master/messaging/app/src/main/java/com/google/firebase/quickstart/fcm/MainActivity.java에서 나는 다음과 같은 코드 블록을 볼 수 있습니까? 내가 이해 한대로 Build.VERSION.SDK_INT은 앱이 설치된 기기의 API 레벨을 반환하고 Build.VERSION_CODES.O은 app/build.gradle 파일에서 컴파일 할 API 레벨로 정의합니다 (예 : compileSdkVersion 26). 컴파일 할 SDK 버전을 정의하는 데 사용하는 compileSdkVersion보다 낮은 API 레벨을 가진 장치가있는 경우 알림을 표시 할 채널을 만드는 코드를 실행하지 않도록 코드에서 요청합니까? 나는 그 상태의 목적을 이해하지 못하고있다. 그런데 내 build.gradle 파일에 compileSdkVersion 26을 사용하고 있기 때문에 API 레벨이 23이고 기대되는 전화로 테스트 중이므로 전체 코드 블록이 실행되고 있지 않습니다. 이 코드의 목적을 분명히하는 데 도움을 주시면 감사하겠습니다. 물론 제가 작성한 코드는 아닙니다. 나는 https://github.com/firebase/quickstart-android/blob/master/messaging/app/src/main/java/com/google/firebase/quickstart/fcm/MainActivity.java에서 가져 갔지만, 나는 그것을 이해하려고 노력하고있다. 고맙습니다.

답변

1

는 안드로이드 8.0보다 오래된 장치에서 코드 블록을 실행 방지하기 위해 조건

를 사용하는 목적은 무엇인가. 알림 채널은 Android 8.0에 추가되었습니다. 구식 장치에 createNotificationChannel()을 호출하면 해당 메서드가 존재하지 않으므로 충돌이 발생합니다.

이것은 표준 이전 버전과 호환되는 제조법입니다. 종종 유틸리티 클래스는이 항목을 숨 깁니다 (예 : SDK에있는 대부분의 클래스 ...Compat).하지만 때로는 여기에서와 같이 직접 처리해야합니다.

는 사용자가 내가 생각하는 SDK 버전을 정의하기 위해 사용하고있는 compileSdkVersion보다 낮은 API 레벨을 가진 장치가있는 경우, 알림을 표시 할 채널을 생성하는 코드를 실행하지 않도록 요청하는 코드입니다 에 대해 컴파일?

예.