一个 Flutter 插件,用于在 FaceTime 通话中使用 iOS 15.0+ 实时连接 SharePlay ?。
? 这是什么?
此插件使用官方的 iOS GroupActivities API。
share_play 可用于通过 Flutter 应用中的 iOS SharePlay 功能在设备间通信数据。
为什么使用 iOS SharePlay?
- ⚡️ 它很快。
- ? 可靠(使用 Apple 服务器)。
- ? 它是“免费”的(包含在您的付费 Apple Developer 订阅中)。
- ? 非常易于实现(只需 3 行代码即可共享数据!)。
- ? 可在 iOS、macOS 和 tvOS 上运行。
⚠️ share_play 仅适用于 iOS 15.0+!在其他平台和低于 iOS 15.0 的版本上,它将不起作用。
? 入门
ℹ️ 您可以在 示例存储库 中查看完整的示例。
- 打开 Xcode 工作区项目
ios/Runner.xcworkspace。 - 在主
Runner应用中启用“Group Activities”功能。
- 导入
share_play并创建插件实例。
import 'package:shareplay/shareplay.dart';
// [...]
final _shareplayPlugin = SharePlay();
ℹ️ 快速入门
- 添加一个监听器以在收到新消息时进行处理(在
initState()方法中例如)。
@override
void initState() {
super.initState();
// [...]
_shareplayPlugin.dataStream().listen((data) {
// do what you want here :)
});
}
- 开始新的活动 ?。
_shareplayPlugin.start(title: 'My Activity');
- 从另一台设备加入活动 ?。
_shareplayPlugin.join();
ℹ️ 通过点击屏幕顶部的
SharePlay横幅,您无需调用join()方法!
- 发送您的第一条消息。
_shareplayPlugin.send('Hello from Flutter');
ℹ️ 欲了解更多信息,请查看下面的文档或 示例。
? 文档
| 名称 | 描述 | 返回值 |
|---|---|---|
.start() |
在 FaceTime 通话激活时创建一个活动 | Future<bool> 新活动是否已创建的状态 |
.join() |
在当前设备上启动共享活动,如果用户点击 SharePlay 横幅,则不是必需的 |
Future 当一个新的活动被加入时 |
.localParticipant() |
使用此属性区分当前设备上的参与者与其他设备上的参与者 | Future<SPParticipant?> 当前设备上的参与者,包括参与者 ID |
.end() |
结束整个群组的活动 | Future 活动停止时 |
.leave() |
离开当前活动 | Future 活动离开时 |
.send() |
向所有其他参与者发送消息 | Future 消息发送时 |
.currentSession() |
获取设备上的当前会话 | Future<SPSession?> 当前会话,包括会话 ID 和活动标题 |
.dataStream() |
从其他参与者接收到的消息流 | Stream<SPDataModel> 源参与者和消息数据 |
.newSessionStream() |
所有已创建会话的流 | Stream<SPSession> 已创建的会话,包括会话 ID 和活动标题 |
.participantsStream() |
当前会话中所有活动参与者的流 | Stream<List<SPParticipant>> 活动中的所有活动参与者 |
.sessionStateStream() |
当前会话状态的流。 | Stream<SPSessionState> 会话状态(SPSessionState.waiting、SPSessionState.joined 或 SPSessionState.invalidated) |
? 贡献
欢迎贡献。通过创建 PR 或创建 issue 来贡献 ?。
? 路线图
- 添加方法以检查 SharePlay 是否可用。
- 当旧版 iOS 版本不支持 SharePlay 时,显示自定义错误。
- 实现
prepareForActivation()方法。 - 创建流来处理消息数据和新会话创建。
- 获取本地数据,如参与者和会话状态。
- 离开并结束活动。
- 通过 SharePlay 发送消息。
- 加入活动。
- 开始新的活动。


