CopyTranslateというiPhoneアプリを見たことがあります。たとえばサファリで何かをコピーすると、ローカル通知によってコピーしたものの翻訳が得られます。
そのため、アプリがバックグラウンドでもUIPasteboardChangedNotificationを受信できるかどうか疑問に思っています。次に、バックグラウンドで10分間実行できるアプリを作成するテストを行い、UIPasteboardChangedNotificationを確認します。その結果、アプリはバックグラウンドで通知を受け取ることができません。
CopyTranslateがそのような機能をどのように実装するかについて誰かが考えを持っていますか?1秒あたりのUIPasetBoardをチェックしますか?このように、画像コピーなどの代わりに新しい文字列コピーがあることをどのようにして知ることができますか。
アイデアありがとうございます!
バックグラウンドで1秒あたりのUIPasteboardのchangeCountをチェックすることで、この問題を解決しました。
詳細は次のとおりです。
AppDelegateにプロパティlastChangeCountを保持し、アプリケーションがバックグラウンドになると、反復ごとに1秒間スリープする無限のwhileループを開始します。そして、UIPasteboardのchangeCountを反復ごとのlastChangeCountと比較します。それらが等しくない場合は、pasteboardにいくつかの新しい貼り付けアイテムがあることがわかります。したがって、UIPasteboardの文字列プロパティを取得します。存在する場合は、ローカル通知をスケジュールして表示します。そうでない場合は、ユーザーが画像などをコピーする可能性があるため、何もしません。