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

は、Android 8.0より古いデバイス上のコードのブロックを実行しないようにするには条件

を使用する目的は何ですか。通知チャンネルはAndroid 8.0で追加されました。古いデバイスでcreateNotificationChannel()を呼び出そうとすると、そのメソッドは存在しないため、クラッシュする可能性があります。

これは標準的な下位互換性のあるレシピです。多くの場合、ユーティリティクラスはこれを非表示にします(たとえば、SDKの...Compatという名前のクラスのほとんど)が、ここでの場合のように、自分でやることもあります。

ユーザーが、私は私がどのSDKのバージョンを定義するために使用していますcompileSdkVersionより低いAPIレベルのデバイスを持っている場合は、通知を表示するチャンネルを作成するコードを実行しないように求めたコードですに対してコンパイル?

はい。

関連する問題