fcm通知在Android最新版本OREO中不起作用。
以下是我的代码:
androidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example">
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:allowBackup="true"
android:icon="@mipmap/luncher_logo"
android:label="@string/app_name"
android:roundIcon="@mipmap/luncher_logo"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".WelcomeActivity">
<intent-filter>
<action android:name="com.example.action.MAIN" />
<category android:name="com.example.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity" />
<service android:name=".firebase.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name=".firebase.FirebaseIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
</manifest>
在Android Oreo制作渠道中很重要,当您创建通知时,您必须传递通道ID,否则您的通知不会显示在Oreo设备中。
更多信息
快速修复是:在通知类中使用setChannelid方法。
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_notif_icon)
.setContentTitle("testTitle")
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setChannelId("testChannelId") // set channel id
.setContentIntent(pendingIntent);
此链接中的完整答案。
来自Android 8.0(API级别26 (,支持并推荐通知通道。
FCM提供了一个带有基本设置的默认通知频道。
如果您喜欢创建和使用自己的默认频道,请将default_notification_channel_id
设置为Notification Channel对象的ID,如下所示。
FCM每当输入消息不明确设置通知频道时都会使用此值。
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/default_notification_channel_id"/>
您可以从此链接创建通道ID
您需要创建频道才能在Oreo
中显示通知。
如果您使用默认的燃料通知,则可以在清单中添加channel_id
。
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/default_notification_channel_id"/>
如果您手动创建通知,则需要以编程方式创建频道。有关官方文档的更多详细信息。