Flutter集成FCM时如何开启Android与iOS端的通知振动功能
FCM 双端开启通知振动配置方案
Android 端配置
Android 8.0及以上版本的通知行为由通知渠道控制,因此需要同时调整渠道配置和FCM payload:
- 调整通知渠道创建代码,创建时显式开启振动权限,示例:
// 原生端创建渠道 或使用flutter_local_notifications插件创建 val channel = NotificationChannel( "YO", // 对应你使用的channel_id "自定义通知渠道名称", NotificationManager.IMPORTANCE_HIGH // 重要等级至少为DEFAULT才会触发振动 ).apply { enableVibration(true) // 开启渠道振动权限 vibrationPattern = longArrayOf(0, 100, 200, 300) // 自定义振动模式:等待0ms,振100ms,停200ms,振300ms }
- 调整Node.js FCM payload的android字段,适配8.0以下版本:
在android.notification下添加振动相关配置即可:
"android": { "priority": "high", "ttl": 3600, "notification": { "channel_id": "YO", "default_vibrate_timings": true, // 使用系统默认振动节奏 // 也可自定义振动时间,单位支持秒/毫秒 // "vibrate_timings": ["0s", "0.1s", "0.2s", "0.1s"] } }
iOS 端配置
iOS的振动逻辑和通知权限、payload配置绑定:
- 首先在Flutter端请求通知权限时,显式申请振动权限,以常用的
flutter_local_notifications插件为例:
final IOSInitializationSettings initializationSettingsIOS = IOSInitializationSettings( requestVibrationPermission: true, // 开启振动权限申请 );
- 调整Node.js FCM payload的apns字段,在aps中添加振动配置:
"apns": { "payload": { "aps": { "sound": "sound_03.caf", "vibration": "default" // iOS 15及以上版本支持,指定振动模式 } }, "headers": { "apns-collapse-id": "yo", "apns-priority": "10" } }
注意:如果用户在系统设置中手动关闭了App的振动权限,以上配置不会生效,可在App内引导用户检查系统通知权限配置。
调整后的完整payload示例
const payload = { notification: { title: "title", }, android: { priority: "high", ttl: 60 * 60 * 1, notification: { channel_id: 'YO', default_vibrate_timings: true }, }, apns: { payload: { aps: { sound: "sound_03.caf", vibration: "default" } }, headers: { "apns-collapse-id": "yo", "apns-priority": "10" } }, priority: 10 }
内容的提问来源于stack exchange,提问作者genericUser
相关产品推荐
相关产品推荐

