全部文档

更新时间: 2021-03-10

# 功能描述

Flutter 基于融云 iOS/Android 平台的 IMLib SDK,所以该功能具体详情参见 iOS/Android 的文档

# 本地通知的实现

1.依赖 flutter_local_notifications 2.在 main.dart 实现并监听 WidgetsBindingObserver ,获取 APP 生命周期状态并保存 3.在 main.dart 中监听消息接收,如果在后台,发本地通知,否则通过 EventBus 通知会话列表和聊天页面收到了消息

详细可以参见示例代码中 main.dart 的处理,示例代码 (opens new window)

# 常见问题

示例代码

示例代码参见此处 (opens new window)

iOS 如何获取 deviceToken

参考 Runner 中 AppDelegate.m 中的实现方法, 如果是 Swift, 请参考 AppDelegate.swift (opens new window)

iOS/Android 如何将本地通知或者远程推送的内容传递至 Flutter 层

参考 示例代码 中 AppDelegate.m 中的 sendDataToFlutter 实现方法。如果是 Swift, 请参考 AppDelegate.swift (opens new window)

Android 参考 MainActivity.java 中的 sendDataToFlutter 实现

Dart 接收 iOS/Android 数据的回调

RongIMClient.onDataReceived = (Map map) {
    developer.log("object onDataReceived " + map.toString(), name: pageName);
};
已复制
1
2
3

Android 设备按返回键退出 APP,收不到消息,无法做本地通知

此时收到消息报如下错误

D/FlutterNativeView(15798): FlutterView.send called on a detached view, channel=rongcloud_im_plugin
已复制
1

这个问题的原因可以看一下 这个 Issue (opens new window) ,上面提到的像是 Flutter 本身的问题

出现这个问题本质原因是 APP 被系统回收了,用来和 Android IMLib SDK 沟通的 MethodChannel 也被回收了,但是 Android IMLib 的 IM 通道还存在,此时有消息来, Android IMLib 通过 IM 通道能够收到,但是因为 MethodChannel 被销毁,无法通知给 Flutter APP,也就无法弹本地通知

这个问题目前的建议是当按返回键退出 APP 的时候,调用 disconnect 接口主动断开 IM 通道,这样就可以走推送通道

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助