【问题标题】:Copy text to clipboard through safari and read that clipboard data in iOS App通过 safari 将文本复制到剪贴板并在 iOS App 中读取该剪贴板数据
【发布时间】:2017-03-30 22:14:43
【问题描述】:

面临以下情况的问题。在发布堆栈溢出之前,我花了几个小时在这之后。场景

第 1 步:通过 Safari(或其他任何浏览器)用户将浏览一个页面(即 www.abcdef.com),并且从该页面 safari 将文本复制到 iOS 剪贴板(通过用户在复制按钮上的触摸事件)

第 2 步:iOS 应用程序将启动,该 iOS 应用程序将获取/读取剪贴板数据(由 safari 保存/写入)。

有可能吗?如果怎么做?如果不可能,您能否分享背后的原因?

【问题讨论】:

    标签: ios safari mobile-safari clipboard uipasteboard


    【解决方案1】:

    我做了类似的事情,但对于 Chrome。 您将需要 3 个组件:

    • 浏览器扩展
    • 服务器端处理程序
    • iOS 应用

    首先,您必须为 Safari 创建一个扩展,并可能在上下文菜单中放置一个新选项,或者通过任何其他可访问的方式使其对用户可用。然后,当用户选择您的自定义操作时,您将数据发送到您的服务器。 然后,服务器可以将通知推送到您的 iOS 应用,当用户打开应用时,它可以下载新复制的消息。

    当然,在进行所有这些操作时,您应该考虑创建用户数据库、正确验证用户身份并保护数据传输。

    【讨论】:

      【解决方案2】:

      是的,你可以这样做,here 就是一个例子

      UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
      if (pasteboard.string != nil) {
          // Do something with the contents...
      }
      

      【讨论】:

      • Apple 显示错误 --> nspasteboard -- no known class methdo for selector generalPasteBoard
      • 不错的答案。通常粘贴板,当用户复制另一个数据时,我的数据会被删除。我需要使用标签复制到剪贴板。该怎么做?
      • 好吧,我认为您无法访问它,因为 copy 是操作系统的默认功能。
      【解决方案3】:

      是的,试着检查一下

      UIPasteboard.general.string
      

      【讨论】:

      • 嗨@Vlad,我尝试通过UIPasteboard.general.string ...它可以从一个iOS应用程序到另一个iOS应用程序...但是(A)不能与像safari这样的网络浏览器一起工作...... . (B) 可能我无法通过 safari 完美地设置数据,你能分享任何资源/网址吗?
      • Mobile Safari 的行为与使用粘贴板的其他应用程序没有任何不同。只要用户从页面中选择文本并复制它,您就可以使用上述代码将其粘贴到任何地方。我可以想象它不起作用的唯一原因是该站点是否试图一起禁用复制(使用javascript或其他东西)。一些网站这样做是为了尝试“保护内容”。您是否尝试过使用不同的网站和普通文本?
      • @rahman 你是在 mac 上的 safari 模拟器上从 safari 复制文本
      猜你喜欢
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 2017-10-14
      • 1970-01-01
      相关资源
      最近更新 更多