【问题标题】:How to restrict screen recording in iOS devices in Flutter?如何在 Flutter 中限制 iOS 设备的屏幕录制?
【发布时间】:2020-02-27 12:18:37
【问题描述】:

我正在 Flutter 中开发一个应用程序,我需要在 iOS 设备中限制屏幕录制。 我现在所做的是检查 AppDelegate 中的 UIScreen.main.isCaptured 标志,并使用我的 dart 文件中的计时器经常检查它。

有没有更好的方法来做到这一点,通过使用来自苹果的 captureDidChangeNotification,这样我就不必运行计时器,并且当屏幕录制状态发生变化时,dart 文件也会得到通知?

【问题讨论】:

    标签: ios swift flutter


    【解决方案1】:

    您在NotificationCenter 上添加capturedDidChangeNotification 观察者并将结果推送到FlutterEventChannel。然后在 Dart 端设置EventChannel,它有receiveBroadcastStream 方法,它返回一个比你可以听的Stream。确保在 iOS 部分和 Flutter 上处理关闭 Streams。

    你可以看看这些官方的听电池充电的例子,几乎是一样的(NotificationCenter + Streams):

    https://github.com/flutter/flutter/blob/master/examples/platform_channel_swift/ios/Runner/AppDelegate.swift https://github.com/flutter/flutter/blob/master/examples/platform_channel_swift/lib/main.dart

    【讨论】:

    • 我们是否必须在处理流时关闭流,或者在删除小部件时将其关闭。
    • 在 Flutter 中,你必须手动取消流。在 dispose 覆盖 State 以避免内存泄漏。如果您总是在应用程序中收听流媒体,理论上您应该可以不取消它,但无论如何我都会这样做,因为在实践中,应用程序的某些部分可能会完全重新加载而不会被系统清除内存。跨度>
    猜你喜欢
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 2014-09-01
    • 2022-06-10
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多