iOSペースト許可ダイアログの遅延対策と設定案内の実装

問題

iOSアプリでクリップボード機能を使う場合、フォーカス復帰時に「〇〇に△△からペーストしようとしています」という許可ダイアログが表示されます。

このダイアログが出るタイミングが遅く(アプリ表示から約1秒後)、また、毎回出るのでウザいです。


原因

このダイアログはiOS 16で導入されたプライバシー機能で、アプリがクリップボードを読む時に自動的に出ます。

ダイアログ表示のタイミングはiOS側が制御しており、アプリ側からは短縮できません。


解決策

ユーザーに最も効果的なのは「設定変更」です。iOS 16.1以降、設定アプリから「ほかのアプリからの貼り付け」を「許可」に変更するとダイアログは出なくなります


実装方法

クリップボード読取が成功した回数をカウントし、4回目に設定方法の案内を表示します。

手順:

クリップボード読取成功時にカウント増加

カウントが4に達したら案内Panelを表示

一度表示したら二度と出さない(PlayerPrefsで管理)


設定案内のテキスト:

毎回の確認を消すには:

1.iPhone(iPad)の「設定」を開く

2.下にスクロールして「アプリ」をタップ

3.一覧からこのアプリ名をタップ

4.「ほかのアプリからの貼り付け」をタップ

5.「確認/拒否/許可」の中から「許可」を選ぶ


重要な前提

対象iOS

 iOS 16.1以降(ユーザー設定が可能になったバージョン)

ダイアログの表示条件

 そのアプリでペースト許可ダイアログが一度でも出た後のみ設定項目が表示される

アプリ更新時

 ユーザーが設定を「許可」に変更していれば、アプリ更新後も保持される