flutter ios 15 shareplay logo

一个 Flutter 插件,用于在 FaceTime 通话中使用 iOS 15.0+ 实时连接 SharePlay ?。

? 这是什么?

此插件使用官方的 iOS GroupActivities API

share_play 可用于通过 Flutter 应用中的 iOS SharePlay 功能在设备间通信数据。

为什么使用 iOS SharePlay?

  • ⚡️ 它很
  • ? 可靠(使用 Apple 服务器)。
  • ? 它是“免费”的(包含在您的付费 Apple Developer 订阅中)。
  • ? 非常易于实现(只需 3 行代码即可共享数据!)。
  • ? 可在 iOSmacOStvOS 上运行。

⚠️ share_play 仅适用于 iOS 15.0+!在其他平台和低于 iOS 15.0 的版本上,它将不起作用。

flutter ios 15 shareplay group activities preview

? 入门

ℹ️ 您可以在 示例存储库 中查看完整的示例。

  • 打开 Xcode 工作区项目 ios/Runner.xcworkspace
  • 在主 Runner 应用中启用“Group Activities”功能。

enable group activities capabilities xcode

  • 导入 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.waitingSPSessionState.joinedSPSessionState.invalidated

? 贡献

欢迎贡献。通过创建 PR 或创建 issue 来贡献 ?。

? 路线图

  • 添加方法以检查 SharePlay 是否可用。
  • 当旧版 iOS 版本不支持 SharePlay 时,显示自定义错误。
  • 实现 prepareForActivation() 方法。
  • 创建流来处理消息数据和新会话创建。
  • 获取本地数据,如参与者和会话状态。
  • 离开并结束活动。
  • 通过 SharePlay 发送消息。
  • 加入活动。
  • 开始新的活动。

GitHub

查看 Github