10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

iOS 14:クリップボードにアクセスする前にその内容の種別を検知

Last updated at Posted at 2020-09-10

iOS 14では、アプリがユーザーのクリップボードのコンテンツにアクセスするたびに、画面上部に警告が表示されます。

アプリがクリップボードのコンテンツにアクセスするのは、その中のコンテンツに気になる点があるかどうか知りたい場合があるためです。

この UIPasteboard.generaldetectPatterns 機能を利用すると、クリップボードのコンテンツが次のカテゴリのいずれかに該当するかどうか検出することができます。

image
  • 数字 .number
  • URL .probableWebURL
  • ウェブ検索クエリー .probableWebSearch

detectPatterns がコンテンツのタイプを判断できない時はいつも .probableWebSearch と報告しているようです。

完了したGithubのデモプロジェクトはこちらから入手できます。

ペーストボードのコンテンツを検出

UIPasteboard.general.detectPatterns(for: [.number, .probableWebSearch, .probableWebURL]) { result in
    switch result {
        case .success(let patterns):
            if patterns.contains(.number) {
                // おそらく数字
            } else if patterns.contains(.probableWebSearch) {
                // おそらくウェブ検索クエリー
            } else if patterns.contains(.probableWebURL) {
                // おそらくURL
            }
        case .failure(let error):
            print(error.localizedDescription)
    }
}

UIPasteboard.general.detectPatterns を使用すると、アラートが表示されません。

興味のあるコンテンツがペーストボードに含まれていることがわかったら、実際のペーストボードのコンテンツにアクセスできます。(たとえば、お使いのアプリが、ペーストボードからURLをコピーすることだけに興味がある場合、まず検出を実行して、URLがペーストボードに含まれていたらペーストボードへアクセスできます)

デモアプリケーション

こちらがGithub上でどのように機能するのかをより良く把握していただけるよう、デモアプリケーションのダウンロードが可能です。

デモアプリケーション内には2つのボタンがあり、パターンを検出 のボタンではペーストボードの内容のタイプが表示され、クリップボードの内容を取得 のボタンではペーストボードの内容がフェッチされます。

⭐️ こちらのウェブページにアクセスすると、私の公開されているQiitaの記事のリストをカテゴリー別にご覧いただけます。

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?