Skip to content

如何检测“允许从其它 App 粘贴”选项是否允许? #19

Description

@s1ntoneli

一个不靠谱并且要弹一次窗的办法,但是能用:

计算获取 UIPasteboard.general.string 花了多长时间。

如果已经允许,那么通常在16ms,也就是一帧的时间内完成。有时候也两帧三帧。
而如果是询问,则通常需要1s或更久。

所以,通过这个时间差,就可以猜测出是否已经授权。

办法是土办法,但是能用,取决于你想要什么样的交互。

// 抽象检测方法
private func checkPastePermission() -> Bool {
    let startTime = DispatchTime.now()
    _ = UIPasteboard.general.string
    let milliseconds = Double(DispatchTime.now().uptimeNanoseconds - startTime.uptimeNanoseconds) / 1_000_000
    
    print("剪贴板访问耗时: \(String(format: "%.2f", milliseconds))ms")
    // 16*5 5帧
    return milliseconds < 16 * 5
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions