Flutter StreamChat SDK:关闭应用程序时不显示通知?
Flutter StreamChat SDK : Notifications not showing when the app is closed?
我正在开发一个 flutter 交付应用程序,我想集成聊天功能,我发现 StreamChat SDK 是最好的解决方案!
我已经集成了 SDK 并且它正在运行,所以为了在有新消息时收到通知,我在我的 flutter 应用程序中根据 docs 设置了推送通知,当我使用流对其进行测试时命令行界面
我收到了通知,当应用程序在后台运行时它也有效,但当应用程序关闭时我没有收到任何消息,仪表板日志上也没有显示任何内容!
=====我的代码========
await client.connectUser(
User(
id: sharedPreferences.getString('username'),
),
token,
);
var fcm = await FirebaseMessaging.instance.getToken();
await client.addDevice(fcm, PushProvider.firebase);
final channel = client.channel(
'messaging',
id: deliveryData['deliveryNumber'],
extraData: {
"name": deliveryData['title'],
},
);
final currentUserId = client.state.user.id;
client
.on(
EventType.messageNew,
EventType.notificationMessageNew,
)
.listen((event) async {
if (event.message?.user?.id == currentUserId) {
return;
}
final flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
final initializationSettingsAndroid =
AndroidInitializationSettings('launch_background');
final initializationSettings = InitializationSettings(
android: initializationSettingsAndroid,
);
await flutterLocalNotificationsPlugin
.initialize(initializationSettings);
await flutterLocalNotificationsPlugin.show(
event.message.id.hashCode,
'New message from : ' + event.message.user.name,
event.message.text,
NotificationDetails(
android: AndroidNotificationDetails(
'message channel',
'Message channel',
'Channel used for showing messages',
icon: '@drawable/notification',
priority: Priority.high,
importance: Importance.high,
),
),
);
});
我找到了解决方案,问题是我使用了 channel.watch();
,我还应该将用户添加到频道
channel.addMembers(["thierry", "josh"]);
以便接收 docs
中提到的推送通知
观察者 vs 会员
观察者与成员的概念可能需要澄清一下:
成员:用户和频道之间的永久关联。如果
用户在线且未观看他们将收到的频道
通知事件,如果他们离线,他们将收到推送
通知。
watchers:观察者列表是临时的。任何人都是
当前正在观看频道。
能够以非会员身份发送消息和以其他方式与频道互动需要一定的权限。例如,我们在直播频道类型上预先配置了允许非会员互动的权限,但在消息频道类型中,只有频道会员才能互动。
我正在开发一个 flutter 交付应用程序,我想集成聊天功能,我发现 StreamChat SDK 是最好的解决方案!
我已经集成了 SDK 并且它正在运行,所以为了在有新消息时收到通知,我在我的 flutter 应用程序中根据 docs 设置了推送通知,当我使用流对其进行测试时命令行界面
我收到了通知,当应用程序在后台运行时它也有效,但当应用程序关闭时我没有收到任何消息,仪表板日志上也没有显示任何内容!
=====我的代码========
await client.connectUser(
User(
id: sharedPreferences.getString('username'),
),
token,
);
var fcm = await FirebaseMessaging.instance.getToken();
await client.addDevice(fcm, PushProvider.firebase);
final channel = client.channel(
'messaging',
id: deliveryData['deliveryNumber'],
extraData: {
"name": deliveryData['title'],
},
);
final currentUserId = client.state.user.id;
client
.on(
EventType.messageNew,
EventType.notificationMessageNew,
)
.listen((event) async {
if (event.message?.user?.id == currentUserId) {
return;
}
final flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
final initializationSettingsAndroid =
AndroidInitializationSettings('launch_background');
final initializationSettings = InitializationSettings(
android: initializationSettingsAndroid,
);
await flutterLocalNotificationsPlugin
.initialize(initializationSettings);
await flutterLocalNotificationsPlugin.show(
event.message.id.hashCode,
'New message from : ' + event.message.user.name,
event.message.text,
NotificationDetails(
android: AndroidNotificationDetails(
'message channel',
'Message channel',
'Channel used for showing messages',
icon: '@drawable/notification',
priority: Priority.high,
importance: Importance.high,
),
),
);
});
我找到了解决方案,问题是我使用了 channel.watch();
,我还应该将用户添加到频道
channel.addMembers(["thierry", "josh"]);
以便接收 docs
观察者 vs 会员
观察者与成员的概念可能需要澄清一下:
成员:用户和频道之间的永久关联。如果 用户在线且未观看他们将收到的频道 通知事件,如果他们离线,他们将收到推送 通知。
watchers:观察者列表是临时的。任何人都是 当前正在观看频道。
能够以非会员身份发送消息和以其他方式与频道互动需要一定的权限。例如,我们在直播频道类型上预先配置了允许非会员互动的权限,但在消息频道类型中,只有频道会员才能互动。