前提・実現したいこと
Kotlinを使ってFirebaseからFCMで通知を送るアプリをAndroid Studioで作っています。
以下のページを参考にMyFirebaseMessagingServiceクラスを作成したところ
onMessageReceivedメソッドのNotificationCompat.Builder(this, CHANNEL_ID)の部分でType mismatchと表示されました。
型が違うと言われているのは分かるのですがどうすればいいのか分からず詰まってしまいました。
エラーを解消するにはどうすれば良いでしょうか?
https://www.aizulab.com/blog/android-firebase-fcm/
発生している問題・エラーメッセージ
Type mismatch. Required: Context Found: MyFirebaseMessagingService
該当のソースコード
Kotlin
1package com.example.watchdog 2 3import android.app.NotificationChannel 4import android.app.NotificationManager 5import android.os.Build 6import android.util.Log 7import androidx.core.app.NotificationCompat 8import androidx.core.content.ContextCompat.getSystemService 9import com.google.firebase.messaging.FirebaseMessagingService 10import com.google.firebase.messaging.RemoteMessage 11 12class MyFirebaseMessagingService : FirebaseMessagingService() { 13 14 companion object { 15 16 private const val CHANNEL_ID = "com.aizulab.sample.fcm.MY_CHANNEL" 17 } 18 19 override fun onMessageReceived(remoteMessage: RemoteMessage?) { 20 remoteMessage?.data?.also { data -> 21 val title = data["title"] 22 val message = data["message"] 23 24 // Android O(8.0) 以上で通知を表示する場合はチャンネルIDを指定する必要があるので 25 // 処理を分けます 26 val builder = if (Build.VERSION_CODES.O <= Build.VERSION.SDK_INT) { 27 NotificationCompat.Builder(this, CHANNEL_ID) //ここがエラーになる 28 } 29 else { 30 NotificationCompat.Builder(this) //ここがエラーになる 31 } 32 val notification = builder 33 .setSmallIcon(R.mipmap.ic_launcher) // アイコンは指定必須です 34 .setContentTitle(title) // 通知に表示されるタイトルです 35 .setContentText(message) // 通知内容を設定します 36 .build() 37 // 通知を表示します 38 val nm = getSystemService(NOTIFICATION_SERVICE) as NotificationManager 39 nm.notify(0, notification) 40 } 41 } 42 43 override fun onNewToken(instanceToken: String?) { 44 // テストで使用するため、ログにトークンを出力します 45 Log.i("SampleFCM", "token: $instanceToken") 46 47 // 同時に通知の設定をここでしてしまいます 48 val nm = getSystemService(NOTIFICATION_SERVICE) as NotificationManager 49 // Android O(8.0) 以上で通知を使用する場合は通知チャンネルを作成する必要があります 50 if (Build.VERSION_CODES.O <= Build.VERSION.SDK_INT) { 51 var channel = nm.getNotificationChannel(CHANNEL_ID) 52 if (channel == null) { 53 channel = NotificationChannel( 54 CHANNEL_ID, 55 "プッシュ通知用のチャンネルです", 56 NotificationManager.IMPORTANCE_HIGH) 57 nm.createNotificationChannel(channel) 58 } 59 } 60 } 61}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/04 05:34
2020/07/04 06:25