おことわり
この記事は、iOS 14 Beta2 での情報を元に書いています。
バージョンアップなどにより最新の情報と異なっている可能性がありますので、ご注意ください。
前置き
iOS 14 Betaにアプリがコピペ内容を読み取るとOSによって通知される機能が追加されました。
従前にTikTokなど多くのアプリがコピペの内容を読み取っているという指摘がWebニュースで流れていたので、それがトリガーとなって仕様追加されたようですね。
実装ベースで言うと、↓こんな感じのコードを書いている場合。。。
let foo = UIPasteboard.general.string
コードが実行されたタイミングで、OSから警告が表示されます。
Androidのトーストのような感じのバナー表示です。
※betaバージョンのスクリーンショットはAppleのNDA条項によって掲載できません。
文言は、
『{値を取得したアプリ名}({値をコピーしたアプリ名})からペースト』
です。
(ベータ時点なので今後変わる可能性が大ですが)
ユーザーに対してペーストボードへアクセスすることを明示しているアプリの場合は問題ないかと思いますが、
そうでないアプリの場合は、
「ペーストボードにアクセスすることをユーザーに明示する」
あるいは
「そもそもペーストボードにアクセスしないようにする」
など、セキュリティ上の懸念を抱かせないようにする対応が必要かと思います。
導入ライブラリに要注意!
ここからがこの記事の本題です。
**「アプリ本体としてはUIPasteboardにアクセスしていなくても、導入ライブラリ内でアクセスしている」**というケースがありそうです。
一例ですが、Firebase DynamicLinksにおいては、
ディープリンクの制御のために従来からUIPasteboardを使っていたらしく、Ver6.28.0以降では修正済みだそうです。
https://firebase.google.com/support/release-notes/ios#dynamic-links
上の警告を出させないためには、Ver6.28.0以降にアップデートして、かつ、info.plistに設定が必要らしいです。
(上のrelease-notes内の記述を参照)
※なお、ペーストボードの取得を無効に設定した場合はディープリンクの制御に制約がある模様です。
【参考】https://github.com/firebase/firebase-ios-sdk/issues/5893#issuecomment-657724741
他にも同じようなライブラリはあると思われ、対応タイミングや方法はまちまちかと思います。
早めにアプリの動作確認、導入ライブラリの調査、ライブラリのバージョンアップの検討などを行っておいた方が無難そうです。